Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача параметра при переходе по ссылке 
:(
    Опции темы
Sliva
Дата 18.12.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



У меня такая проблема: создаю таблицу из селект-запроса, в таблице хранится список имен:
Иванов 
Петров
Сидоров
...
Каждое имя является ссылкой, при щелчке на имени - открывается новый php-сценарий, которому должно передаваться ИМЯ с первой странице, по которому щелкнул пользователь. 

Как запомнить это имя для нового сценария. Я использую $_SESSION['name'] при заполнении таблицы, но в ней оказывается последнее имя в таблице, а мне надо то, по которому кликнул пользователь. 

Помогите, пожалуйста!
PM   Вверх
Feldmarschall
Дата 18.12.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Так по ссылке и передавать.
<a href=scenario.php?name=<?=$name?>>

только лучше передавать не имя, а id
PM   Вверх
Sliva
Дата 18.12.2007, 09:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Так имен-то много, они из запроса все выбираются. 
А мне надо запомнить ТО ИМЯ, по которому кликнет пользователь  smile  
Вот код:
Код

  while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
        echo "\t<tbody><tr class = 'TAB'>\n";
        foreach ($row as $name) {
            $_SESSION['name'] = $name;
            $arr[]=$_SESSION['name'];
            echo "\t\t<td><a href='page2.php'>$name </a></td>\n";
        }
        echo "\t</tr>\n";

PM   Вверх
Feldmarschall
Дата 18.12.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



повторяю. запоминать не надо. надо передавать. по ссылке.
6-я строчка твоего кода:
Код

echo "\t\t<td><a href='page2.php?name=$name'>$name </a></td>\n";
понятно? или всё ещё нет?

передавать желательно не имя, а id
PM   Вверх
Sliva
Дата 18.12.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



 smile  понятно! А как во втором сценарии обращаться к $name? Можно 
Код

echo "$name";

Я попробовала - не получается так обратится  smile 

Это сообщение отредактировал(а) Sliva - 18.12.2007, 10:39
PM   Вверх
skyboy
Дата 18.12.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



$_GET['name']
PM MAIL   Вверх
Sliva
Дата 18.12.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



А если в сценарии указан method POST ? И его надо использовать. Или по-другому никак не получится?
 Я исправила в сценарии на GET, вызываю $_GET['name'] , а у меня ошибка
undefinded index: name in ... 

Это сообщение отредактировал(а) Sliva - 18.12.2007, 10:50
PM   Вверх
Feldmarschall
Дата 18.12.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



У тебя в сценарии указан метод GET.
POST использовать не надо. В данном случае.

Вообще, судя по вопросам, очень желательно расказать всю картину и объяснить смысл скрипта.
Тогда местные гуру расскажут и покажут, как пишут сайты на PHP.

Добавлено через 3 минуты и 35 секунд
Цитата(Sliva @  18.12.2007,  10:43 Найти цитируемый пост)
вызываю $_GET['name'] , а у меня ошибка
undefinded index: name in ... 


в каком сценарии? page2.php?

Добавлено через 4 минуты и 45 секунд
А строчку-то ты исправила, как я написал?

Это сообщение отредактировал(а) Feldmarschall - 18.12.2007, 10:51
PM   Вверх
Sliva
Дата 18.12.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



в
Цитата

 каком сценарии? page2.php?

Да. 
Смысл скрипта: Надо с одной странички (нажав на имя) попасть на другую, а по имени (на которое нажал пользователь) выбирать и отображать на второй страничке данные того, чье имя выбрал пользователь  
Цитата

А строчку-то ты исправила, как я написал?

Да 

Это сообщение отредактировал(а) Sliva - 18.12.2007, 11:00
PM   Вверх
Feldmarschall
Дата 18.12.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Отлично. Стандартная задача. Используется на миллионах сайтов.
Метод POST для этого не нужен.

Посмотри на адресную строку, когда переходишь по ссыке - а в ней-то имя есть?


PM   Вверх
bars80080
Дата 18.12.2007, 11:41 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ладно, в роли гуру выступлю я и поведаю волшебство php
Код

$sql = ''; // запрос к БД
$res = select_from_db($sql); // выборка из БД
for($i = 0; isset($res[$i]['id']); $i++) {

echo '<a href="page2.php?id='.$res[$i]['id'].'">'.$res[$i]['name'].'</a><br />';

}


с поправкой на твои запросы и таблицы

в page2.php
Код

if(isset($_GET['id'])) {
$sql = 'select * from table where id='.$_GET['id'];
// и так далее
}

PM MAIL WWW   Вверх
Sliva
Дата 18.12.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Нет, в том-то и дело! Я знаю, что если метод GET, то в адрессной ссылке должны прописываться данные. 
Метод GET я указала:
Код

 echo "<form action = 'page2.php' method = 'GET'>\n";

PM   Вверх
bars80080
Дата 18.12.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



если ты реализуешь на каждое имя кнопку с формой, то это мягко говоря неправильное решение
ибо слишком много не нужной (не смысловой инфо),
лучше реализуется ссылками
PM MAIL WWW   Вверх
Sliva
Дата 18.12.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата

если ты реализуешь на каждое имя кнопку с формой, то это мягко говоря неправильное решение
ибо слишком много не нужной (не смысловой инфо),
лучше реализуется ссылками

Нет,  у меня табличка - и каждое имя - это ссылка на след. сценарий. НО: Это имя я должна передать  в этот  второй сценарий, чтобы потом по этому имени делать запрос  smile  
PM   Вверх
Feldmarschall
Дата 18.12.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Sliva, послушай.
Ты что - никогда простых сайтов, на HTML не делала?
Зачем тебе здесь форма, если у тебя обыкновенные ссылки?

послушай, вот такой код у тебя работает:
file.php
<a href=file2.php?name=Vasya>click</a>

file2.php
<? echo $_GET['name'] ?>

?
а когда кликнула по ссылке - что видно в адресе? Скопируй адрес сюда.


Это сообщение отредактировал(а) Feldmarschall - 18.12.2007, 12:29
PM   Вверх
bars80080
Дата 18.12.2007, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата

Нет,  у меня табличка - и каждое имя - это ссылка на след. сценарий

как это сочетается с 
Цитата

echo "<form action = 'page2.php' method = 'GET'>\n";


и вообще, код в студию!
PM MAIL WWW   Вверх
Feldmarschall
Дата 18.12.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Мне кажется, что человек начинает осваивать PHP и просто думает, что в PHP какие-то нуждны особенные методы для навигации. Отличающиеся от таковой в HTML.
PM   Вверх
Sliva
Дата 19.12.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата

Мне кажется, что человек начинает осваивать PHP и просто думает, что в PHP какие-то нуждны особенные методы для навигации. Отличающиеся от таковой в HTML. 

да  smile  я начинаю smile)))) Я всегда думала, что чтобы использовать массивы $_POST или $_GET - нужно указывать метод передачи. Потому и указываю его вначале каждого сценария, где мне нужны эти массивы 
PM   Вверх
Feldmarschall
Дата 19.12.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Sliva, страницы, которые генерирует PHP - это самые обычные HTML страницы.

Ладно, с этим разобрались. А с передачей параметра по ссылке? Твой код работает? А мой, который я давал выше?
PM   Вверх
bars80080
Дата 19.12.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



многоуважаемая Слива, нам же интересно, нам нетерпится узнать, а что же у вас получилось

получилось ли вообще, а то говорим и впустую

а если бы код показали, вообще было бы супер

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


главнокомандующий, а чёй-то ты с "опытного" перекатился на "новичок"?
PM MAIL WWW   Вверх
Sliva
Дата 19.12.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Да, работает  smile  СПАСИБО! 
Все генерируется, все хорошо  smile  (пока во всяком случае  smile  )

PM   Вверх
bars80080
Дата 19.12.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



тогда и тему можно пометить галочкой

во-о-он там, внизу...
PM MAIL WWW   Вверх
Sliva
Дата 19.12.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



 smile  Вот код(здесь генерируется табличка и при клике на имени - появляется новая страничка): 
Код

<?php
  $connect = mysql_connect("localhost", "root", "xxx") or die("не удалось подключится");
  mysql_select_db("mybase", $connect);

function processData(){
global $HTTP_GET_VARS;
}

function print_table($request, $connect){
  $res = mysql_query($request, $connect) or die("Ошибка: ".mysql_error());
  $num = mysql_num_rows($res);

 echo "<table cellpadding=5 cellspacing=0>\n
        <caption> Имя клиента</caption>
        <thead><tr> <th>Name:</th> </thead></tr>";
 while ($row = mysql_fetch_array($res)) {
     echo "\t<tbody><tr class = 'top'>\n";
     echo "\t\t<td><a href=page2.php?id=$row[0]>$row[1]</a></td>\n";
     echo "\t</tr>\n";
    }
   echo "</tbody></table>\n";
}

processData();
$query_ = "SELECT ID, Name FROM table_Client ORDER BY 1 ASC;";
print_table($query_host, $connect);
?>

Если есть замечания - очень прошу указать их. 
PM   Вверх
Feldmarschall
Дата 19.12.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Sliva, можно пару замечаний?
во-первых, функция processData(); представляется мне несколько излишней.
возможно, в будущем она начнет выполнять какие-то функции, но в нынешнем виде она не делает вообще ничего.

во-вторых, непонятно, как вообще работает этот код.
в функцию print_table передается переменная $query_host, которая нигде выше не определяется.

в-третьих, не забывай в page2.php обрабатывать переменную $_GET['id'], чтобы не возникало ошибок и атак.

в-четвертых, атрибуты Html тегов надо брать в кавычки. поэтому
echo "\t\t<td><a href=\"page2.php?id=$row[0]\">$row[1]</a></td>\n";

и вообще, я бы переписал этот кусок так:
Код

  $res = mysql_query($request, $connect) or die("Ошибка: ".mysql_error());
  $num = mysql_num_rows($res);
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
?>
<table cellpadding=5 cellspacing=0>
  <caption> Имя клиента</caption>
  <thead><tr> <th>Name:</th> </thead></tr>
  <tbody>
<? foreach($LIST as $row) {?>
    <tr class = 'top'>
      <td><a href="page2.php?id=<? echo $row[0]?>"><? echo $row[1]?></a></td>
    </tr>
<?  } ?>
</tbody></table>
<?


а функция тут, по-моему, не нужна

Это сообщение отредактировал(а) Feldmarschall - 19.12.2007, 15:50
PM   Вверх
Sliva
Дата 19.12.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



 smile  спасибо большое! про эту функцию я вычитала в книжке, там написано, что надо ее писать, чтобы массив $_GET был доступным. Но и без нее у меня все работала, это я написала, чтобы перестраховаться 
PM   Вверх
Feldmarschall
Дата 19.12.2007, 16:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



во-первых, массив $_GET не надо делать доступным. он и так доступный всегда.
во-вторых, несколько странно хотеnь сделать доступной одну переменную($_GET) , а писать global $HTTP_GET_VARS; - т.е., другую.
в-третьих, в этом скрипте ни $_GET, ни $HTTP_GET_VARS не нужны вовсе.
в-четвертых, массив $HTTP_GET_VARS использовать не имеет смысла, поскольку он устарел и есть $_GET
в-пятых, делать отдельную функцию, чтобы переменная была доступна в другой - несколько эээ... неправильно.
почитай, для чего нужен оператор http://php.net/global

Это сообщение отредактировал(а) Feldmarschall - 19.12.2007, 16:05
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0768 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.