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

Форум MySQL

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

 

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

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

тема: PHP+MSSQL - извлечь запись по фамилии?
 
 автор: TurkMen   (06.06.2006 в 19:24)
 
 

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

   
 
 автор: cheops   (06.06.2006 в 19:48)   письмо автору
 
   для: TurkMen   (06.06.2006 в 19:24)
 

Что вызывает сложность? Формирование SQL-запроса или кода?

   
 
 автор: TurkMen   (06.06.2006 в 21:31)
 
   для: cheops   (06.06.2006 в 19:48)
 

sql запроса я пишу вот так
<?
$conn = mssql_connect("localhost","sa","2585");
mssql_select_db("UNIVER",$conn);
//$fam=$_SESSION['fam'];
$query = mssql_query("SELECT * FROM PYBLIKACII");


If(!$query)
{
Echo "<P>?????? ???????</P>";
}
$num=Mssql_num_rows($query);
//$data=Mssql_fetch_array($query);
// if ($data == 1) {Echo "<P>?????? ??????</P>";}
// if($data == 0){
$q=$_SESSION['fam'];
$result = mssql_query("SELECT * FROM PYBLIKACII WHERE fio='$q'");
$row=mssql_fetch_array($result);
@$fio=$row[fio];
if ($fio!=$q) {Echo "<P>?????? ??????</P>";}
else if ($fio==$q)
{
?>
<Table Border="1" Cellpadding="0" Cellspacing="0" Bordercolor="#000000" Width="100%">
<Tr>
<Td Width="10" ><b>??????? ?.?.</b></Td>
<Td Width="10" ><b>???????? ??????????</b></Td>
<Td Width="10" ><b>?????, ???/?.?</b></Td>
<Td Width="10" ><b>????????????</b></Td>
<Td Width="10" ><b>?????</b></td>
<td width="10" ><b>????</b></td>
<Td Width="10" ><b>??? ??????????</b></Td>
<Td Width="10" ><b>????? ??????</b></Td>
<Td Width="10" ><b>??????????? ?????????????, ????????????? ? ???????</b></Td>
<Td Width="10" ><b>???????? ?????? ??? ???????</b></Td>
<td width="10" ><b>????? ??????. ???. ? ?????</b></td>
<Td Width="10" ><b>????? ? ?????????</b></Td>
<Td Width="10" ><b>???????? ????????</b></Td>
<Td Width="10" ><b>??? ??????????</b></Td>
<Td Width="10" ><b>????????</b></Td>
</tr>
<?}
For($i=0; $i<$num; $i=$i+1)
{
$data=Mssql_fetch_array($query);

?>
<tr>
<td width="10" > <? echo $data['fio']; ?> </td>
<td width="10" > <? echo $data['name_pub']; ?> </td>
<td width="10" > <? echo $data['v_pub']; ?> </td>
<td width="10" > <? echo $data['TYPE_IZDANIYA']; ?> </td>
<td width="10" > <? echo $data['tirag_pub']; ?> </td>
<td width="10" > <? echo $data['grif_pub']; ?> </td>
<td width="10" > <? echo $data['kind_pub']; ?> </td>
<td width="10" > <? echo $data['chislo_statei']; ?> </td>
<td width="10" > <? echo $data['PODRAZDELENIYA']; ?> </td>
<td width="10" > <? echo $data['name_stati']; ?> </td>
<td width="10" > <? echo $data['stranici_sbornik']; ?> </td>
<td width="10" > <? echo $data['adress_internet']; ?> </td>
<td width="10" > <? echo $data['name_sbornika']; ?> </td>
<td width="10" > <? echo $data['fio_rec']; ?> </td>
<td width="10" > <? echo $data['author_soauthor']; ?> </td>
</tr>

<?
}

mssql_close($conn);
?>
знаю что неправильно , просто это один из вариантов и ничего не получается

   
 
 автор: valenok   (06.06.2006 в 21:35)   письмо автору
 
   для: TurkMen   (06.06.2006 в 21:31)
 

1. SELECT * FROM 'pyblicasii' WHERE 'surname'='pupkin'
2. SELECT * FROM 'pyblicasii' ORDER BY 'surname' ASC

1. - вокруг "публикации" и "сёрнэйм" = апострофы а не одинарные кавычки.
2. "публикации" заключена в апострофы а не в одинарные кавычки

1. Извлекает всю информацию в таблице автора по фамилии Пупкин
2. Извлекает всю информацию в таблице по авторам расположенным по алфавиту

   
 
 автор: Trianon   (06.06.2006 в 21:43)   письмо автору
 
   для: valenok   (06.06.2006 в 21:35)
 

В MSSQL, насколько я помню, совсем другие правила именования объектов базы.

   
 
 автор: valenok   (06.06.2006 в 21:45)   письмо автору
 
   для: valenok   (06.06.2006 в 21:35)
 

Искрине приношу свои извинения за невнимательность...

   
 
 автор: valenok   (06.06.2006 в 21:46)   письмо автору
 
   для: valenok   (06.06.2006 в 21:45)
 

Так помойму язык SQL то один на всех...

   
 
 автор: TurkMen   (06.06.2006 в 22:46)
 
   для: valenok   (06.06.2006 в 21:35)
 

я нашел свою ошибку, но возникла новая проблемма, теперь я вытаскиваю запись, но она печатается в таблице столько раз сколько там вообщем записей, а не столько сколько именно на эту фамилию, ВОПРОС как правилно задать цикл желательно через while, пример кода тот же

   
 
 автор: TurkMen   (06.06.2006 в 22:48)
 
   для: TurkMen   (06.06.2006 в 22:46)
 

нужно For($i=0; $i<$num; $i=$i+1) переделать но как именно не могу, у меня туго с циклом while

   
 
 автор: valenok   (06.06.2006 в 23:10)   письмо автору
 
   для: TurkMen   (06.06.2006 в 22:48)
 

$i=0;
while($i<72){$i++; something();}

   
 
 автор: TurkMen   (06.06.2006 в 23:21)
 
   для: valenok   (06.06.2006 в 23:10)
 

так в том то и дело что я не знаю сколько раз прогнать цикл ($i<72), все что у меня есть это запрос который содержит данные из базы, а цикл должен звучать так ПРОДОЛЖАТЬ ВЫПОЛНЯТЬ ЦИКЛ ДО ТЕХ ПОР ПОКА ВСЕ ЗАПИСИ НА "ИМЯ" НЕ НАЙДЕНЫ. Имя в данном случае берется из сесси $q=$_SESSION['fam'];
Я сделал обходным путем цикл не изменял For($i=0; $i<$num; $i=$i+1) а просто изменил запрос $num = Mssql_num_rows($result); теперь он работает правильно но если на одну фамилию есть несколько записей в которых разные поля за исключением фамилии, он выдает одну запись столько раз сколько на эту фамилию записей в базе. Вот загнул еле сам разобрался

   
 
 автор: cheops   (07.06.2006 в 01:00)   письмо автору
 
   для: TurkMen   (06.06.2006 в 22:46)
 

Используйте цикл
<?php
  
while($data=Mssql_fetch_array($query))
  {
     
// Обработка
  
}
?>

Функция Mssql_fetch_array() будет выполняться до тех пор, пока не закончатся записи в результирующей таблице.

   
 
 автор: TurkMen   (07.06.2006 в 16:48)
 
   для: cheops   (07.06.2006 в 01:00)
 

Всем спасибо, ОСОБОЕ спасибо cheops-у, последний пример меня выручил.
Тему можно считать закрытой

   
Rambler's Top100
вверх

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