[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: разбор фрагмента кода
Гость_lex
всем привет! есть вот такой фрагмент кода


switch ( $_GET["action"] )
{
case "show":
show(); break;
case "delete":
delete(); break;
default:
show();
}

function show()// Функция выводит список всех записей в таблице БД
{
Print'<center><FONT size="5" COLOR="100088">"Название фирмы"</em></FONT>';
print"<p>";
$query = 'SELECT * FROM firm ';
$res = mysql_query( $query );
echo '<table align="center" cellpadding="3" CELLSPACING="0" width="30%" bgcolor="" border="3" bordercolor="#66CCCC">';
echo '<tr><th>Фирма</th><th>Удалить</tr>';
while ( $pole = mysql_fetch_array( $res ) )
{
echo '<tr>';
echo '<td align="center" <FONT size="3" color="100088">'.$pole['firm'].'</td>';
echo '<td align="center" <FONT size="3" color="100088"><a href="'.$_SERVER['PHP_SELF'].'?action=delete&codfirm='.$pole['codfirm'].'">Удалить</a></td>';//вот это мне и непонятно! я так понимаю что в таблицу заноситься ссылка на эту саму страницу а дальше не совсем понимаю что такое '?action=delete&codfirm='.$pole['codfirm'].' вот это я не совсем понимаю что это!
echo '</tr>';
}
echo '</table>';
}
function delete()
{
}



обьясните пожалуйста



Спустя 9 минут, 27 секунд (7.04.2010 - 13:44) sergeiss написал(а):
Во-первых, есть тэг PHP, который подсвечивает именно ПХП код (я исправил).
Во-вторых, а чего именно объяснять-то? И что именно не понятно, а что понятно?
В-третьих, в switch'у есть логическая неточность (избыточность). Там достаточно написать КЕЙС для 'delete' и сразу же default. А еще лучше - сделать if-else вместо switch (именно в этом случае).

Спустя 1 минута, 47 секунд (7.04.2010 - 13:46) Nikitian написал(а):

switch ( $_GET["action"] )
{
case "show":
show(); break;
case "delete":
delete(); break;
default:
show();
}

Идёт проверка пришедшего гетом параметра. Если он равен delete, то запускается одноимённая функция, в любом другом случае запускается функция show()
Функция show() выполнена в виде процедуры, т.е. ничего не возвращает. Её задача: напечатать html. Выбираются все записи из таблицы firm и пишутся в табличку html

Спустя 30 минут, 53 секунды (7.04.2010 - 14:17) jetistyum написал(а):

Ты не внимательно читал предыдущий пост!
sergeiss справедливо заметил что в свитче избыточность, достаточно:

switch ( $_GET["action"] )
{
case "delete":
delete(); break;
default:
show();
}


или даже


if( $_GET["action"] == "delete"){
delete();
}
else{
show();
}

Спустя 41 минута, 47 секунд (7.04.2010 - 14:59) Nikitian написал(а):
Читал, внимательно читал. Что могу сказать: такой код пишется, когда планируется внедрение новых функций. Поэтому и не обратил на это внимание ТС. Здесь, например, редактирование было бы очень уместно. Тогда уже многоуровневые if-elseif будут смотреться не очень. На незаконченность данного скрипта намекает хотя бы пустая функция delete(). Почему же не написали, что её можно вообще выкинуть, т.к. она ничего не делает?

Спустя 1 минута, 30 секунд (7.04.2010 - 15:00) Guest написал(а):
не не рябят про switch я понял про избыточность спасибо мне непонятно

echo '<td align="center" <FONT size="3" color="100088"><a href="'.$_SERVER['PHP_SELF'].'?action=delete&codfirm='.$pole['codfirm'].'">Удалить</a></td>';//вот это мне и непонятно! я так понимаю что в таблицу заноситься ссылка на эту саму страницу а дальше не совсем 
понимаю что такое '?action=delete&codfirm='.$pole['codfirm'].' вот это я не совсем понимаю что это!

вот в чем загвоздка

Спустя 53 секунды (7.04.2010 - 15:01) Guest написал(а):
Nikitian в delite есть функция но я ее не написал так как не в ней у меня вопрос а в <FONT size="3" color="100088"><a href="'.$_SERVER['PHP_SELF'].'?action=delete&codfirm='.$pole['codfirm'].'">Удалить</a></td>

Спустя 5 минут, 17 секунд (7.04.2010 - 15:06) Guest написал(а):
sergeiss
использую switch а не if так как эта страница удоляет а есть страница которая редактирует и там удобнее использовать switch и что бы все страницы были схожи по коду везде взял switch

Спустя 8 минут, 7 секунд (7.04.2010 - 15:15) jetistyum написал(а):

Цитата (Guest @ 7.04.2010 - 15:00)
не не рябят про switch я понял про избыточность спасибо мне непонятно

echo '<td align="center" <FONT size="3" color="100088"><a href="'.$_SERVER['PHP_SELF'].'?action=delete&codfirm='.$pole['codfirm'].'">Удалить</a></td>';//вот это мне и непонятно! я так понимаю что в таблицу заноситься ссылка на эту саму страницу а дальше не совсем
понимаю что такое '?action=delete&codfirm='.$pole['codfirm'].' вот это я не совсем понимаю что это!

вот в чем загвоздка


Ну раз понял, и осознаешь всю ответственность ... smile.gif

$_SERVER['PHP_SELF'] - переменная окружения сервера - имя текущего выполняемого скрипта.
$pole['codfirm'] = вероятно ID какой-то который выгребается в цикле, идентифицирующий запись, которую нужно будет потом удалить...

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

Спустя 7 минут, 1 секунда (7.04.2010 - 15:22) Guest написал(а):
значит как я это все понимаю! по умолчанию на странице показана функция show() она рисует таблицу! в цикле я занашу туда все значения из поля фирмы и в другую кjлонку вписываю ссылку на удаление. codfirm в таблице firm это поле то же что и id. вопрос возник по самой структуре ссылки.
$_SERVER['PHP_SELF'] это я понимаю значит что все обработкка будет происходить на этой страницы. ?action=delete&codfirm='.$pole['codfirm']. вот в чем вся загвоздка. я так понимаю что если нажата ссылка то action=delete значит в swich поступает команда что он =delete и вызываеться функция удалить. зачем тут приравниваеться codfirm='.$pole['codfirm'] я не понимаю. вроде так поправьте если я что то не так понял

Спустя 2 минуты, 44 секунды (7.04.2010 - 15:24) Guest написал(а):
если нужно могу написать код функции delete() он короткий

Спустя 1 минута, 14 секунд (7.04.2010 - 15:26) Nikitian написал(а):
Указывается codfirm, чтобы знать что именно требуется удалить. При удалении скрипт получает 2 гет-параметра:
action=delete
codfirm=идентификатор удаляемой записи

Спустя 2 минуты, 52 секунды (7.04.2010 - 15:28) Guest написал(а):
Nikitian а так все остальное я правильно исталковал? и зачем перед action стоит знак "?"

Спустя 2 минуты, 25 секунд (7.04.2010 - 15:31) Nikitian написал(а):

Спустя 1 минута, 2 секунды (7.04.2010 - 15:32) jetistyum написал(а):
? отделяет параметры от имени скрипта, которому они передаются

Спустя 1 минута, 3 секунды (7.04.2010 - 15:33) Guest написал(а):
Nikitian
jetistyum
sergeiss

Большое вам спасибо! теперь все понятно!! вопрос исчерпан smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.