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

Форум PHP

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

 

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

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

тема: Не удаляется элемент массива
 
 автор: Чайчайвыручай   (12.07.2011 в 20:32)   письмо автору
 
 

После работы данного скрипта не только не удаляется $buttons[$key], но еще и записывается $key в кукисы. В чем ошибка?

<?php
// Определяем нажата ли кнопка «удалить»
    
if (isset($_POST['$n_delete'])){
       
$key $n_delete 1;    
        
$buttons = array();
       
$buttons explode("#"$buts ); 
//Удаляем элемент массива.
        
$buttons[$key] = ""
        
$buts implode("#"$buttons); 
        
$buts str_replace("##","#",$implode_buts); 
        
setcookie("buts""$buts");}
//Форма:
// Вывод  в цикле
$n_delete=1;
<
td ><form method='post'><input name=$n_delete  type='submit' value='Удалить'><form>></td>
$n_delete++;
?>

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

у Вас $n_delete не определена в if (isset($_POST['$n_delete'])){
___
если честно то на мой взгляд у Вас "каша" с переменными
имя переменной в цикле не так формируется

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

Да, вы правы, ошибка была с переменной. Ниже все без ошибок:

<?php
// Определяем нажата ли кнопка «удалить» 
    
if (isset($_POST['$n_delete'])){ 
 
// $n_delete равно номеру элемента минус единица.
     
$key $n_delete 1;     
        
$buttons = array(); 
       
$buttons explode("#"$buts );  
//Удаляем элемент массива. 
        
$buttons[$key] = "";  
        
$buts implode("#"$buttons);  
        
$buts str_replace("##","#",$buttons);  
        
setcookie("buts""$buts");} 
//Форма: 
// Вывод  в цикле 
$n_delete=1
<
td ><form method='post'><input name=$n_delete  type='submit' value='Удалить'><form>></td
$n_delete++; 
?>


у Вас $n_delete не определена в if (isset($_POST['$n_delete']))
В смысле не определена? Она у меня записывается в куки

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

в прямом смысле
на момент интерпретации 3 строки переменная не существует, она у Вас определяется ниже по коду
я же говорю, Вы неправильно формируете переменную в форме, отсюда и вся неразбериха

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

Вы неправильно формируете переменную в форме, отсюда и вся неразбериха
А как надо? Взять в кавычки?

Вот как у меня она выглядит:

<?php
$n_delete
=1;
do{
 
printf (
         
"<td><form method='post'><input name='$n_delete'  type='submit' value='Удалить'><form></td>
          <td class='tdn'>%s</td>"

  
$nam); 
$n_delete++}
while  (
условие);
?>

  Ответить  
 
 автор: Valick   (12.07.2011 в 21:29)   письмо автору
 
   для: Чайчайвыручай   (12.07.2011 в 21:26)
 

должно быть не
name='$n_delete'

а
name=del[$n_delete]

а на сервере обрабатывать массив $_POST[del]
а еще лучше формировать это ссылкой или чекбоксами в зависимости от задачи
___
вообще лучше задавая вопрос на форуме описывать техническое задание (ТЗ)

  Ответить  
 
 автор: Чайчайвыручай   (12.07.2011 в 21:37)   письмо автору
 
   для: Valick   (12.07.2011 в 21:29)
 

Спасибо большое!

  Ответить  
 
 автор: Valick   (12.07.2011 в 21:41)   письмо автору
 
   для: Чайчайвыручай   (12.07.2011 в 21:37)
 

да собственно говоря пока незачто
я сам лет пять назад кодил в темную голову... столько "гениальных" мыслей в голове было :)
такая хреновень получалась)
а потом маленько остудил голову и начал читать книги))

  Ответить  
 
 автор: Чайчайвыручай   (12.07.2011 в 22:15)   письмо автору
 
   для: Valick   (12.07.2011 в 21:41)
 

Да, у меня как раз много этой хреновени. Даже сейчас не получается.
Делаю name=del[$n_delete] и $_POST[del].
del[$n_delete] - это массив? Тогда почему нет знака переменной?
$_POST[del] - не несет переменную $n_delete. Почему?

  Ответить  
 
 автор: Valick   (12.07.2011 в 22:48)   письмо автору
 
   для: Чайчайвыручай   (12.07.2011 в 22:15)
 

$_POST[del] - несет массив :)
пробуйте
foreach($_POST[del] as $key=>$value){
echo $key." - ".$value;
}

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

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