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 :: Версия для печати :: добавление и удаление блока
Форумы портала PHP.SU » » Вопросы новичков » добавление и удаление блока

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

1. chelezo - 19 Марта, 2015 - 13:04:47 - перейти к сообщению
Помогите разобраться пожалуйста. в БД создаються записи с одинаковыми ID что приводит к бардаку и перепутыванием данных

код страницы добавления блока и удаления
(добавление работает но всегда ставит 1 ID, удаление не отрабатываеться вообще)

CODE (htmlphp):
скопировать код в буфер обмена
  1. $db_staging = 'ru_news_new_submenu';                           
  2.  
  3. $count_id_news_new = mysql_result(mysql_query("SELECT count(id) FROM ru_news_new"),0);
  4. for($i=0; $i<$count_news_new; $i++)
  5. {
  6.         if (isset($_POST{'del_block_'.$i})) {
  7.         $id = $_POST{'id_del_block_'.$i};
  8.        
  9.         $tst = mysql_query("DELETE FROM ru_news_new WHERE id = '".$id."'", $db);
  10.         }
  11. }
  12.  
  13. $count_news_new = mysql_result(mysql_query("SELECT count(id) FROM ru_news_new"),0);
  14. $res_news_new = mysql_query("SELECT * FROM ru_news_new ORDER BY id ASC", $db);
  15.  
  16. <div id="content">     
  17.          <div class="content_width">
  18.                   <?
  19.                                   echo'<div id="div_btn_add_new_block"><button onclick="adm_news_new_add_new_block();"><img src="images/plus.png" /> Добавить новый блок</button></div>';
  20.                                   if (!$res_news_new) {echo"Ошибка запроса <br>".mysql_error();} else
  21.                                   while ($news_new = mysql_fetch_array($res_news_new)) { $array_news_new[] = $news_new; }
  22.                                   for ($i=$count_news_new-1; $i>=0; $i--)
  23.                                   {
  24.                                   $block_no = $i+1;
  25.                                   echo'
  26.                                   <form action="adm_news_new.php" method="post" enctype="multipart/form-data">
  27.                                           <div class="left_title" style="cursor:pointer" onclick="adm_news_new_title('.$array_news_new[$i]["id"].');">
  28.                                                 '.$array_news_new[$i]["title"].'
  29.                                           </div>
  30.                                          
  31.                                           <div class="text_content" style="cursor:pointer" onclick="adm_news_new_text('.$array_news_new[$i]["id"].');">
  32.                                                 '.$array_news_new[$i]["text"].'
  33.                                           </div>
  34.                                          
  35.                                           <input type="hidden" name="id_del_block_'.$i.'" value="'.$array_news_new[$i]["id"].'"/>
  36.                                           <button type="submit" name="del_block_'.$i.'" style="margin-top:20px;"><img src="images/btn_del.png" title="Удалить '.$block_no.'-й блок" style="cursor:pointer;"/></button>
  37.                                           <div class="clear" style="height:25px"></div>
  38.                                          
  39.                                   </form>
  40.                                   ';
  41.                                   }
  42.                           ?>
  43.          </div>  
  44.     </div>
  45.  
2. RickMan - 19 Марта, 2015 - 13:25:29 - перейти к сообщению
А почему у вас могут быть записи с одинаковым id? И получему по дефолту 1?
http://www[dot]mysql[dot]ru/docs/man/exa[dot][dot][dot]O_INCREMENT[dot]html - почитайте это...
3. chelezo - 19 Марта, 2015 - 14:46:55 - перейти к сообщению
вот код кнопки добавления блока
CODE (htmlphp):
скопировать код в буфер обмена
  1. $max_id_id_news_new = mysql_result(mysql_query("SELECT max(id) FROM ru_news_new"),0);
  2. $id = $max_id_news_new+1;
  3. $title='Новый заголовок';
  4. $text='Новый текст';
  5. mysql_query ("INSERT INTO ru_news_new (id,title,text) VALUES ('".$id."','".$title."','".$text."')", $db);
  6. ?>
  7.  

(Добавление)
RickMan пишет:
А почему у вас могут быть записи с одинаковым id? И получему по дефолту 1?
http://www[dot]mysql[dot]ru/docs/man/exa[dot][dot][dot]O_INCREMENT[dot]html - почитайте это...


ето не мой код. Мне в нем надо разобраться и уже голову сламал над етим никак немогу понять в чем трабл?! Весь остальной сайт перелопатил и понял как работает. А тут нифига понять немогу.
4. RickMan - 19 Марта, 2015 - 14:56:56 - перейти к сообщению
Сделайте поле id autoincrement и удалите это дерь**ще. В insert запросе не должно учавствовать поле id, оно должно само задаваться mysql'ом.
5. chelezo - 19 Марта, 2015 - 18:17:05 - перейти к сообщению
RickMan пишет:
Сделайте поле id autoincrement и удалите это дерь**ще. В insert запросе не должно учавствовать поле id, оно должно само задаваться mysql'ом.

Я Вас очень сильно прошу выделите в коде то что нужно заменить. Я начинающий но возложили на меня работы ппц простою Буду очень благодарен.
И вопрос как тогда php сможет узнать какое поле НУЖНО удалить?? И какое добавить!?!?
6. DelphinPRO - 19 Марта, 2015 - 21:27:45 - перейти к сообщению
вот так добавляете данные.
PHP:
скопировать код в буфер обмена
  1. //$max_id_id_news_new = mysql_result(mysql_query("SELECT max(id) FROM ru_news_new"),0);
  2. //$id = $max_id_news_new+1;
  3. $title='Новый заголовок';
  4. $text='Новый текст';
  5. mysql_query ("INSERT INTO ru_news_new (title,text) VALUES ('$title','$text')", $db);


Перед этим идете в PMA и полю ID в таблице назначаете атрибут AUTO_INCREMENT. Тогда оно будет автоматически увеличиваться при каждой новой вставке.
7. chelezo - 20 Марта, 2015 - 08:47:38 - перейти к сообщению
Спасибо помогло. Теперь на сайте порядок )). Осталась одна проблема, не удаляются блоки.
8. chelezo - 20 Марта, 2015 - 15:03:38 - перейти к сообщению
Думаю загвоздка тут
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  for ($i=$count_news_new-1; $i>=0; $i--)
  3.                                   {
  4.                                   $block_no = $i+1;
  5.  

 

Powered by ExBB FM 1.0 RC1