Автор Тема: MCF- администрация част1  (Прочетена 17161 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

C.Dimitrov

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 17
Re: MCF- администрация част1
« Отговор #15 -: 24 Декември 2011, 06:25:07 »
Цялата част от урока работи при мен, освен последното "редакцията на категории". В мигът в който натисна редактирай на дадена категория и се опитам да променя нещо в нея било то име или описание. Излизат ми грешките - Успешен запис или Името съществува
Но категориите не се обновяват, а вместо това или не става нищо и вади Името съществува, или изписва Успешен запис и създава още нови категории.
Код: PHP
  1. <?php
  2. include '../functions.php';
  3. my_adminheader("Групи Форуми");
  4. db_init();
  5. if($_POST['ng']==1)
  6. {
  7.     $name=addslashes(trim($_POST['group_name']));
  8.     $desc=addslashes(trim($_POST['desc']));
  9.     $result=mysql_query('SELECT * FROM group_cat WHERE name="'.$name.'"');
  10.     if(!mysql_num_rows($result)>0)
  11.     {
  12.         $id=(int)$POST['edit_id'];
  13.        
  14.         if($id>0)
  15.         {
  16.             //обновяваме данни
  17.             mysql_query('UPDATE group_cat SET name="'.$name.'", `desc`="'.$desc.'" WHERE group_cat_id='.$id);
  18.             echo '<h1>Успешно обновяване</h1>';
  19.         }
  20.         else
  21.         {
  22.             //ако името не съществува
  23.             //въвеждаме инфо в БД
  24.             mysql_query('INSERT INTO group_cat (name,date_added,`desc`)
  25.            VALUES("'.$name.'",'.time().',"'.$desc.'")');
  26.             echo '<h1>Успешен запис</h1>';
  27.         }
  28.     }
  29.     else
  30.     {
  31.         //error
  32.         echo '<h1>Името съществува</h1>';
  33.     }
  34. }
  35. //извеждане на категориите
  36. $result=mysql_query('SELECT * FROM group_cat');
  37. echo '<table border="1"><tr><td>Име</td><td>Описание</td><td>Редактирай</td><tr>';
  38. while($row=mysql_fetch_assoc($result))
  39. {
  40.  
  41.     echo '<tr><td>'.$row['name'].'</td><td>'.$row['desc'].'</td>
  42.    <td><a href="groups.php?mode=edit&id='.$row['group_cat_id'].'">Редактирай</a></td><tr>';
  43. }
  44. echo '</table>';
  45.  
  46. if($_GET['mode']=="edit" && $_GET['id']>0)
  47. {
  48.     $id=(int)$_GET['id'];
  49.     $result=mysql_query('SELECT * FROM group_cat WHERE group_cat_id='.$id);
  50.     $ed_info=mysql_fetch_assoc($result);
  51. }
  52. echo '<form method="post" action="groups.php">
  53. Име на група:<input type="text" name="group_name" value="'.$ed_info['name'].'"><br>
  54. Описание:<textarea name="desc" rows="5" cols="50">'.$ed_info['desc'].'</textarea><br>
  55. <input type="submit" value="запиши">
  56. <input type="hidden" name="ng" value="1">';
  57.  
  58. if($_GET['mode']=="edit")
  59. {
  60.     echo '<input type="hidden" name="edit_id" value="'.$_GET['id'].'">';
  61. }
  62.  
  63.  
  64. footer();
  65. ?>
« Последна редакция: 14 Април 2015, 23:37:13 от Avalanche »

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: MCF- администрация част1
« Отговор #16 -: 24 Декември 2011, 12:26:51 »
Първото нещо което виждам като пропуск е следно :
Код: PHP
  1. $result=mysql_query('SELECT * FROM group_cat WHERE name="'.$name.'"');
  2.  
какво прави това - ами търси съвпадение по име на категория в бази данни независимо дали е категорията, която искаме да редактираме или не, и ако не промениш и името когато редактираш, ще ти каже че то вече съществува - 'Името съществува'..така другия случай когато промениш и името - ако не намери съвпадение по име в базата отива на стъпка нов запис - 'Успешен запис' и така се въртиш в един кръг и никога няма да стигнеш до самата редакция на категорията.За да проверява за съвпадение по име само в другите категории а не тази която редкатираме кода би трябвало да излглежда така :
Код: PHP
  1. $result=mysql_query('SELECT * FROM group_cat WHERE name="'.$name.'" AND group_cat_id!='.$id);
  2.  
По този начин резултата от заявката би имал съвсем друг смисъл.Така би трябвало да стигаш до съобщението 'Успешно обновяване'.Ако нещо пак не е наред значи имаш объркано и още нещо.Пиши ако има друг проблем.

пп. Ако не разбираш какво прави тази заявка виж тук : http://nau4i.me/forum/index.php/topic,5359.msg25771.html#msg25771

допълнение: За да бъде заявката правилна трябва да изнесеш $id-то преди нея тоест реда $id=(int)$POST['edit_id']; трябва да е след $desc=... в твоя случай и за да вземеш стойността на скритото поле би трябвало да е $_POST['edit_id'] изтървал си една долна черта на глобалния масив _POST,което би довело до същия проблем за който говориш.
« Последна редакция: 24 Декември 2011, 15:32:52 от abcd »

C.Dimitrov

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 17
Re: MCF- администрация част1
« Отговор #17 -: 26 Декември 2011, 05:03:48 »
Благодаря сега всичко върви добре. Ще постна кодът от целият файл groups.php готов и работещ в случай че някой има подобен проблем.
Код: PHP
  1. <?php
  2. include '../functions.php';
  3. my_adminheader("Групи Форуми");
  4. db_init();
  5. if($_POST['ng']==1)
  6. {
  7.         $name=addslashes(trim($_POST['group_name']));
  8.         $desc=addslashes(trim($_POST['desc']));
  9.         $id=(int)$_POST['edit_id'];
  10.         $result=mysql_query('SELECT * FROM group_cat WHERE name="'.$name.'" AND group_cat_id!='.$id);
  11.         if(!mysql_num_rows($result)>0)
  12.         {
  13.                
  14.                
  15.                 if($id>0)
  16.                 {
  17.                         //обновяваме данни
  18.                         mysql_query('UPDATE group_cat SET name="'.$name.'", `desc`="'.$desc.'" WHERE group_cat_id='.$id);
  19.                         echo '<h1>Успешно обновяване</h1>';
  20.                 }
  21.                 else
  22.                 {
  23.                         //ако името не съществува
  24.                         //въвеждаме инфо в БД
  25.                         mysql_query('INSERT INTO group_cat (name,date_added,`desc`)
  26.                         VALUES("'.$name.'",'.time().',"'.$desc.'")');
  27.                         echo '<h1>Успешен запис</h1>';
  28.                 }
  29.         }
  30.         else
  31.         {
  32.                 //error
  33.                 echo '<h1>Името съществува</h1>';
  34.         }
  35. }
  36. //извеждане на категориите
  37. $result=mysql_query('SELECT * FROM group_cat');
  38. echo '<table border="1"><tr><td>Име</td><td>Описание</td><td>Редактирай</td><tr>';
  39. while($row=mysql_fetch_assoc($result))
  40. {
  41.  
  42.         echo '<tr><td>'.$row['name'].'</td><td>'.$row['desc'].'</td>
  43.         <td><a href="groups.php?mode=edit&id='.$row['group_cat_id'].'">Редактирай</a></td><tr>';
  44. }
  45. echo '</table>';
  46.  
  47. if($_GET['mode']=="edit" && $_GET['id']>0)
  48. {
  49.         $id=(int)$_GET['id'];
  50.         $result=mysql_query('SELECT * FROM group_cat WHERE group_cat_id='.$id);
  51.         $ed_info=mysql_fetch_assoc($result);
  52. }
  53. echo '<form method="post" action="groups.php">
  54. Име на група:<input type="text" name="group_name" value="'.$ed_info['name'].'"><br>
  55. Описание:<textarea name="desc" rows="5" cols="50">'.$ed_info['desc'].'</textarea><br>
  56. <input type="submit" value="запиши">
  57. <input type="hidden" name="ng" value="1">';
  58.  
  59. if($_GET['mode']=="edit")
  60. {
  61.         echo '<input type="hidden" name="edit_id" value="'.$_GET['id'].'">';
  62. }
  63.  
  64.  
  65. footer();
  66. ?>
« Последна редакция: 14 Април 2015, 23:37:21 от Avalanche »

gerito1234

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 2
Re: MCF- администрация част1
« Отговор #18 -: 16 Февруари 2013, 16:08:23 »
Здравейте,
Имам следния проблем при написването на кода от този урок - При въвеждане на запис ми изкарва съобщение че записът е успешен, но в базата записа го няма. Същата заявка през Phpmyadmin работи и има запис.

Също така се появява и следното предупреждение за грешка:
Unknown column 'name' in 'where clause'
Warning: mysql_numrows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\PhpProject3\admin\organization.php on line 14

Когато променливата не минава през POST това предупреждение го няма. Може ли някой да помогне къде точно да си търся грешката?
Код: PHP
  1. <?php
  2. include '../function.php';
  3.  
  4. my_admin_header('Начало');
  5. connect();
  6. if($_POST['ng']==1)
  7. {
  8.     $name=addslashes(trim($_POST['org_name']));
  9.     $tel=addslashes(trim($_POST['org_tel']));
  10.     $id=(int)$_POST['edit_id'];  
  11.     $rs=mysql_query('SELECT * FROM organization WHERE name="'.$name.'" and org_id='.$id);
  12. 13     ECHO mysql_error ();
  13. 14    if(!mysql_numrows($rs)>0)
  14. 15        
  15.     {
  16.        
  17.                 if($id>0)
  18.                 {
  19.                     mysql_query('UPDATE organization set name="'.$name.'", tel="'.$tel.'" WHERE org_id='.$id);
  20.                     echo 'Успешно обновяване';
  21.                 }
  22.                 else {
  23.                 mysql_query('INSERT INTO organization (name, tel) VALUES("'.$name.'","'.$tel.'")');
  24.                 echo '<h1>Записът е успешен</h1>'; }
  25.     }
  26.  else {
  27.         echo '<h1>Името съществува</h1>';      
  28.  }
  29. }
  30. $rs=  mysql_query('SELECT * FROM organization');
  31. echo '<table border="1"><tr><td>Фирма</td><td>Тел.</td></tr>';
  32. while ($row=  mysql_fetch_assoc($rs))
  33. {
  34.     echo '<tr><td>'.$row['name'].'</td><td>'.$row['tel'].'</td>
  35.        <td><a href="organization.php?mode=edit&id='.$row['org_id'].'">Редактирай</a></td></tr>';
  36. }
  37. echo '</table>';
  38. if ($_GET['mode']=="edit" && $_GET['id']>0)
  39. {
  40.     $id=(int)$_GET['id'];
  41.     $rs=  mysql_query('SELECT * FROM organization where org_id='.$id);
  42.     $ed_info=  mysql_fetch_assoc($rs);
  43. }
  44.  
  45. echo '<form method="post" action="organization.php">
  46.    <table><tr><td>Организация:</td>
  47.            <td><input type="text" name="org_name" value="'.$ed_info['name'].'"></td></tr>
  48.        <tr><td>Телефон</td>
  49.            <td><input type="text" name="org_tel" value="'.$ed_info['tel'].'"</td></tr>
  50.    <tr><td collspan="2" aling="center" "><input type="submit" value="ЗАПИШИ"></td></tr>
  51.        <input type="hidden" name="ng" value="1"></table>';
  52.     if($_GET['mode']=="edit")
  53.     {
  54.     echo '<input type="hidden" name="edit_id" value="'.$_GET['id'].'">';
  55.     }
  56. echo '</form>';
  57.     footer();

Благодаря предварително
« Последна редакция: 14 Април 2015, 23:37:31 от Avalanche »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: MCF- администрация част1
« Отговор #19 -: 16 Февруари 2013, 16:17:00 »
Здрасти,

я пробвай да промениш тази заявка:
Код: PHP
  1. mysql_query('INSERT INTO organization (name, tel) VALUES("'.$name.'","'.$tel.'")');
на това
Код: PHP
  1. mysql_query('INSERT INTO `organization`(`name`, `tel`) VALUES("'.$name.'","'.$tel.'")');

За второто нещо, функция като mysql_numrows няма, пробвай с mysql_num_rows.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MCF- администрация част1
« Отговор #20 -: 16 Февруари 2013, 17:18:33 »
Цитат
За второто нещо, функция като mysql_numrows няма, пробвай с mysql_num_rows.

Що си мисля, че и по двата начина е правилно, имам някакъв блед спомен във времето.
Ще го тествам по-късно, че ся нямам много време.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: MCF- администрация част1
« Отговор #21 -: 16 Февруари 2013, 18:18:38 »
Цитат
За второто нещо, функция като mysql_numrows няма, пробвай с mysql_num_rows.

Що си мисля, че и по двата начина е правилно, имам някакъв блед спомен във времето.
Ще го тествам по-късно, че ся нямам много време.
http://php.net/manual/bg/function.mysql-num-rows.php
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

gerito1234

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 2
Re: MCF- администрация част1
« Отговор #22 -: 16 Февруари 2013, 18:31:34 »
В урока е mysql_numrows. Но дори и по другия начин пак ми дава същата грешка. Все пак благодаря за бързите отговори.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: MCF- администрация част1
« Отговор #23 -: 16 Февруари 2013, 18:52:47 »
В урока е mysql_numrows. Но дори и по другия начин пак ми дава същата грешка. Все пак благодаря за бързите отговори.
Явно езика си мисли, че става въпрос за едно и също нещо, все пак пробвай да промениш MySQL ресурса от:
Код: PHP
  1. $rs=mysql_query('SELECT * FROM organization WHERE name="'.$name.'" and org_id='.$id);
на:
Код: PHP
  1. $rs=mysql_query('SELECT * FROM `organization` WHERE `name`="' . $name . '" AND `org_id`="' . $id . '"');
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

bgludost

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 41
Re: MCF- администрация част1
« Отговор #24 -: 16 Февруари 2013, 23:01:48 »
имам един въпрос които е свързан частичмп с урока, защо в така написаната заявка възниква грешка
Код: PHP
  1. $res=mysql_query('SELECT * FROM group_cat WHERE group_cat-id ="'.$id.'"');
  2.         $ed_info=mysql_fetch_assoc($res);
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\mcf\admin\groups.php и тя е защото колоната която съм посочил да търси в WHERE не е в тези кавички `` . В един от предните уроци имаше проблем с desc и го сложихме в същите кавички, но до колкото разбрах е, защото desc е специална дума в php, а при тази заявка от къде идва проблема. Да не е от - ?

borovaka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 1
  • -Получени: 48
  • Публикации: 906
Re: MCF- администрация част1
« Отговор #25 -: 16 Февруари 2013, 23:14:09 »
@bgludost Какво е това group_cat-id?
В MySQL, ако искаш да се обърнеш към поле от таблица използва точна за разделите между името на таблицата и името на съответната колона, но в случая не е необходимо, тъй като полето е в същата таблица в случая трябва да е порсто
Код: MySQL
  1.     $res=mysql_query('SELECT * FROM group_cat WHERE id ="'.$id.'"');
  2. $ed_info=mysql_fetch_assoc($res);

Не съм гледал урока на Иван, но си мисля, че не го е написал така, а ако наистина е, то това е просто грешка при писането.

Искам да дам съвет на @gerito1234 и на @bgludost, ако в момента започвате да се учите да пишете на PHP, ще ви посаветвам да не започвате със този синтаксис които е представен в уроците на Иван ( говоря специално за MySQL модула ). По време на правенето на уроците mysql extensiona за PHP все още се използваше широко, но в момента нещата не стоят по този начин ( дори ще бъде обявен за deprecated ). За това съветът ми е да прочетете относно MySQLi или PDO, ако не сте наясно с обектно ориентираното програмиране ви препоръчвам MySQLi, тъй като на него може да пишете и процедурно, а и синтаксисът е близък до mysql библиотеката.
Ето документация за MySQLI http://www.php.net/manual/en/book.mysqli.php , за съжаление няма превод на Български. Има и уроци на Линда на темата, също и в YouTube, но честно казано документацията в php.net  е добра и мисля, че е написана доста разбираемо.
« Последна редакция: 16 Февруари 2013, 23:27:10 от borovaka »
Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"

amxx

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: MCF- администрация част1
« Отговор #26 -: 04 Април 2016, 23:28:16 »
Здравейте имам нужда от малко хелп.Първия ми проблем  е че ми изписва това :
Notice: Undefined variable: ed_info in D:\xampp\htdocs\mcf\admin\groups.php on line 39
Notice: Undefined variable: ed_info in D:\xampp\htdocs\mcf\admin\groups.php on line 40

А втория по важен проблем е : имам 5 записа и като натисна да редактирам някой от тях винаги ми дава да редактирам само първия запис  т.е. най горния и така не мога да редактирам другите,а уж правя всичко както си е на видеото ? Ето  кода :
Код: PHP
  1. <?php
  2. include '../functions.php';
  3. db_init();
  4. my_adminheader('Group forums');
  5. if (isset($_POST['ng'])==1) {
  6.     $name=  addslashes(trim($_POST['group_name']));
  7.     $desc= addslashes(trim($_POST['desc']));
  8.     $rs= mysql_query('SELECT *  FROM group_cat WHERE name="'.$name.'"');
  9.     if (!mysql_num_rows($rs)>0) {
  10.         $id=(int)isset($_POST['edit_id']);
  11.         if ($id>0) {
  12.             mysql_query('UPDATE group_cat SET name="'.$name.'",`desc`="'.$desc.'" WHERE group_cat_id="'.$id.'"');
  13.              echo '<h1>Successfully updated</h1>';
  14.         }else {
  15.             mysql_query('INSERT INTO group_cat (name,date_added,`desc`) VALUES("'.$name.'",'.time().',"'.$desc.'")');
  16.             echo '<h1>Successfully saved</h1>';
  17.         }
  18.     }else {
  19.         //error
  20.         echo '<h1>The name has already exists</h1>';
  21.     }
  22. }
  23.  
  24. $rs=  mysql_query('SELECT * FROM group_cat');
  25. echo '<table border=1><tr><td>Name</td><td>Description</td><td>Edit</td></tr>';
  26. while ($row=  mysql_fetch_assoc($rs)){
  27.     echo '<tr><td>'.$row['name'].'</td><td>'.$row['desc'].'</td><td><a href="groups.php?mode=edit&id='.$row['group_cat_id'].'">Edit</a></td></tr>';
  28. }
  29. echo '</table>';
  30.  
  31. if (isset($_GET['mode'])=="edit" && isset($_GET['id'])>0) {
  32.     $id=(int)isset($_GET['id']);
  33.     $rs= mysql_query('SELECT * FROM group_cat WHERE group_cat_id="'.$id.'"');
  34.     $ed_info=  mysql_fetch_assoc($rs);
  35. }
  36.  
  37. echo '<form action="groups.php" method="POST">
  38.    Name of the group:<input type="text" name="group_name" value="'.$ed_info['name'].'"/><br/>
  39.    Description:<textarea name="desc" rows="5" cols="50" placeholder="Write some words about you">'.$ed_info['desc'].'</textarea><br />
  40.    <input type="submit" value="Save"/>
  41.    <input type="hidden" name="ng" value="1"/>';
  42.  
  43. if (isset($_GET['mode'])=="edit" ) {
  44.     echo '<input type="hidden" name="edit_id" vlaue="'.$_GET['id'].'"/>';
  45. }
  46.  
  47. echo '</form>';
  48.  
  49. footer();
  50.  

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: MCF- администрация част1
« Отговор #27 -: 05 Април 2016, 00:18:09 »
Когато селектираш от базата по число не е нужно да използваш кавички. Това е на 34 ред.Провай без тях. Сега от телефона ми е малко трудно да го дебъгна.

amxx

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: MCF- администрация част1
« Отговор #28 -: 05 Април 2016, 12:01:00 »
Пак не става  :(

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MCF- администрация част1
« Отговор #29 -: 05 Април 2016, 14:13:55 »
Провери дали този if се изпълнява:

Код: PHP
  1. if (isset($_GET['mode'])=="edit" && isset($_GET['id'])>0) {
  2.     $id=(int)isset($_GET['id']);
  3.     $rs= mysql_query('SELECT * FROM group_cat WHERE group_cat_id="'.$id.'"');
  4.     $ed_info=  mysql_fetch_assoc($rs);
  5. }
  6.  
  7.  

Сложи едно еко, примерно:

Код: PHP
  1. if (isset($_GET['mode'])=="edit" && isset($_GET['id'])>0) {
  2.  
  3. echo 'true'; exit;
  4.  
  5.     $id=(int)isset($_GET['id']);
  6.     $rs= mysql_query('SELECT * FROM group_cat WHERE group_cat_id="'.$id.'"');
  7.     $ed_info=  mysql_fetch_assoc($rs);
  8. }
  9.  

И кажи дали излиза нещо.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html