Вывод результата в таблицу

laycman

Новичок
Доброго времени суток, помогите пожалуйста новичку разобраться с такой проблемкой:

В Mysql есть таблица с 9-ю столбцами (fio, дата_рождения, адрес, телефон и т.д), необходимо сделать поиск по столбцу "fio" через браузер,
в html странице сделал такую форму поиска:

(<TD> <form action="poisk.php" method="post">

Введите Ф.И.О. сотрудника;<br>

<input type="text" name="fio" size="60" value="">

<input type="submit" name="submit" value="Искать">

<input type="reset" name="reset" value="Очистить">

</form> </TD>)

poisk.php выглядит так:

PHP:
<?php

/* Соединение, выбор БД */

$link = mysql_connect("localhost", "user", "") or die("Не соединилось!!!");

mysql_select_db("bd_negativ") or die("Не найдена БД");

/* Выполнение SQL запроса */

$query = "SELECT * FROM stops WHERE UPPER(fio) LIKE '%".strtoupper($_POST['fio'])."%'";

$result = mysql_query($query) or die("Запрос ошибочный");

/* Печать результатов в HTML */

print "<table>\n";

while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

print "\t<tr>\n";

for ($i=1;$i<=9;$i++) { print "\t\t<td>$line[$i]</td>\n"; }

print "\t</tr>\n";

}

print "</table>\n";

/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?>
Но при запросе выводит только 6 столбцов и не показывает столбец fio, подскажите пожалуйста где ошибка?
 

Gremboloid

инженера Гр...
Benjamin
либо ТС не знает что по умолчанию LIKE регистро независим, либо у него в базе прописано что то типа COLLATE cp1251_general_cs
 

laycman

Новичок
Gremboloid
Были проблемы с кодировкой, русские буквы выводились в виде вопросов, в my.cnf в разделе [mysqld] прописал
init-connect="SET NAMES cp1251" и в /etc/php.ini - выставил: default_charset = "cp1251", тогда все норм стало
 

laycman

Новичок
Gremboloid
А все понял, это я просто экспериментировал, так $query = "SELECT * FROM stops WHERE (fio) LIKE '%".strtoupper($_POST['fio'])."%'"; все тоже самое,
ошибки где то в разделе /* Печать результатов в HTML */
 

craz

Нестандартное звание
MYSQL_NUM
мне вот эта штука не нравиться

PHP:
while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

print "\t<tr>\n";

for ($i=1;$i<=9;$i++) { print "\t\t<td>$line[$i]</td>\n"; }
и вот это как то чето как то

если вот так перепишите

PHP:
$line = mysql_fetch_array($result, MYSQL_NUM);

foreach ($line as $key =>$l){
 echo $l;
}
что получите?
 

laycman

Новичок
craz
вроде выводит то что надо, но все слова без пробелов, и без разграничения по столбцам
 

craz

Нестандартное звание
ну вы ж программист флаг ?вам? в руки не правда ли?

ладно я добрый сеня
PHP:
<table>

foreach ($line as $key =>$l){
<tr>
 <td>$l['fio']</td>
 <td>$l['birthday']</td>
</tr>
}

<table>
 

Royal Flash

-=MaestrO=-
ладно я добрый сеня
Ну как-то не доконца Вы добры :) А как же while, в случае если вернется несколько строк? Т.е. если автор топика не знает как вывести результат по колонкам, то уж лучше полностю написать, как это сделать ... А еще лучше, если Вы напишите для него вообще весь код скритпа: чтобы все было правильно и работало :)

laycman
А Вам бы я посоветовал еще почитать про LIKE, и каке SQL-иньекции можно загнать в Вашу базу с помощью:

PHP:
$query = "SELECT * FROM stops WHERE UPPER(fio) LIKE '%".strtoupper($_POST['fio'])."%'";
Содержание переменной $_POST['fio'] необходимо ОБЯЗАТЕЛЬНО проверять на наличие запретных символов (для LIKE). Ну и в любом случае отсылать в БД текстовые данные пользователя можно только предварительно пройдя по переменной функцией mysql_real_escape_string().
 

craz

Нестандартное звание
Ну как-то не доконца Вы добры :) А как же while, в случае если вернется несколько строк? Т.е. если автор топика не знает как вывести результат по колонкам, то уж лучше полностю написать, как это сделать ... А еще лучше, если Вы напишите для него вообще весь код скритпа: чтобы все было правильно и работало :)

laycman
А Вам бы я посоветовал еще почитать про LIKE, и каке SQL-иньекции можно загнать в Вашу базу с помощью:

PHP:
$query = "SELECT * FROM stops WHERE UPPER(fio) LIKE '%".strtoupper($_POST['fio'])."%'";
Содержание переменной $_POST['fio'] необходимо ОБЯЗАТЕЛЬНО проверять на наличие запретных символов (для LIKE). Ну и в любом случае отсылать в БД текстовые данные пользователя можно только предварительно пройдя по переменной функцией mysql_real_escape_string().
вы правы я зол! идите читайте маны ТС
 
Сверху