|
автор: TurkMen (06.06.2006 в 19:24) |
|
| Прошу помочь с запросом.
Есть таблица допустим студенты. Нужно вытащить, и поместить в табличном виде на веб странице, данные которые там лежат. Но вот проблемма, я использую сессии и данные нужно вытащить в соответстие той фамилии которая была написана при входе в систему. Если данных нет то сообщение о не удачи. Кто сможет помогите. | |
|
|
|
|
|
|
|
для: 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);
?>
знаю что неправильно , просто это один из вариантов и ничего не получается | |
|
|
|
|
|
|
|
для: 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. Извлекает всю информацию в таблице по авторам расположенным по алфавиту | |
|
|
|
|
|
|
|
для: valenok
(06.06.2006 в 21:35)
| | В MSSQL, насколько я помню, совсем другие правила именования объектов базы. | |
|
|
|
|
|
|
|
для: valenok
(06.06.2006 в 21:35)
| | Искрине приношу свои извинения за невнимательность... | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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); теперь он работает правильно но если на одну фамилию есть несколько записей в которых разные поля за исключением фамилии, он выдает одну запись столько раз сколько на эту фамилию записей в базе. Вот загнул еле сам разобрался | |
|
|
|
|
|
|
|
для: 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-у, последний пример меня выручил.
Тему можно считать закрытой | |
|
|
|