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

Форум MySQL

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

 

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

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

тема: select
 
 автор: Vadim777   (28.09.2005 в 18:56)   письмо автору
 
 


$count = mysql_numrows(mysql_query('SELECT * FROM  table_name')) or die('Error! облом!');   

у меня есть скрипт, но он расчитан на то, что в нем указывается название таблицы. А мне нужно сделать так, чтобы вместо названия таблицы была конструкция ".$_POST['searchtype']."
которая в данном случае не работает из-за наличия скобок. Как мне корректно вставить ".$_POST['searchtype']."?

   
 
 автор: himic   (28.09.2005 в 19:13)   письмо автору
 
   для: Vadim777   (28.09.2005 в 18:56)
 

select формируй отдельно
$sql='SELECT * FROM ' . $_POST['searchtype'] ;
$count = mysql_numrows(mysql_query($sql)) or die('Error! облом!') ;
типа так

   
 
 автор: DDK   (28.09.2005 в 19:16)   письмо автору
 
   для: Vadim777   (28.09.2005 в 18:56)
 

$_POST['searchtype'] является синонимом переменной $searchtype. Т.е. $_POST[''] можно опустить (не всем учебникам надо верить). Так что вы смело можете сделать так:

<?
$count 
mysql_numrows(mysql_query("SELECT * FROM $searchtype")) or die("Error! облом!"); 
?>

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

   
 
 автор: cheops   (29.09.2005 в 00:31)   письмо автору
 
   для: Vadim777   (28.09.2005 в 18:56)
 

У вас одинарные кавычки, поэтому и при вставке следует использовать одинарные кавычки
<?php
$count 
mysql_numrows(mysql_query('SELECT * FROM  '.$_POST['searchtype'])) or die('Error! облом!');
?>

   
 
 автор: Vadim777   (29.09.2005 в 10:33)   письмо автору
 
   для: cheops   (29.09.2005 в 00:31)
 

если честно я бьюсь над постраничной навигацией, этот скрипт я скачал с PHP.com.ua.
Когда я вставляю название таблицы в скрипт - скрипт выводит как первую страницу, так и после нажатия на № 2 выводит вторую.
С моей конструкцией при помощи как cheopsa и himic (ddk - не работает), скрипт работает только на первую страницу, когда клацаешь по странице №2 - облом.

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in

   
 
 автор: cheops   (29.09.2005 в 12:47)   письмо автору
 
   для: Vadim777   (29.09.2005 в 10:33)
 

Всё правильно, так как на второй странице $_POST['searchtype'] уже не сохраняются, для организации постраничной навигации после передачи данных из метода POST необходимо использовать сессии, чтобы данные из формы были доступны на других страницах.

   
 
 автор: Vadim777   (29.09.2005 в 17:48)   письмо автору
 
   для: cheops   (29.09.2005 в 12:47)
 


echo "страницы: ";
  echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_POST['searchtype']?page=1?
>&lt;&lt;</a>&nbsp;";
  if($page > 1) echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_POST['searchtype']?page=".($page - 1).">&lt;</a>&nbsp;";
  for($i = $str_begin; $i<=$str_end; $i++)
  {
    if($page == $i)
      echo "&nbsp;$i&nbsp;";
    else
      echo "&nbsp;<a title='Открыть страницу' font COLOR='#fffff' class=menuinfo href=index.php?searchtype = $_POST['searchtype']?page=".$i.">$i</a>&nbsp;";
  }
  if($page < $number) echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_POST['searchtype']?page=".($page + 1).">&gt;</a>&nbsp;";
  echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_POST['searchtype']?page=$number>&gt;&gt;</a>&nbsp;";

Я возвращаюсь к теме постраничная навигация. Как в этот код вогнать информацию, я сделал так, но это неправильно????

   
 
 автор: cheops   (29.09.2005 в 18:49)   письмо автору
 
   для: Vadim777   (29.09.2005 в 17:48)
 

Следует в начале поставить обработчик
<?php
  session_start
();
  if(isset(
$_POST['searchtype'])) $_SESSION['searchtype'] = $_POST['searchtype'];
?>

А далее везде (в SQL-запросе, в ссылках) использовать $_SESSION['searchtype'] вместо $_POST['searchtype']
<?php
echo "страницы: "
  echo 
"&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_SESSION['searchtype']?page=1? 
>&lt;&lt;</a>&nbsp;"

  if(
$page 1) echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_SESSION['searchtype']?page=".($page 1).">&lt;</a>&nbsp;"
  for(
$i $str_begin$i<=$str_end$i++) 
  { 
    if(
$page == $i
      echo 
"&nbsp;$i&nbsp;"
    else 
      echo 
"&nbsp;<a title='Открыть страницу' font COLOR='#fffff' class=menuinfo href=index.php?searchtype = $_POST['searchtype']?page=".$i.">$i</a>&nbsp;"
  } 
  if(
$page $number) echo "&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_SESSION['searchtype']?page=".($page 1).">&gt;</a>&nbsp;"
  echo 
"&nbsp;<a title='Первая страница' class=menuinfo href=index.php?searchtype = $_SESSION['searchtype']?page=$number>&gt;&gt;</a>&nbsp;";
?>

$_POST-данные уже не перейдут на другую страницу, а сессия перейдёт.

PS Только приведённый код более чем странный - помоему ссылки сформированы ошибочно.

   
 
 автор: Vadim777   (29.09.2005 в 18:58)   письмо автору
 
   для: cheops   (29.09.2005 в 18:49)
 

я берусь делать, а на счет кода то, тот что указывался в самом начале из скрипта не очень интересного php.com.ua , а последний из Вашего скрипта, который приводился мною в теме о постраничной навигации, и взят из форума на этом сайте:
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=6833&page=1
И хотел бы поблагодарить cheops‘a за помощь и за то, что он успевание на всех фронтах. И хотел извиниться за сумбурное и некорректное изложение запросов о помощи!

   
 
 автор: Vadim777   (29.09.2005 в 19:17)   письмо автору
 
   для: Vadim777   (29.09.2005 в 18:58)
 

Да действительно этот код неправильный. У меня выводит при наличии 14 наименований товара, только 4. А на второй странице появляються теже четыре товара, что выводились на первой.

   
 
 автор: cheops   (29.09.2005 в 22:25)   письмо автору
 
   для: Vadim777   (29.09.2005 в 19:17)
 

У вас в SQL запросе используется конструкция LIMIT? Без неё постраничная навигация не получится...

   
 
 автор: Vadim777   (30.09.2005 в 10:36)   письмо автору
 
   для: cheops   (29.09.2005 в 22:25)
 


mysql_select_db('comp');


 
  $pnumber = 10;
   < << 2 3 [4] 5 6 >> >
  $linknumber = 2;

  $page = $_GET['page'];
  if($page < 1) $page = 1;
  if(empty($page)) $page = 1;
  $begin = ($page = 1)*$pnumber;
 if(!empty($_POST['para']))
$tmp=" WHERE para<= '".$_POST['para']."'";

$select_sql = "SELECT *  FROM  ".$_SESSION['searchtype']."
                $tmp ORDER BY customerid DESC
                 LIMIT $begin, $pnumber";


  $result = MYSQL_QUERY($select_sql);
  if(!$result) exit(mysql_error());


  $query = "SELECT COUNT(*) FROM ".$_SESSION['searchtype']." ";
  $ctg = mysql_query($query);
  if(!$ctg) puterror
  $total = mysql_result($ctg,0);

  IF ($total == 0) {
    PRINT "<CENTER><P>&;</CENTER>";
  }
  ELSEIF ($total > 0)
  {
    PRINT "<CENTER><P;: $total<BR><BR>";

    WHILE ($arr = mysql_fetch_array($result))
    {
      $customerid = $arr['customerid'];
      $name = $arr['name'];
      $datum = $arr['datum'];
      $para = $arr['para'];
       $firma = $arr['firma'];
         echo $datum.'<br> ;:   ';
      echo $name."<br> &#;:  ";
       echo $para."<br> ";
        echo $firma."<br>";
          echo "<p> <HR WIDTH=100% SIZE=2>";
      $i++;
    }
  }
  $number = (int)($total/$pnumber);
  if((float)($total/$pnumber) - $number != 0) $number++;
  
  if($page - $linknumber < 1) $str_begin = 1;
  else $str_begin = $page - $linknumber;

  if($page + $linknumber > $number) $str_end = $number;
  else $str_end = $page + $linknumber;

  echo ;: ";
  echo ;' class=menuinfo href=result.comp.lviv.2.php?searchtype = $_SESSION['searchtype']?page=1?
>&lt;&lt;</a>&nbsp;";
  if($page > 1) echo "&nbsp;<a title='&;' class=menuinfo href=result.comp.lviv.2.php?searchtype = $_SESSION['searchtype']?page=".($page - 1).">&lt;</a>&nbsp;";
  for($i = $str_begin; $i<=$str_end; $i++)
  {
    if($page == $i)
      echo "&nbsp;$i&nbsp;";
    else
      echo "&nbsp;<a title=; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#243;' font COLOR='#fffff' class=menuinfo href=result.comp.lviv.2.php?searchtype = $_SESSION['searchtype']?page=".$i.">$i</a>&nbsp;";
  }
  if($page < $number) echo "&nbsp;<a title=';' class=menuinfo href=result.comp.lviv.2.php?searchtype = $_SESSION['searchtype']?page=".($page + 1).">&gt;</a>&nbsp;";
  echo "&nbsp;<a title=';' class=menuinfo href=result.comp.lviv.2.php?searchtype = $_SESSION['searchtype']?page=$number>&gt;&gt;</a>&nbsp;";


?>

   
 
 автор: cheops   (30.09.2005 в 13:09)   письмо автору
 
   для: Vadim777   (30.09.2005 в 10:36)
 

В самом начале отсутствует
<?php 
  session_start
(); 
  if(isset(
$_POST['searchtype'])) $_SESSION['searchtype'] = $_POST['searchtype']; 
?>

PS Такие здоровые листинги лучше прикреплять в виде отдельного файла.

   
 
 автор: Vadim777   (30.09.2005 в 13:41)   письмо автору
 
   для: cheops   (30.09.2005 в 13:09)
 


<?php
Error_Reporting
(E_ALL & ~E_NOTICE); 

    
session_start();
  if(isset(
$_POST['searchtype'])) $_SESSION['searchtype'] = $_POST['searchtype'];
$paratrim($para);
   
$_POST['para'] = $_POST['para'] + 0;
$searchtype addslashes($searchtype);
$db mysql_pconnect('localhost''root''');
if (!
$db)
  {
     echo .
';
     exit;
  }
 mysql_select_db('
comp');

Это у меня верхняя часть скрипта mysql_select_db('comp'); с этого места начинается тот большой фрагмент.

   
Rambler's Top100
вверх

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