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

Форум PHP

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

 

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

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

тема: Не выводится значение нулевого ключа в массиве
 
 автор: Чайчайвыручай   (06.07.2011 в 15:19)   письмо автору
 
 

Здравствуйте!
Подскажите, пожалуйста, почему не выводится значение нулевого ключа [0] => a3?

Array ( [0] => a3 [1] => a2 [2] => a5 )

Вывод начинается только с [1] => a2.
С чем это может быть связано? Может ли быть причина в том, что массив состоит из данных переданых через POST?

  Ответить  
 
 автор: cheops   (06.07.2011 в 15:32)   письмо автору
 
   для: Чайчайвыручай   (06.07.2011 в 15:19)
 

А как вывод осуществляется? В цикле? Если да, то как выглядит цикл (или как выглядит вывод)?

  Ответить  
 
 автор: Чайчайвыручай   (06.07.2011 в 15:42)   письмо автору
 
   для: cheops   (06.07.2011 в 15:32)
 

Вывод осуществляется не в цикле. С помощью echo и printf.
POST значения не имеет?

  Ответить  
 
 автор: Ziq   (06.07.2011 в 16:34)   письмо автору
 
   для: Чайчайвыручай   (06.07.2011 в 15:42)
 

Что вы подразумеваете под не выводится?
Что выведет команда


var_dump($_POST);
var_dump($_POST[0]);

  Ответить  
 
 автор: Чайчайвыручай   (06.07.2011 в 16:59)   письмо автору
 
   для: Ziq   (06.07.2011 в 16:34)
 

Что вы подразумеваете под не выводится?

Не выводится после работы этого скрипта:
if($name)
{
$query = "SELECT title FROM otk WHERE id = $name LIMIT 1";
$result = mysql_query($query, $db);
if (!$result) {exit("Ошибка выполнения запроса - ".mysql_error());}
do {
printf ( <td>%s</td>",

mysql_result($result, 0);}
}
while ($result<=$buts);
}



var_dump($_POST[0]) выводит NULL

  Ответить  
 
 автор: Valick   (06.07.2011 в 17:13)   письмо автору
 
   для: Чайчайвыручай   (06.07.2011 в 16:59)
 

"в огороде бузина, а в Киеве дядька"
пришла на ум такая пословица
ну с бузиной от Евгения Попова все понятно, но какое отношение массив POST имеет к этому скрипту?

  Ответить  
 
 автор: Чайчайвыручай   (06.07.2011 в 17:17)   письмо автору
 
   для: Valick   (06.07.2011 в 17:13)
 

В данном вопросе уже не имеет, но были подозрения.

  Ответить  
 
 автор: Valick   (06.07.2011 в 17:20)   письмо автору
 
   для: Чайчайвыручай   (06.07.2011 в 17:17)
 

покажите форму которая отсылает пост данные
и обработчик который принимает этот массив

  Ответить  
 
 автор: Чайчайвыручай   (06.07.2011 в 17:38)   письмо автору
 
   для: Valick   (06.07.2011 в 17:20)
 

<form action="index.php" method="post">
<input name="a2 type="submit" value="a2"><br>
<input name="a3 type="submit" value="a3"><br>
<input name="a4 type="submit" value="a4"><br>
</form>



<?php
$mypost = $_POST;
$buts = "";
$pbuts = "";
if (isset($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$pbuts = $buts;
}
foreach ($mypost as $key => $val) {
$buts .= $key."#";
}
if ($pbuts != $buts) {
setcookie("buts", "$buts");
header("Location:/bodybase/gud.php");
}
$buttons = array();
if (isset($_COOKIE['buts'])) {
$buts = $_COOKIE['buts'];
$buttons = explode("#", $buts);
?>

Не выводится значение нулевого ключа именно после скрипта, который в Киеве у дядьки

  Ответить  
 
 автор: Valick   (06.07.2011 в 17:59)   письмо автору
 
   для: Чайчайвыручай   (06.07.2011 в 17:38)
 

проще всего через каждую строку кода сделать print_r($_POST); и посмотреть где теряется нулевой элемент

  Ответить  
 
 автор: cheops   (06.07.2011 в 18:59)   письмо автору
 
   для: Чайчайвыручай   (06.07.2011 в 17:38)
 

Хм... а почему вы думаете, что у вас $_POST имеет следующую структуру?
Array ( [0] => a3 [1] => a2 [2] => a5 )

Он будет содержать только ту кнопку, которую нажали. В этом случае действительно удобно выводить дамп массива, чтобы всегда видеть, что фактически передается
<?php
  
echo "<pre>";
  
print_r($_POST);
  echo 
"</pre>";
?>

  Ответить  
 
 автор: Чайчайвыручай   (07.07.2011 в 13:20)   письмо автору
 
   для: cheops   (06.07.2011 в 18:59)
 

А почему нельзя записать нулевой элемент в этом месте?

<?php
 $mypost 
$_POST;
 
$buts "";
 
$pbuts "";
 if (isset(
$_COOKIE['buts'])) {
 
$buts $_COOKIE['buts'];
 
$pbuts $buts
 }
 foreach (
$mypost as $key => $val) {
 
$buts .= $key."#";
 }
 [
b]if ($pbuts != $buts) {
 
setcookie("buts""$buts");
 
header("Location:/index.php");
 }[/
b]
 
$buttons = array();
 if (isset(
$_COOKIE['buts'])) {
 
$buts $_COOKIE['buts'];
 
$buttons explode("#"$buts);
 
?>


Вот так:

if ($pbuts != $buts) {$buts = array(0 =>'a5');
 setcookie("buts", "$buts");
 header("Location:/index.php");
 }

  Ответить  
 
 автор: cheops   (07.07.2011 в 13:41)   письмо автору
 
   для: Чайчайвыручай   (07.07.2011 в 13:20)
 

Почему, можно, просто array() переопределяет массив, если вы хотите добавить новый элемент к уже существующему массиву, то лучше воспользоваться формой $buts[0] = 'a5';

  Ответить  
 
 автор: Чайчайвыручай   (07.07.2011 в 14:06)   письмо автору
 
   для: cheops   (07.07.2011 в 13:41)
 

Спасибо за ответы!
Решил по другому и сразу двух зайцев убил:

                                                    $buttons = array();
                if (isset($_COOKIE['buts'])) {
                $buts = $_COOKIE['buts'];
                $buttons = explode("#", $buts);
            }$x = count($buttons);
             $z = $x - 2;
    if($x == "2" and $buttons[$z] != "a5")
    {
    array_splice($buttons, $z, 0, "a5");
    setcookie("buts",implode("#",$buttons));
    }

  Ответить  
Rambler's Top100
вверх

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