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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP БД - MySQL Телефонный справочник

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: страница удаления контакта срабатывает через раз
alex_uni
Отправлено: 19 Января, 2015 - 20:27:06
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




Здравствуйте! По обучающему курсу пишу телефонный справочник, но никак не могу разобраться в чем беда: функция на странице удаления контактов срабатывает через раз. после манипуляций над данными все страницы, в том числе и главная (кроме edit.php) сами не обновляют актуальную информацию (только по клику f5)
Буду благодарен за помощь! Сам код привожу.


conn.php - Подключение к БД
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. define('DB_HOST', 'localhost');
  4. define('DB_USER', 'user');
  5. define('DB_PASS', '111');
  6. define('DB_NAME', 'personal');
  7.  
  8. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Нет подключения к серверу");
  9. mysql_select_db(DB_NAME) or die("Невозможно выбрать БД");
  10. mysql_set_charset('utf8') or die("Не установлена кодировка");
  11.  
  12. ?>


menu.php - верхнее меню
PHP:
скопировать код в буфер обмена
  1. <a href="index.php">Главная</a> | <a href="new.php">Добавление</a> | <a href="del.php">Удаление</a> | <a href="edit.php">Редактирование</a>
  2. <hr />
  3.  


index.php - главная
PHP:
скопировать код в буфер обмена
  1. <?PHP require_once 'conn.php' ?>
  2. <?PHP require_once 'libs.php' ?>
  3. <?PHP require_once 'menu.php' ?>
  4. <!DOCTYPE html>
  5. <html>
  6.  
  7. <head>
  8.  
  9. <title>Personal</title>
  10. </head>
  11.  
  12. <body>
  13.  
  14. <?PHP $result = showAll(); ?>
  15. <table border="1" width="300">
  16.         <tr>
  17.                 <td>№ п/п</td>
  18.                 <td>Имя:</td>
  19.                 <td>Телефон:</td>
  20.                 <td>Возраст:</td>
  21.         </tr>
  22.        
  23. <?PHP
  24. $i = 1;
  25. foreach($result as $item){ ?>
  26.         <tr>
  27.                 <td><?=$i?></td>
  28.                 <td><?=$item['name']?></td>
  29.                 <td><?=$item['phone']?></td>
  30.                 <td><?=$item['age']?></td>
  31.         </tr>
  32. <?PHP
  33. $i++;  
  34. }
  35.  
  36.  
  37. ?>
  38.         <tr>
  39.                 <td colspan="3">Всего:</td>
  40.                 <td><?PHP echo $i - 1; ?></td>
  41.         </tr>  
  42. </table>
  43.  
  44. </body>
  45.  
  46. </html>


new.php - добавление нового контакта
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start(); ?>
  2. <?PHP require_once 'conn.php' ?>
  3. <?PHP require_once 'libs.php' ?>
  4. <?PHP
  5.  
  6. if($_POST['submit']){
  7.         $name = trim(mysql_real_escape_string($_POST['name']));
  8.         $phone = trim(mysql_real_escape_string($_POST['phone']));
  9.         $age = trim((int)$_POST['age']);
  10.        
  11.         $error = '';
  12.         if(empty($name)) $error .= '<p>Не заполнено поле "Имя"</p>';
  13.         if(empty($phone)) $error .= '<p>Не заполнено поле "Телефон"</p>';
  14.         if(empty($age)) $error .= '<p>Не заполнено поле "Возраст"</p>';
  15.        
  16.         if(empty($error)){
  17.                 if(newContact($name, $phone, $age)){
  18.                         $_SESSION['res'] = '<p>Добавлено!</p>';
  19.                         header('Location: ' . $_SERVER['PHP_SELF']);
  20.                         exit;
  21.                 }else{
  22.                         $_SESSION['res'] = '<p>Ошибка!</p>';
  23.                         header('Location: ' . $_SERVER['PHP_SELF']);
  24.                         exit;
  25.                 }
  26.         }else{
  27.                 $_SESSION['res'] = $error;
  28.                 $_SESSION['name'] = $name;
  29.                 $_SESSION['phone'] = $phone;
  30.                 $_SESSION['age'] = $age;
  31.                 header('Location: ' . $_SERVER['PHP_SELF']);
  32.                 exit;
  33.         }
  34. }
  35.  
  36. ?>
  37.  
  38. <?PHP require_once 'menu.php' ?>
  39.  
  40. <form method="post">
  41.         <p>Имя *: <input type="text" name="name" value="<?PHP echo $_SESSION['name']; ?>" /></p>
  42.         <p>Телефон *: <input type="text" name="phone" value="<?PHP echo $_SESSION['phone']; ?>" /></p>
  43.         <p>Возраст *: <input type="text" name="age" value="<?PHP echo $_SESSION['age']; ?>" /></p>
  44.         <p><input type="submit" name="submit" value="Добавить" /></p>
  45. </form>
  46.  
  47. <?PHP
  48. echo $_SESSION['res'];
  49. ?>


del.php - удаление контакта
PHP:
скопировать код в буфер обмена
  1. <?PHP require_once 'conn.php' ?>
  2. <?PHP require_once 'libs.php' ?>
  3. <?PHP
  4.  
  5. if(isset($_GET['id'])){
  6.         $id = (int)$_GET['id'];
  7.         delContact($id);
  8.  
  9.         header('Location: ' . $_SERVER['PHP_SELF']);
  10.         exit;
  11. }
  12.  
  13. ?>
  14.  
  15. <?PHP require_once 'menu.php' ?>
  16.  
  17. <?PHP $result = showAll(); ?>
  18. <table border="1" width="300">
  19.         <tr>
  20.                 <td>№ п/п</td>
  21.                 <td>Имя:</td>
  22.                 <td>Телефон:</td>
  23.                 <td>Возраст:</td>
  24.         </tr>
  25.        
  26. <?PHP
  27. $i = 1;
  28. foreach($result as $item){ ?>
  29.         <tr>
  30.                 <td><?=$i?></td>
  31.                 <td><a href="?id=<?=$item['id']?>"><?=$item['name']?></a></td>
  32.                 <td><?=$item['phone']?></td>
  33.                 <td><?=$item['age']?></td>
  34.         </tr>
  35. <?PHP
  36. $i++;  
  37. }
  38.  
  39.  
  40. ?>
  41.         <tr>
  42.                 <td colspan="3">Всего:</td>
  43.                 <td><?PHP echo $i - 1; ?></td>
  44.         </tr>  
  45. </table>


edit.php - страница редактирования
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start(); ?>
  2. <?PHP require_once 'conn.php' ?>
  3. <?PHP require_once 'libs.php' ?>
  4. <?PHP
  5.  
  6. if($_POST['submit']){
  7.         $id = (int)$_POST['id'];
  8.         $name = trim(mysql_real_escape_string($_POST['name']));
  9.         $phone = trim(mysql_real_escape_string($_POST['phone']));
  10.         $age = trim((int)$_POST['age']);
  11.        
  12.         $error = '';
  13.         if(empty($name)) $error .= '<p>Не заполнено поле "Имя"</p>';
  14.         if(empty($phone)) $error .= '<p>Не заполнено поле "Телефон"</p>';
  15.         if(empty($age)) $error .= '<p>Не заполнено поле "Возраст"</p>';
  16.        
  17.         if(empty($error)){
  18.                 if(editContact($id, $name, $phone, $age)){
  19.                         $_SESSION['res'] = '<p>Изменено!</p>';
  20.                         header('Location: ' . $_SERVER['PHP_SELF']);
  21.                         exit;
  22.                 }else{
  23.                         $_SESSION['res'] = '<p>Ошибка или Вы ничего не меняли!</p>';
  24.                         header('Location: ' . $_SERVER['PHP_SELF']);
  25.                         exit;
  26.                 }
  27.         }else{
  28.                 $_SESSION['res'] = $error;
  29.                 header('Location: ' . $_SERVER['PHP_SELF']);
  30.                 exit;
  31.         }
  32. }
  33.  
  34. ?>
  35.  
  36. <?PHP require_once 'menu.php' ?>
  37. <?PHP
  38.  
  39. if(isset($_GET['id'])){
  40.         $id = (int)$_GET['id'];
  41.         $contact = showContact($id);
  42.         ?>
  43.        
  44.         <form method="post">
  45.                 <p>Имя *: <input type="text" name="name" value="<?=$contact['name']?>" /></p>
  46.                 <p>Телефон *: <input type="text" name="phone" value="<?=$contact['phone']?>" /></p>
  47.                 <p>Возраст *: <input type="text" name="age" value="<?=$contact['age']?>" /></p>
  48.                 <input type="hidden" name="id" value="<?=$contact['id']?>" />
  49.                 <p><input type="submit" name="submit" value="Изменить" /></p>
  50.         </form>
  51.        
  52. <?PHP
  53. exit;  
  54. }
  55.  
  56. ?>
  57.  
  58.  
  59.  
  60. <?PHP $result = showAll(); ?>
  61. <table border="1" width="300">
  62.         <tr>
  63.                 <td>№ п/п</td>
  64.                 <td>Имя:</td>
  65.                 <td>Телефон:</td>
  66.                 <td>Возраст:</td>
  67.         </tr>
  68.        
  69. <?PHP
  70. $i = 1;
  71. foreach($result as $item){ ?>
  72.         <tr>
  73.                 <td><?=$i?></td>
  74.                 <td><a href="?id=<?=$item['id']?>"><?=$item['name']?></a></td>
  75.                 <td><?=$item['phone']?></td>
  76.                 <td><?=$item['age']?></td>
  77.         </tr>
  78. <?PHP
  79. $i++;  
  80. }
  81.  
  82.  
  83. ?>
  84.         <tr>
  85.                 <td colspan="3">Всего:</td>
  86.                 <td><?PHP echo $i - 1; ?></td>
  87.         </tr>  
  88. </table>
  89. <?PHP
  90. echo $_SESSION['res'];
  91. ?>


libs.php - функции
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // показ абонентов
  4. function showAll(){
  5.         $query = "SELECT * FROM phone ORDER BY id";
  6.         $res = mysql_query($query);
  7.        
  8.         $data = array();
  9.         while($row = mysql_fetch_assoc($res)){
  10.                 $data[] = $row;
  11.         }
  12.         return $data;
  13. }
  14.  
  15. // показ конкрентного абонента
  16. function showContact($id){
  17.         $query = "SELECT * FROM phone WHERE id = $id";
  18.         $res = mysql_query($query);
  19.        
  20.         $row = mysql_fetch_assoc($res);
  21.         return $row;
  22. }
  23.  
  24. // изменение данных абонента
  25. function editContact($id, $name, $phone, $age){
  26.         $query = "UPDATE phone SET name = '$name', phone = '$phone', age = $age WHERE id = $id";
  27.         $res = mysql_query($query);
  28.        
  29.         if(mysql_affected_rows() > 0)
  30.                 return TRUE;
  31.         else
  32.                 return FALSE;
  33. }
  34.  
  35. // добавление абонента
  36. function newContact($name, $phone, $age){
  37.         $query = "INSERT INTO phone (name, phone, age) VALUES ('$name', '$phone', $age)";
  38.         $res = mysql_query($query);
  39.        
  40.         if(mysql_affected_rows() > 0)
  41.                 return TRUE;
  42.         else
  43.                 return FALSE;
  44. }
  45.  
  46. // удаление абонента
  47. function delContact($id){
  48.         $query = "DELETE FROM phone WHERE id = $id";
  49.         mysql_query($query);
  50. }
  51.  
  52.  
  53. ?>
 
 Top
killnet
Отправлено: 20 Января, 2015 - 17:15:15
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




хорошая простыня, интересно, если проект будет из миллиона строк, он тоже сюда попадет

(Отредактировано автором: 20 Января, 2015 - 17:18:28)

 
 Top
zloy dyx
Отправлено: 28 Января, 2015 - 23:00:16
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Авг. 2014  
Откуда: Германия


Помог: 0 раз(а)

[+]


в твоём гавне не кто тут разбиратся не будет! Делай так
PHP:
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM `твоя таблица с номерами` WHERE `номер` = '$nomer'");

в переменную $nomer кидай номер с формы. Вот и всё! И не надо мудрить.
 
 Top
alex_uni
Отправлено: 29 Января, 2015 - 13:32:03
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




zloy dyx пишет:
в твоём гавне не кто тут разбиратся не будет! Делай так
PHP:
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM `твоя таблица с номерами` WHERE `номер` = '$nomer'");

в переменную $nomer кидай номер с формы. Вот и всё! И не надо мудрить.

Да я уже давно разобрался! затык был в том, что в кеше хрома страницы сохранялись и изменения были видны только по обновлению ))
 
 Top
esterio
Отправлено: 29 Января, 2015 - 13:48:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




zloy dyx пишет:
Делай так

Вы еще больше намудрили нежели было. Ид есть Ид. он уникален в этом и вся эго суть. Так что не вижу удаление по ИД плохим. скорее ваш вариант с точкы зрения логикы плох.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB