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

Форум MySQL

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

 

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

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

тема: Проблемы с SQL - запросом
 
 автор: evgen_17   (30.03.2005 в 18:55)   письмо автору
 
 

Вобщем у меня есть старница... Вот такая к примеру:

<?
$sql 
mysql_query("SELECT * FROM Table_Name_1 WHERE uid='$uid' AND pwd='$pwd'");
    
$sq  mysql_fetch_array($sql);
       
if(
mysql_num_rows($sql) != 0)
 {
     
$balance mysql_query("SELECT * FROM Table_Name_2 WHERE uid='$uid'");
        if(
$balance)
            {
                while(
$user_b mysql_fetch_array($balance))
                    {
и т.д....
?>

Нужно, чтобы второй запрос тоже работал. Таблицы находятся в одной базе, но желательно рассмотреть и вариант, когда они в разных базах...

   
 
 автор: cheops   (31.03.2005 в 00:32)   письмо автору
 
   для: evgen_17   (30.03.2005 в 18:55)
 

Так а сейчас работает или нет? Если не срабатывает второй запрос, может первый возвращает 0 строк?

   
 
 автор: evgen_17   (31.03.2005 в 11:46)   письмо автору
 
   для: cheops   (31.03.2005 в 00:32)
 

Этот код работает, если переменные вытаскиваются из одной таблицы... А нужно, чтобы из разных... А ещё лучше, если таблицы будут находится в разных базах. Первый запрос точно не возвращает 0...

   
 
 автор: cheops   (01.04.2005 в 00:18)   письмо автору
 
   для: evgen_17   (31.03.2005 в 11:46)
 

Вообще говоря странно, что для разных таблиц не работает - обычно с этим проблем не бывает. Для работы с разными базами данных устанавливают два соединения и дескрипторы соединения явно передают всем MySQL-функциям в качестве второго параметра.

   
 
 автор: evgen_17   (01.04.2005 в 21:39)   письмо автору
 
   для: cheops   (01.04.2005 в 00:18)
 

Хм... Т.е. насколько я понял, должно работать? А может дело в if(mysql_num_rows(..))??? Просто, если выборку из другой таблицы разместить за пределами этого условия, то всё работает...

   
 
 автор: cheops   (01.04.2005 в 22:36)   письмо автору
 
   для: evgen_17   (01.04.2005 в 21:39)
 

Вы знаете, я кажется понял... попробуйте поместить
<?php
 $sq  
mysql_fetch_array($sql);
?>

после
<?php
if(mysql_num_rows($sql) != 0
{
?>

Если запрос возвращают одну запись, то функция mysql_fetch_array устанавливает дескриптор запроса в конец - это может отражаться на работе функции mysql_num_rows.

   
 
 автор: RV   (02.04.2005 в 20:05)   письмо автору
 
   для: cheops   (01.04.2005 в 22:36)
 


<?
$query 
"SELECT * FROM news";
    
connect(); // подключаемся
    
$request mysql_query($query) or die (mysql_error());
                     
$show mysql_fetch_array($request))

?>

Таблица News

id author news_name news_body category create_date status  

Где Status - text 1 или 0.
Нужно сформировать две таблицы. Одна таблица включает в себя все те строки, где Status = 1 , другая, соответсвенно, где Status = 0. Подозреваю что можно это сделать одним запросом, а потом результат обработать. как??

   
 
 автор: cheops   (02.04.2005 в 20:15)   письмо автору
 
   для: RV   (02.04.2005 в 20:05)
 

А вы отсортируйте по полю Status - у вас в начале будет 0, а потом 1 - при выборке в цикле while - следите когда вместо 0 пойдут 1 и включайте другой логический блок
<? 
$query 
"SELECT * FROM news ORDER BY status"
    
connect(); // подключаемся 
    
$request mysql_query($query) or die (mysql_error()); 
                     
$show mysql_fetch_array($request)) 
?>

   
 
 автор: RV   (03.04.2005 в 05:35)   письмо автору
 
   для: cheops   (02.04.2005 в 20:15)
 

аа следить в цикле как?

<?
$query 
"SELECT * FROM news ORDER BY status"
$request mysql_query($query) or die (mysql_error());
    
$show mysql_fetch_array($request);

while (
$show['status'] === "1")
{
?>

генерируем таблицу

<? 
while (
$show['status'] === "0")
{
?>
генерируем вторую таблицу

<? ?>

   
 
 автор: cheops   (03.04.2005 в 11:48)   письмо автору
 
   для: RV   (03.04.2005 в 05:35)
 

Примерно следующим образом
<? 
$query 
"SELECT * FROM news ORDER BY status"
$request mysql_query($query) or die (mysql_error()); 

while (
$show mysql_fetch_array($request)) 

  if(
$show['status'] === "0"$arr0[] = $show['name'];
  if(
$show['status'] === "1"$arr1[] = $show['name'];
}
foreach(
$arr0 as $value
{
  
// генерируем таблицу 
}
foreach(
$arr1 as $value
{
  
// генерируем вторую таблицу 
}
?>

Идея в том, чтобы отсортировать полученные данные в два различных массива, а потом уже на их основании отдельно формировать обе таблицы.

   
 
 автор: RV   (03.04.2005 в 19:27)   письмо автору
 
   для: cheops   (03.04.2005 в 11:48)
 

не работает.


<?
while ($show mysql_fetch_array($request)) 

  if(
$show['status'] === "0"$arr0[] = $show['name']; 
  if(
$show['status'] === "1"$arr1[] = $show['name']; 
}
foreach(
$arr0 as $value)
?>

<td><?=$show['id']?></td><td><?=$show['author']?></td><td><?=$show['create_date']?></td> и т.д

<?} foreach($arr1 as $value) { ?>

<td><?=$show['id']?></td><td><?=$show['author']?></td><td><?=$show['create_date']?></td> и т.д

<? ?>

не понимаю
$arr0[] = $show['name']; почему только name ?
и
foreach($arr1 as $value)

   
 
 автор: cheops   (03.04.2005 в 21:36)   письмо автору
 
   для: RV   (03.04.2005 в 19:27)
 

А нет, name это из-за того, что я не знаю структуру таблицы, в массивы следует размещать реальные значения
<?php
$i 
0;
$k 0;
while (
$show mysql_fetch_array($request)) 

  if(
$show['status'] === "0")
  {
    
$arr0[$i]['author'] = $show['author']; 
    
$arr0[$i]['create_date'] = $show['create_date']; 
    
$arr0[$i]['id'] = $show['id']; 
    
$i++;
  }
  if(
$show['status'] === "1")
  {
    
$arr1[$k]['author'] = $show['author']; 
    
$arr1[$k]['create_date'] = $show['create_date']; 
    
$arr1[$k]['id'] = $show['id']; 
    
$k++;
  }

foreach(
$arr0 as $value
?> 

<td><?=$value['id']?></td><td><?=$value['author']?></td><td><?=$value['create_date']?></td> и т.д 

<?} foreach($arr1 as $value) { ?> 

<td><?=$value['id']?></td><td><?=$value['author']?></td><td><?=$value['create_date']?></td> и т.д 

<? ?>

   
Rambler's Top100
вверх

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