Получение неправильного результата в mysql?

#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 неверен. Значения перезаписываются

В основном у вас есть варианты:

  • визуализация формы для каждого элемента
  • сделайте это с помощью выпадающего списка или переключателей

Со вторым вариантом вам нужно больше переписать свой код, но он более элегантный, если вы спросите меня. Итак, что вам нужно сделать.

  1. Переместите кнопку отправки из цикла
  2. Генерируйте только код с идентификатором и метками, подобными этому: <option value="'.$v['id'].'"/>YOUR LABEL</option>
  3. Когда форма отправлена, вы должны получить значения, соответствующие вашему отправленному идентификатору