Как опубликовать конкретную запись из набора результатов на другую страницу - PullRequest
0 голосов
/ 19 мая 2011

Я новичок в 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 Алекса Садовника".

Есть идеи?

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

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

Если это именно тот код, который вы используете, похоже, вы не закрываете форму. Поэтому, когда вы нажимаете кнопку «Отправить», она захватывает все данные, а затем перезаписывает их каждый раз, пока они не дойдут до последнего.

Бросай:

</form>

В конце там и он должен очистить его.

1 голос
/ 19 мая 2011

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

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

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

РЕДАКТИРОВАТЬ:

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

        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.'&personname='.$my_name.'&personprofession='.$my_profession.'">Name Your Link</a>';

        }

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

0 голосов
/ 19 мая 2011

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

Так что вы могли бы пойти

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

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

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

...