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 :: Версия для печати :: немогу разобраться с таблицами mysql
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » немогу разобраться с таблицами mysql

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

1. vlad2020 - 19 Августа, 2016 - 21:09:21 - перейти к сообщению
Имеются две одинаковые таблицы mysql (tab1) и (tab2) в них две строки id и name. Выводятся они в форме через цыкл php - do/while, и еще присутствует кнопка <input>
Нужно чтобы при нажатии на кнопку строка из одной таблицы перенеслась в другую и наоборот, но есть проблема.
А теперь подробно:

подключаюсь к базе


выбираю таблицу
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM tab1");
  2. $myrow = mysql_fetch_array($result);


Через цикл вывожу все строки таблицы mysql в таблицу html
PHP:
скопировать код в буфер обмена
  1. do
  2. {
  3. printf ( " <tr><td>".$myrow['id']. "</td> <td> ".$myrow['name']." </td> <td>
  4. <form method='post' name='forma'>
  5. <fieldset>
  6. <input id='submit' type='submit' name='submit' value='перенести'><br/>
  7.  
  8. </fieldset>
  9. </form>
  10. </td></tr>"
  11.  
  12. );

если кнопка нажата то передаем в файл-обработчик id с таблицы (?value="$myrow['id']")

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['submit']))
  2. {
  3.  
  4. echo "<HTML><HEAD>
  5. <META HTTP-EQUIV='Refresh' CONTENT='0; URL=form.php?value="$myrow['id']"'>
  6. </HEAD></HTML>";
  7.  
  8.  
  9. }
  10. }

условие цыкла
PHP:
скопировать код в буфер обмена
  1. while ($myrow = mysql_fetch_array ($result));


Файл обработчик выглядит так

принимаем значение от value
PHP:
скопировать код в буфер обмена
  1. $q = $_GET['value'];


переносим значение с таблицы 1 в таблицу 2
PHP:
скопировать код в буфер обмена
  1. $resultd = mysql_query("SELECT * FROM tab2");
  2. $myrowd = mysql_fetch_array($resultd);
  3. $past = "INSERT INTO `tab1` (`id`, `name`)
  4. SELECT `id`, `name`
  5. FROM `tab1`
  6. WHERE id='$q'";
  7. mysql_query( $past );


и удаляем с первой таблицы
PHP:
скопировать код в буфер обмена
  1. $delete = "DELETE FROM `tab2` WHERE id='$q'";
  2. mysql_query( $delete );
  3.  


Проблема в том что когда я нажимаю на кнопку в файл обработчик должно передаваться id той строки на которую я нажал, а передается только один последний id и всё.

Если кто то разобрался в том что я тут написал то помогите пожалуйста.
пример

Если вы знаете как по другому реализовать задуманное напишите свой вариант
2. Denkill - 12 Сентября, 2016 - 09:17:16 - перейти к сообщению
Перепиши кусок
PHP:
скопировать код в буфер обмена
  1. do
  2. {
  3. printf ( " <tr><td>".$myrow['id']. "</td> <td> ".$myrow['name']." </td> <td>
  4. <form method='post' name='forma'>
  5. <fieldset>
  6. <input type='hidden' name='id' value=".$myrow['id'].">
  7. <input type='hidden' name='name' value=".$myrow['name'].">
  8. <input id='submit' type='submit' name='submit' value='перенести'><br/>
  9.  
  10. </fieldset>
  11. </form>
  12. </td></tr>"
  13.  
  14. );


и тогда этот кусок вверху странички:
PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_POST['submit'])){
  3. $id = (int)$_POST['id'];
  4. $name = $_POST['name'];
  5. $past = "INSERT INTO `tab1` (`id`, `name`) VALUES(`".$id."`, `".$name."`)";
  6. mysql_query( $past );
  7. $delete = "DELETE FROM `tab2` WHERE id='".$id."'";
  8. mysql_query( $delete );
  9. }

 

Powered by ExBB FM 1.0 RC1