Как опубликовать конкретную запись из результирующего набора на другую страницу

#php #html #post #get #resultset

#php #HTML #Публикация #получить #результирующий набор

Вопрос:

Я новичок в PHP, и я застрял в этом…

У меня есть база данных и простая форма поиска. Я могу без проблем выполнять поиск, используя нужные мне критерии — например, я заполняю как имя «Алекс», и я могу видеть 5 записей в моем результирующем наборе с этим критерием. Пока все хорошо…

Вот проблема: мне нужно создать ссылку / кнопку — что угодно — и опубликовать / получить значения для конкретной записи, которую я выберу. Когда результирующий набор содержит только одну найденную запись, у меня нет проблем — все работает нормально. Но всякий раз, когда результирующий набор возвращает более 1 записи, метод Post / Get захватывает данные для последней записи.

Позвольте мне показать вам, что я здесь делаю… Вот данные, которые я извлекаю :

     while ($row= mysql_fetch_array($result)) {

    $my_id = $row["ID"];
    $my_name = $row["name"];
    $my_profession = $row["profession"];

    echo "<div align='center'><tr>
     <td><div align='center' style='color:white;'><font size='2' face='Arial'>$my_id</div></td></font>
     <td><div align='center' style='color:white;'><font size='2' face='Arial'>$my_name</div></td></font>
     <td><div align='center' style='color:white;'><font size='2' face='Arial'>$my_profession</div></td></font>
     <td><div align='center' style='color:white;'><font size='2' face='Arial'><form action='person_info.php' method='POST'><input type='hidden' name='PersonID' value='$my_id' /><input type='hidden' name='PersonName' value='$my_name' /><input type='hidden' name='PersonProfession' value='$my_profession' /><input type='submit' value='Show' /></div></td></font>

    .....
  

Вот код для person_info.php :

     $my_id = $_POST["PersonID"];
    $my_name = $_POST["PersonName"];
    $my_profession = $_POST["PersonProfession"];

    echo "
    <div align='center'><font size='4' face='Georgia' style='color:red';><b>$my_id, $my_name,  $my_profession</b></font></div>
  

Если задействована только одна запись, все работает отлично. Если их больше одной, я получаю сведения о последней. Например, из результирующего набора :

1 Алекс безработный 2 Алекс Карпентер 3 Алекс Гарденер

… запись, которая будет опубликована окончательно, — это «3 Алекса Гарденера».

Есть идеи?

Заранее спасибо!

Ответ №1:

Если это точный код, который вы используете, не похоже, что вы закрываете свою форму. Итак, когда вы нажимаете кнопку отправки, она собирает все данные и затем перезаписывает их каждый раз, пока не дойдет до последнего.

Выбросить:

 </form>
  

В конце там и это должно прояснить.

Комментарии:

1. Это кажется самым простым решением. Я даже не заметил, что был включен начальный тег формы.

2. Боже… Я совсем новичок: P Это сработало как по волшебству! Большое вам спасибо, Мэтт: D

Ответ №2:

всегда ли PersonID, personname и personProffesion являются именами входных данных? похоже, что вы основываете значение на записи базы данных, которая в данный момент загружена, но если вы не используете уникальное имя, это вызовет проблему.

Если вы используете одно и то же имя для каждого набора скрытых входных данных, нет способа отличить их друг от друга, когда вы передаете их с помощью Post или Get, ваше поле имени должно быть уникальным, последняя запись — единственная, которая проходит, потому что при добавлении каждой из них она по существу перезаписывает предыдущие записи.

дайте мне знать, если у вас это работает, я надеюсь, вы с этим разобрались!

Редактировать:

Самый простой способ сделать так, чтобы каждая запись переходила на уникальную страницу, — это использовать несколько форм GET (как упоминалось Полом Вебером) с post work, но это быстро приводит к беспорядку:

         while ($row= mysql_fetch_array($result)) {

        $my_id = $row["ID"];
        $my_name = $row["name"];
        $my_profession = $row["profession"];

        echo'<a href="somepage.php?personid='.$my_id.'amp;personname='.$my_name.'amp;personprofession='.$my_profession.'">Name Your Link</a>';

        }
  

приведенный выше код создаст ссылку, которая передает необходимую информацию в виде get, которую затем вы можете извлечь на somepage.php это также намного чище, чем формы.

Комментарии:

1. извините за возникшую ранее путаницу, надеюсь, я не отправил вас зацикливаться на плохом, я неправильно понял, что вы делали сначала. Я рад, что это работает сейчас.

Ответ №3:

Если вы можете использовать get, вы можете передать параметры, просто добавив их к URL.

Итак, вы могли бы перейти

 <a href="save.php?PersonName=$nameamp;Profession=$profession...">Save</a>
  

Если вы не можете использовать Get, вы могли бы либо разделить формы, создав тег Form вокруг всех входных элементов, так что будут отправлены только те, которые находятся в текущей области видимости. Это означало бы, что вы должны создавать новую форму для каждой строки.

В качестве альтернативы используйте jQuery для создания post.