#php #mysql #sql
#php #mysql #sql
Вопрос:
Здравствуйте, у меня есть html-форма на стороне php, все работает нормально, и мне только что показали, как делать скрытые поля с этого сайта.
У меня есть кнопка отправки для каждого результата, позволяющая пользователю выбирать то, что он хочет. Когда они нажимают кнопку отправки, я хочу, чтобы информация была отправлена и добавлена в базу данных. Но по какой-то причине, когда пользователь нажимает «Отправить» в пункте 1, он добавляет последний элемент в базу данных, например, пункт 6?? Итак, есть 6 результатов и кнопка отправки для каждого, так что 6 кнопок. Когда пользователь нажимает submit на элемент с номером 1, он отправляет номер 6 для некоторого resson.
<form method="post" action="buydo.php">
<label><br />
<br />
</label>
<p>
<?php
$sql = "SELECT * FROM sell
ORDER BY Pokemon_level ASC";
$res = mysql_query($sql) or die(mysql_error());
while ($v = mysql_fetch_array($res)) {
echo '
<div class="auction_box">
<img src="http://myrpg.net/new_rpg/'.$v['Pokemon_pic'].'" width="100" height="100"><br/>
amp;pound;'.$v['price'].'<br/>
<label id="pokemonName'.$v['id'].'">'.$v['pokemon_name'].'</label><br/>
<label>Level '.$v['Pokemon_level'].'</level><br/>
<label>Exp '.$v['exp'].'</level><br/>
<label>Time Left:';
echo '</label>
<br/>
<input type="hidden" name="Name" value="'.$v['pokemon_name'].'">
<input type="hidden" name="level" value="'.$v['Pokemon_level'].'">
<input type="hidden" name="vid" value="'.$v['id'].'">
<input type="hidden" name="price" value="'.$v['price'].'">
<input type="hidden" name="exp" value="'.$v['exp'].'">
<input type="submit" id="'.$v['id'].'" class="buy_submit" value="Buy Now" /> </div>';
}
?>
amp;nbsp;</p>
<p>amp;nbsp;</p>
</form>
Это выбор с кнопками отправки для каждого результата.
Затем я вставляю информацию, которую они выбрали.
include 'config.php';
session_start() ;
$name = mysql_real_escape_string($_POST['Name']);
$Pokemon_level = mysql_real_escape_string($_POST['level']);
$idofpokemonsell = mysql_real_escape_string($_POST['vid']);
$price = mysql_real_escape_string($_POST['price']);
$exp = mysql_real_escape_string($_POST['exp']);
$sql = "SELECT * FROM `users` WHERE `username` = '" . $_SESSION['username'] . "'";
$result = mysql_query($sql) or die(mysql_error());
$values = mysql_fetch_array($result);
echo $values['money'] ;
if ( $values['money'] == $price ) {
echo "Give them the pokemon yay";
}
if ( $values['money'] > $price ) {
mysql_query("INSERT INTO `user_pokemon` (`pokemon`, `belongsto`, `exp`, `slot`, `level`) VALUES ('$name','" . $_SESSION['username'] . "','$exp','0','$Pokemon_level')") or die(mysql_error());
echo "Your money is over";
}
Как я уже сказал, вставка вставляет только пункт 6, независимо от того, нажимаете ли вы пункт 1-5, он вставляет 6 уровень, опыт, назовите все из пункта 6
Комментарии:
1. Все ваши деньги принадлежат нам…
Ответ №1:
Поскольку вы отображаете все это в одной форме, последние значения перезаписывают более ранние. Попробуйте придать каждому элементу его собственную форму, переместив <form>
</form>
теги and внутри цикла while
Комментарии:
1. Спасибо, что выполнили задание, отметит, что это правильно, когда это позволит мне 🙂 Еще раз спасибо
2. Еще раз спасибо 🙂 Рад, что здесь есть такие люди, как вы, чтобы помочь.
Ответ №2:
или попробуйте отследить с помощью jquery идентификатор нажатой кнопки и заполнить скрытое поле идентификатором нажатой кнопки
Ответ №3:
Это потому, что ваш html неверен. Значения перезаписываются
В основном у вас есть варианты:
- визуализация формы для каждого элемента
- сделайте это с помощью выпадающего списка или переключателей
Со вторым вариантом вам нужно больше переписать свой код, но он более элегантный, если вы спросите меня. Итак, что вам нужно сделать.
- Переместите кнопку отправки из цикла
- Генерируйте только код с идентификатором и метками, подобными этому:
<option value="'.$v['id'].'"/>YOUR LABEL</option>
- Когда форма отправлена, вы должны получить значения, соответствующие вашему отправленному идентификатору