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

Форум MySQL

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

 

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

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

тема: Вывод нескольких значений
 
 автор: Artemy   (13.10.2004 в 15:52)   письмо автору
 
 

В том форуме cheops выложил скрипт для удаления нескольких записей
<form action=handler.php method=post> 
  <input type='checkbox' name='type[]' value='1'>Первый флажок<br>   
  <input type='checkbox' name='type[]' value='2'>Второй флажок<br>   
  <input type='checkbox' name='type[]' value='3'>Третий флажок<br>   
  <input type='checkbox' name='type[]' value='4'>Четвёртый флажок<br>   
  <input type='checkbox' name='type[]' value='5'>Пятый флажок<br>   
  <input type='checkbox' name='type[]' value='6'>Шестой флажок<br>   
  <input type='checkbox' name='type[]' value='7'>Седьмой флажок<br>   
  <input type=submit> 
</form> 


и его обработчик

<?php 
  
// Удалить сразу несколько записей можно при 
  // помощи запроса "DELETE FROM base WHERE id IN (1,3,5,7)" 
  // Получаем список отмеченных флажков 
  
$type $_POST['type']; 
  if(!empty(
$type)) 
  { 
    
// Начинаем формировать переменную, содержащую этот список 
    // в формате "(3,5,6,7)" 
    
$query "("
    foreach(
$type as $val$query .= "$val,"
    
// Удаляем последнюю запятую, заменяя её закрывающей скобкой ) 
    
$query substr($query0strlen($query) - 1).")"
    
// Завершаем формирование SQL-запроса на удаление 
    
$query "DELETE FROM base WHERE id IN ".$query
    
// Выполняем запрос 
    
if(!mysql_query($query)) 
    { 
      echo 
mysql_error()."<br>"
      echo 
$query."<br>"
    } 
  } 
?> 


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

DELETE FROM base WHERE id=2 and id=4

   
 
 автор: Igorek   (13.10.2004 в 19:18)   письмо автору
 
   для: Artemy   (13.10.2004 в 15:52)
 

Выборка происходит таким же самым образом, только вместо DELETE ставим соответственно SELECT:
SELECT FROM base WHERE id IN (1,3,5,7)


P.S. Как с помощью запроса DELETE ты хотел что-то вывести???

   
 
 автор: Artemy   (14.10.2004 в 10:23)   письмо автору
 
   для: Igorek   (13.10.2004 в 19:18)
 

Нет такой запрос не работает!
Как это "с помощью запроса DELETE что-то вывести" разве это возможно ?
А вообще я хотел сделать то же самое что и вышенаписаном коде, но только что бы не удалялось, а выводилось эти значения, т.е.

SELECT * FROM base WHERE id = $id; 

   
 
 автор: cheops   (14.10.2004 в 10:57)   письмо автору
 
   для: Artemy   (14.10.2004 в 10:23)
 

На самом деле имелся ввиду запрос:
SELECT * FROM base WHERE id IN (1,3,5,7)

   
 
 автор: Artemy   (14.10.2004 в 11:04)   письмо автору
 
   для: cheops   (14.10.2004 в 10:57)
 

Это вопрос, если да, то да, имелся ввиду этот запрос!

   
 
 автор: cheops   (14.10.2004 в 11:13)   письмо автору
 
   для: Artemy   (14.10.2004 в 11:04)
 

Нет, просто, у Igorek в запросе забыта *, его следует использовать в этом варианте...

   
 
 автор: Artemy   (14.10.2004 в 11:15)   письмо автору
 
   для: Artemy   (14.10.2004 в 11:04)
 

Блин, совсем запутался!
Вот есть код , а я хочу вывести все значения строчки из БД где id=$val, пытался сделать так
<?php
include "../config.php";
$actionn $_POST["actionn"];
$type $_POST['type']; 
if(!empty(
$type)) 
                       {
                          foreach(
$type as $val
          {
          
$query "select * from sklad where id = $val ";
          if(!
mysql_query($query)) 
                                 { 
                             echo 
mysql_error()."<br>"
                              echo 
$query."<br>"
                                } 
         else 
                               {
               while(
$sel mysql_fetch_array($query))
                                    {  
                                      echo 
"<p>" .$sel['type']. "</p";
                   }
              }
          }
                      } 
                 else
    {
      echo (
"Список не получен !");
      exit;
    } 
?>

но ничего не получается!

   
 
 автор: Artemy   (14.10.2004 в 11:26)   письмо автору
 
   для: Artemy   (14.10.2004 в 11:15)
 

Прошу прошения то есть вот так
<?php
include "../config.php";
$actionn $_POST["actionn"];
               
$type $_POST['type']; 
                   if(!empty(
$type)) 
                       {
                          
$query "("
                          foreach(
$type as $val$query .= "$val,"
                         
// Удаляем последнюю запятую, заменяя её закрывающей скобкой ) 
                          
$query substr($query0strlen($query) - 1).")"
                         
// Завершаем формирование SQL-запроса на удаление 
                          
$query "SELECT * FROM sklad WHERE id IN ".$query
                          if(!
mysql_query($query)) 
                             { 
                             echo 
mysql_error()."<br>"
                              echo 
$query."<br>"
                             } 
                           else 
                           {
                                while(
$sel mysql_fetch_array($query))
                                {  
                                  echo 
"<p>" .$sel['id']. "</p";
                                 }
                           }
                       } 
                   else
                       {
                          echo (
"Список не получен !");
                          exit;
                       } 
?>

А в ответ броузер пишет
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\www\admin\delrec.php on line 20

Что это значит, а вообще правильно ли я сделал это!

   
 
 автор: cheops   (14.10.2004 в 11:46)   письмо автору
 
   для: Artemy   (14.10.2004 в 11:26)
 

Вы передаёте mysql_fetch_array() SQL-запрос, а ей нужно передать дескритор, возвращённый mysql_query(), поэтому-то интерпретатор и возмущается:
<?php 
  
include "../config.php"
  
$actionn $_POST["actionn"]; 
  
$type $_POST['type']; 
  if(!empty(
$type)) 
  { 
    
$query "("
    foreach(
$type as $val$query .= "$val,"
    
// Удаляем последнюю запятую, заменяя её закрывающей скобкой ) 
    
$query substr($query0strlen($query) - 1).")"
    
// Завершаем формирование SQL-запроса на удаление 
    
$query "SELECT * FROM sklad WHERE id IN ".$query
    
$res mysql_query($query);
    if(!
$res
    { 
      echo 
mysql_error()."<br>"
      echo 
$query."<br>"
    } 
    else 
    { 
      while(
$sel mysql_fetch_array($res)) 
      {   
        echo 
"<p>" .$sel['id']. "</p"
      } 
    } 
  } 
  else 
  { 
    echo (
"Список не получен !"); 
    exit; 
  } 
?>

   
 
 автор: Artemy   (14.10.2004 в 11:49)   письмо автору
 
   для: cheops   (14.10.2004 в 11:46)
 

Спасибо большое тебе или вам Cheops!
Но я сам только что до этого допёр!
Во вот так все работает!
<?php
include "../config.php";
$actionn $_POST["actionn"];
               
$type $_POST['type']; 
                   if(!empty(
$type)) 
                       {
                          foreach(
$type as $val)
                          {
                          
$sql mysql_query("SELECT * FROM sklad WHERE id=$val ;");
                          if(
$sql
                             { 
                             while(
$triall mysql_fetch_array($sql))
  {
    echo 
"<table><tr align=center bgcolor=#E2FFE1 bordercolor=#E2FFE1>
    <td align=left height=20><b>"
.$triall['model']."</b></td>
    <td>"
.$triall['number']."</td>
    <td>"
.$triall['plata018']."</td>
    <td>"
.$triall['plata016']."</td>
    <td>"
.$triall['data']."</td>
    <td>"
.$triall['pr']."</td>
    </tr>"
;
  }
                             } 
                           else 
                           {
                            echo 
mysql_error()."<br>"
                            echo 
$query."<br>"
                           }
                           }
                       } 
                   else
                       {
                          echo (
"Список не получен !");
                          exit;
                       } 
?>

   
 
 автор: glsv (Дизайнер)   (14.10.2004 в 10:30)   письмо автору
 
   для: Artemy   (13.10.2004 в 15:52)
 

Вместо and - or нужно


SELECT * FROM base WHERE id=2 or id=4;

   
 
 автор: glsv (Дизайнер)   (14.10.2004 в 10:37)   письмо автору
 
   для: Artemy   (13.10.2004 в 15:52)
 

Так вы же уже спрашивали и был ответ.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=427

   
 
 автор: Artemy   (14.10.2004 в 10:50)   письмо автору
 
   для: glsv (Дизайнер)   (14.10.2004 в 10:37)
 

Да спрашивал, но Вы же сделали этот форум, вот сдесь я и хочу продолжить тему!
Может поможите, сидел мочался хотел оформить запрос такого рода как и выше написано, но ничего не получается!

   
 
 автор: glsv (Дизайнер)   (14.10.2004 в 11:12)   письмо автору
 
   для: Artemy   (14.10.2004 в 10:50)
 

Так а... Не понял тогда.
Чем запрос с or не подходил, который в вашей теме?

и этот тоже работает

SELECT * FROM base WHERE id IN (1,3,5,7) 


Что то мы запутались в сообщениях :)

   
 
 автор: cheops   (14.10.2004 в 11:16)   письмо автору
 
   для: glsv (Дизайнер)   (14.10.2004 в 11:12)
 

Ну... его формировать не очень удобно, да и по размеру он получится больше, что критично если Web-сервер и сервер MySQL не на одной машине расположены... вообще лучше в таких случаях IN использовать.

   
Rambler's Top100
вверх

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