Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поиск в базе по нескольким полям
 
 автор: nameIvan   (08.06.2008 в 16:20)   письмо автору
 
 

Добрый день!
Есть 4 поля куда вводятся ФИО клиента и дата рождения. При нажатии на кнопку запускается поиск в базе и вывод результата. Беда в том что ничего не выводится. Подскажите где напутал?

<?php
$F=$_POST['FamField'];
$I=$_POST['NameField'];
$O=$_POST['OtcheField'];
$Date=$_POST['DTRField'];

$connect=mysql_connect("localhost", "root", "") or die("Ошибка соединения");
mysql_select_db("data") or die("Таблица не найдена");

$sql=mysql_query("SELECT familia, NameClient, OtecClient, DateBorn from client where familia='$F' and NameClient='$I' and OtecClient='$O' and DateBorn='$Date'");
while ($row = mysql_fetch_array($sql))
{
echo $row['familia, NameClient, OtecClient, DateBorn'];
}
?>

   
 
 автор: SportSoft   (08.06.2008 в 16:34)   письмо автору
 
   для: nameIvan   (08.06.2008 в 16:20)
 

Попробуйте так:


<?php
$F 
$_POST['FamField'];
$I $_POST['NameField'];
$O $_POST['OtcheField'];
$Date $_POST['DTRField'];

$connect=mysql_connect("localhost""root""") or die("Ошибка соединения");
mysql_select_db("data") or die("Таблица не найдена");

$sql mysql_query("SELECT familia, NameClient, OtecClient, DateBorn FROM client WHERE familia='$F' AND NameClient='$I' AND OtecClient='$O' AND DateBorn='$Date'") or die(mysql_error());

if(
mysql_num_rows($sql) > 0)
{
    while (
$row mysql_fetch_assoc($sql))
    {
    echo 
"Фамилия: ".$row['familia']."<br />";
    echo 
$row['NameClient']."<br />";
    echo 
$row['OtecClient']."<br />";
    echo 
$row['DateBorn']."<br />";
    }
}
else
{
echo 
"Совпадений не найдено.<br />";
}
?>

   
 
 автор: nameIvan   (08.06.2008 в 16:36)   письмо автору
 
   для: SportSoft   (08.06.2008 в 16:34)
 

спасибо. работает.
Еще вопрос. Как теперь найденное передать в другой файл и ставить в поле?

   
 
 автор: SportSoft   (08.06.2008 в 17:26)   письмо автору
 
   для: nameIvan   (08.06.2008 в 16:36)
 


<?php
// получили данные
$F $_POST['FamField']; 
$I $_POST['NameField']; 
$O $_POST['OtcheField']; 
$Date $_POST['DTRField'];

// производим поиск

// Выводим другой файл с формой
include('form.php');
?>


Файл form.php:

<?php

echo "Фамилия: <input type='text' name='FamField' value='".(isset($F) ? echo($F) : "")."' /><br />";
// и т.д.
?>

   
 
 автор: nameIvan   (08.06.2008 в 20:36)   письмо автору
 
   для: SportSoft   (08.06.2008 в 16:34)
 

SportSoft
вот этот код работает, но когда в таблице в каком-либо поле есть пробел, например, Иванов И.И., то работает некорректно - выводит только то что до первого пробела.

   
 
 автор: BinLaden   (08.06.2008 в 22:44)   письмо автору
 
   для: nameIvan   (08.06.2008 в 20:36)
 

nameIvan, Вы что-то путаете, потому что такого не может быть. Проверьте через phpMyAdmin - может данные записались неверно?

to SportSoft: могли бы заодно и поправить автора относительно обработки получаемых данных (stripslashes при magic_quotes_gpc) и эскейпировании специальных символов при формировании запроса :)

   
 
 автор: nameivan   (08.06.2008 в 22:48)   письмо автору
 
   для: BinLaden   (08.06.2008 в 22:44)
 

я проверял, данные записаны верно. Выводит до первого пробела

   
 
 автор: BinLaden   (08.06.2008 в 22:58)   письмо автору
 
   для: nameivan   (08.06.2008 в 22:48)
 

Вы привели реальный пример (с Иванов И.И.)? Строка "Иванов И.И." находится в одном поле?

Кстати, данные при выводе на HTML-страницу следует обрабатывать htmlspecialchars():

<?php
    
while( $row mysql_fetch_assoc($sql) ) 
        {
        echo
        
"Фамилия: " htmlspecialchars($row['familia']). "<br />"
        
htmlspecialchars($row['NameClient']) . "<br />",
        
htmlspecialchars($row['OtecClient']) . "<br />",
        
htmlspecialchars($row['DateBorn']) . "<br />"
    }
?>

   
 
 автор: nameIvan   (08.06.2008 в 23:06)   письмо автору
 
   для: BinLaden   (08.06.2008 в 22:58)
 

вот например строка Кем выдан паспорт.
Ленинским РОВД. Выводит только Ленинским

фрагмент кода
<?php
$F=$_POST['FamField'];
$I=$_POST['NameField'];
$O=$_POST['OtcheField'];
$Date=$_POST['DTRField'];

$connect=mysql_connect("localhost", "root", "") or die("Сервер не найден");
mysql_select_db("data") or die("Таблица не найдена");

$sql=mysql_query("SELECT KtoVyd from client where familia='$F' and NameClient='$I' and OtecClient='$O' and DateBorn='$Date'");
while ($row = mysql_fetch_array($sql))
{

echo "<input name=KemVyd type=text id=KemVyd value=".htmlspecialchars($row['KtoVyd'])."><br>";

}
?>

   
 
 автор: BinLaden   (08.06.2008 в 23:10)   письмо автору
 
   для: nameIvan   (08.06.2008 в 23:06)
 

У меня deja vu :)

Строковые данные (в (X)HTML вообще все значения атрибутов) следует обрамлять кавычками или апострофами:

<?php
echo "<input name='KemVyd' type='text' id='KemVyd' value='".htmlspecialchars($row['KtoVyd'], ENT_QUOTES)."'><br>";
?>


P.S. Обратите внимание, что поле называется "KtoVyd", а в HTML-коде уже "KemVyd" - можно запутаться...

   
 
 автор: nameIvan   (08.06.2008 в 23:13)   письмо автору
 
   для: BinLaden   (08.06.2008 в 23:10)
 

большое спасибо. теперь все отлично работает.
благодарю

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования