Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Почему переменная $qid не включается?
Форумы портала PHP.SU » » Если скрипт не работает » Почему переменная $qid не включается?

Страниц (1): [1]
 

1. Contr - 05 Ноября, 2011 - 00:55:25 - перейти к сообщению
<html>
<body>
<?php
$db = pg_connect("host=localhost port=5432 dbname=S-H-V user=user1 password=mypass");
if ($qid) {
if ($submits) {
$result = pg_query($db, "UPDATE supply.factorylist SET fname='$fname',fnamefull='$fnamefull'
WHERE fnum=$qid");
echo "Thank you! Information updated.\n";
} else {
// query the DB
$result = pg_query($db, "SELECT * FROM supply.factorylist WHERE fnum=$qid");
$myrow = pg_fetch_row($result);
?>
<form method="post" action="<?php echo $PHP_SELF ?>">
<input type=hidden name="qid" value="<?php echo $myrow["fnum"] ?>">
сокращенное название завода:<input type="Text" name="fname" value="<?php echo $myrow["fname"] ?>"><br>
полное название:<input type="Text" name="fnamefull" value="<?php echo $myrow["fnamefull"] ?>"><br>

<input type="Submit" name="submits" value="Enter information">
</form>
<?php
}
} else {
// display list of employees
$result = pg_query($db, "SELECT * FROM supply.factorylist");
while ($myrow = pg_fetch_array($result)) {
printf("<a href=\"%s?qid=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["fnum"], $myrow["fname"], $myrow["fnamefull"]);
}
}
?>
</body>
</html>
2. sKaa - 05 Ноября, 2011 - 02:47:36 - перейти к сообщению
а почему она у тя должна включаться?
я конечно не уверен, но мне кажется то, что ты хотел тут выразить должно выглядеть как-то так :
PHP:
скопировать код в буфер обмена
  1.  
  2. $db = pg_connect("host=localhost port=5432 dbname=S-H-V user=user1 password=mypass");
  3. if (isset($_POST['qid'])) {
  4.         if(isset($_POST['submits'])){
  5.                 $qid = $_POST['qid'];
  6.                 $fname = $_POST['fname'];
  7.                 $fnamefull = $_POST['fnamefull'];
  8.                 $result = pg_query($db, "UPDATE supply.factorylist SET fname='$fname',fnamefull='$fnamefull' WHERE fnum=$qid");
  9.                 echo "Thank you! Information updated.\n";
  10.                 }else{
  11.                 // query the DB
  12.                 $result = pg_query($db, "SELECT * FROM supply.factorylist WHERE fnum=$qid");
  13.                 $myrow = pg_fetch_row($result);
  14.                 <form method="post" action="<?PHP echo $PHP_SELF ?>">
  15.                 <input type=hidden name="qid" value="<?PHP echo $myrow["fnum"] ?>">
  16.                 сокращенное название завода:<input type="Text" name="fname" value="<?PHP echo $myrow["fname"] ?>"><br>
  17.                 полное название:<input type="Text" name="fnamefull" value="<?PHP echo $myrow["fnamefull"] ?>"><br>
  18.                
  19.                 <input type="Submit" name="submits" value="Enter information">
  20.                 </form>
  21.                 <?PHP
  22.                 }
  23.         }else{
  24.         // display list of employees
  25.         $result = pg_query($db, "SELECT * FROM supply.factorylist");
  26.                 while ($myrow = pg_fetch_array($result)) {
  27.                 printf("<a href=\"%s?qid=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["fnum"], $myrow["fname"], $myrow["fnamefull"]);
  28.                 }
  29.         }
  30. ?>
  31.                
  32.  
3. Contr - 05 Ноября, 2011 - 03:03:14 - перейти к сообщению
Вобщем, смотри:
здесь 2 "Если"
С самого начала первое if не проходит и мы идем к else в самый конец.
Там выводятся на печать гиперссылки со значениями из таблицы, ссылкой самой страницы. И когда мы кликаем на нужной гиперсылке в браузере открывается та же самая страница только со знаком ?qid=(нужное нам значение, например 1).
По идее, дальше переменная qid определена и мы входим в первое условие if ($qid). Так вот здесь моя переменная $qid почему-то значения не принимает. Как ты сказал $_post тоже не прокатила (
4. sKaa - 05 Ноября, 2011 - 04:29:56 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if(isset($_GET['qid'])){
  4.         // тут код если мы передали qid в адресной строке ($_GET)
  5.         $qid =  $_GET['qid']; // Сама переменная $qid;
  6.        
  7.         if(isset($_POST['submits'])){
  8.                 // Тут код если мы через $_POST передали значение submits
  9.                 $fname = $_POST['fname'];
  10.         $fnamefull = $_POST['fnamefull'];
  11.                 }else{
  12.                 // Тут если кнопку не нажимали
  13.                 /*
  14.                 Кстати у тя тут ";" местами сильная нехватка :
  15.                 вмето action="<?PHP echo $PHP_SELF ?>"> нужно action="<?PHP echo $PHP_SELF; ?>">
  16.                 а так-же : $myrow["fnum"], $myrow["fname"], $myrow["fnamefull"] тоже нужно ставить ";"
  17.                 */
  18.                 }
  19.         }else{
  20.         // тут код если qid в адресной строке пуст.
  21.         }?>
5. Contr - 05 Ноября, 2011 - 05:27:12 - перейти к сообщению
sKaa, тебе спасибо. Помог. Я разобрался. Да, вся соль была в разнице Get и Post .
Только теперь далее по коду тоже проблема:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <html>
  3.     <body>
  4.         <?php
  5.        $db = pg_connect("host=localhost port=5432 dbname=S-H-V user=kardash password=arthur");
  6.        if (isset($_GET['qid'])) {
  7.            $qid = $_GET['qid'];
  8.            if (isset($_POST['submits'])) {
  9.                $qid = $_GET['qid'];
  10.                $fname = $_POST['fname'];
  11.                $fnamefull = $_POST['fnamefull'];
  12.                $result = pg_query($db, "UPDATE supply.factorylist SET fname='$fname',fnamefull='$fnamefull'
  13. WHERE fnum=$qid");
  14.                echo "Thank you! Information updated.\n";
  15.            } else {
  16. // query the DB
  17.                $result = pg_query($db, "SELECT * FROM supply.factorylist WHERE fnum=$qid");
  18.                $myrow = pg_fetch_row($result);
  19.                ?>
  20.                 <form method="post" action="<?php echo $PHP_SELF; ?>">
  21.                     <input type=hidden name="qid" value="<?php echo $myrow["fnum"] ?>">
  22.                     сокращенное название завода:<input type="Text" name="fname" value="<?php echo $myrow["fname"] ?>"><br>
  23.                     полное название:<input type="Text" name="fnamefull" value="<?php echo $myrow["fnamefull"] ?>"><br>
  24.  
  25.                     <input type="Submit" name="submits" value="Enter information">
  26.                 </form>
  27.                 <?php
  28.            }
  29.        } else {
  30. // display list of employees
  31.            $result = pg_query($db, "SELECT * FROM supply.factorylist");
  32.            while ($myrow = pg_fetch_array($result)) {
  33.                printf("<a href=\"%s?qid=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["fnum"], $myrow["fname"], $myrow["fnamefull"]);
  34.            }
  35.        }
  36.        ?>
  37.     </body>
  38. </html>


15 - 24 строчки. Когда первый IF успешно проходим, натыкаемся на второй и сворачиваем на ELSE. Здесь я хотел чтобы в форме для UPDATE вставлялись данные из БД. А он не вставляет. Пишет пустые формы. Почему? Вроде "Select .. FROM table" есть... В чем дело?
Решил. 18 стр $myrow = pg_fetch_row($result); заменить надо было на $myrow = pg_fetch_array($result);

Благодарю sKaa ))). Тема закрыта

 

Powered by ExBB FM 1.0 RC1