За последние 24 часа нас посетили 18714 программистов и 1661 робот. Сейчас ищут 925 программистов ...

помогите найти ошибку

Тема в разделе "PHP для новичков", создана пользователем writer, 13 сен 2012.

  1. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Код (Text):
    1. <?php include 'lock.php'; ?>
    2. <?php
    3. //проверки полей на кол-во символов
    4.  
    5.  
    6. $author = mysql_real_escape_string($_POST['author']);
    7. $text = mysql_real_escape_string($_POST['text']);
    8. $text2 = mysql_real_escape_string($_POST['text2']);
    9. $name = mysql_real_escape_string($_POST['name']);
    10. $link = mysql_real_escape_string($_POST['link']);
    11. $for = mysql_real_escape_string($_POST['for']);
    12. $keywords = mysql_real_escape_string($_POST['keywords']);
    13. $keywordsmain = mysql_real_escape_string($_POST['keywordsmain']);
    14. $description = mysql_real_escape_string($_POST['description']);
    15.  
    16.  
    17. $db_host='127.0.0.1';// ваш адрес где находится, хостится ваша база данных
    18.     $db_login='root';// логин доступ к базе данных
    19.     $db_pass='';// пароль доступа к базе данных
    20.     $db_name='asy';// Имя базы данных с которой вы хотите работать, так как их может быть множество
    21.     $db = mysql_connect($db_host,$db_login,$db_pass);
    22.         if(!$db) echo 'Ошибка подключения'; // Нужно быть уверенным, что подключение удачно
    23.     mysql_select_db($db_name);
    24.  
    25. $result = mysql_query("INSERT INTO `stat` (name,text,text2,author,link,status,for,keywords,keywordsmain,description)
    26. VALUES('$name','$text','$text2','$author','$link','0','$for','$keywords','$keywordsmain','$description')");
    27.  
    28. if($result) {
    29.     echo '<script type="text/javascript">
    30.    window.close();
    31. </script>';
    32. } else {
    33.     echo
    34.    
    35.    
    36.     'Запись не обновлена';
    37. }
    38.  
    39. ?>

    все данные приходят из формы. таблица верно написана(имя). все поля в правильном порядке и по написанию тоже верно. Статус должен уходить 0. вот все уже проверил но не могу найти ошибку.
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Он и уходит

    А вот остальное не правильно... исправь

    Код (Text):
    1. $result = mysql_query("INSERT INTO `stat` (name,text,text2,author,link,status,for,keywords,keywordsmain,description)
    2. VALUES($name,$text,$text2,$author,$link,'0',$for,$keywords,$keywordsmain,$description)");
     
  3. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    не добавляется...
    как узнать где косяк ???
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    mysql_error()
     
  5. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    не выдает ошибок...
     
  6. Superk

    Superk Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    32
    Симпатии:
    0
    Берешь запрос
    echo $query = "INSERT INTO `stat` (name,text,text2,author,link,status,for,keywords,keywordsmain,description)
    VALUES('$name','$text','$text2','$author','$link','0','$for','$keywords','$keywordsmain','$description')";
    открываешь свой любимый mysql client, делаешь его напрямую, отлаживаешь запрос там же.
     
  7. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    INSERT INTO `stat` (name,text,text2,author,link,status,for,keywords,keywordsmain,description) VALUES('7','7','7','7','7','0','3','7','7','7')
    Notice: Undefined variable: result in I:\site\admin\newstataction.php on line 27
    Запись не обновлена
     
  8. Superk

    Superk Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    32
    Симпатии:
    0
    ты не понял, я предлагаю воспользоваться чем-то типа Navicat, и сделать этот запрос напрямую в базу, чтобы посмотреть, что выдает mysql.

    на всякий случай, писать нужно
    echo mysql_error();
    а не просто mysql_error();
     
  9. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    ну я посмотрел как показывает пхпадмин как послать запрос на добавление. сделал...в итоге как бы ошибки то и нет но и не добавляет...

    Добавлено спустя 4 минуты 32 секунды:
    Код (Text):
    1. <?php include 'lock.php'; ?>
    2. <?php
    3. //проверки полей на кол-во символов
    4.  
    5.  
    6. $author = mysql_real_escape_string($_POST['author']);
    7. $text = mysql_real_escape_string($_POST['text']);
    8. $text2 = mysql_real_escape_string($_POST['text2']);
    9. $name = mysql_real_escape_string($_POST['name']);
    10. $link = mysql_real_escape_string($_POST['link']);
    11. $for = mysql_real_escape_string($_POST['for']);
    12. $keywords = mysql_real_escape_string($_POST['keywords']);
    13. $keywordsmain = mysql_real_escape_string($_POST['keywordsmain']);
    14. $description = mysql_real_escape_string($_POST['description']);
    15.  
    16.  
    17. $db_host='127.0.0.1';// ваш адрес где находится, хостится ваша база данных
    18.     $db_login='root';// логин доступ к базе данных
    19.     $db_pass='';// пароль доступа к базе данных
    20.     $db_name='asy';// Имя базы данных с которой вы хотите работать, так как их может быть множество
    21.     $db = mysql_connect($db_host,$db_login,$db_pass);
    22.         if(!$db) echo 'Ошибка подключения'; // Нужно быть уверенным, что подключение удачно
    23.     mysql_select_db($db_name);
    24. $result = ("INSERT INTO `stat`(`name`, `text`, `text2`, `author`, `link`, `status`, `for`, `keywords`, `keywordsmain`, `description`)
    25. VALUES ('$name','$text','$text2','$author','$link','0','$for','$keywords','$keywordsmain','$description',)");
    26.  
    27. if($result) {
    28. echo mysql_error();
    29.     echo '<script type="text/javascript">
    30.    window.close();
    31. </script>';
    32. } else {
    33.     echo
    34.    
    35.    
    36.     'Запись не обновлена';
    37. }
    38.  
    39. ?>
    вот скрипт


    Код (Text):
    1. <?php include 'lock.php'; ?>
    2. <html>
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    5.  
    6. <link rel="stylesheet" type="text/css" href="..\main.css" />
    7. <style type="text/css">
    8. table{
    9. margin-top:2%;   
    10. }
    11. input{
    12. -moz-border-radius: 5px;
    13. -webkit-border-radius: 5px;
    14. border-radius: 5px;
    15. }
    16.         </style>
    17.        
    18.  
    19.  
    20.  
    21. </head>
    22.  
    23. <body>
    24.  
    25. <?php
    26. $db_host="127.0.0.1";   // обычно не нужно изменять
    27. $db_user="root";    // имя пользователя БД
    28. $db_password="";    // пароль БД
    29. $db_name = "asy";  // имя БД
    30. $table_name = "stat";   // имя таблицы статистики
    31.  
    32.  
    33. // соединение с БД
    34. mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
    35. mysql_select_db($db_name) or die (mysql_error());
    36.  
    37. echo '<form  action="newstataction.php" method="post" >  
    38. <p style="margin-top:15%;" align="center">Вводите ваши данные:</p>';
    39.  
    40. $tr = '<tr><td>';
    41. $trc = '</td></tr>';
    42. $td = '</td><td>';
    43. $status = '0';
    44. echo
    45. '<h2><p align="center" style="color:red;">Перед вставкой проверить на кол-во симолов! При ошибке окно закроется с потерей данных!</p></h2><table>'
    46. .$tr.'Название'.$td.'<input  type="text" name="name"  title="" >20'.$td.$trc
    47. .$tr.'Текст'.$td.'<textarea name="text"  title="" ></textarea>7500</td><td>'.$trc
    48. .$tr.'Текст2'.$td.'<input type="text" name="text2"  title="status" >100'.$td.$trc
    49. .$tr.'Автор'.$td.'<input type="text" name="author"  title="status" >100'.$td.$trc
    50. .$tr.'Источник'.$td.'<input type="text" name="link"  title="status" >100'.$td.$trc
    51. .$tr.'Ключи'.$td.'<input type="text" name="keywords"  title="status" >100'.$td.$trc
    52. .$tr.'тип новости'.$td.'<select  size="1" name="for">
    53.    <option  selected>Тип товара</option>
    54.    <option value="1">Общая</option>
    55.    <option value="2">для монтажников</option>
    56.    <option value="3">для предпринимателей</option>
    57.    <option value="4">для клиента</option>  
    58.    </select>'.$td.$trc
    59. .$tr.'Ключи главные'.$td.'<input type="text" name="keywordsmain"  title="status" >25'.$td.$trc
    60. .$tr.'Вторичные ключи'.$td.'<input type="text" name="description"  title="status" >25'.$td.$trc
    61.  .'</table><input name="submit" type="submit" value="New News" /> ';
    62.  
    63.  
    64.  
    65.  ?>
    66.  
    67.  
    68. </form>  
    69.  
    70. </body>
    71. </html>

    вот форма

    Добавлено спустя 5 минут 44 секунды:
    вроде ниче сложного же. я уже этот скрипт раз 5 использовал и работает. тут раз не редактирует и не добавляет...странно
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (Text):
    1. $result = mysql_query("INSERT INTO `stat` (name,text,text2,author,link,status,for,keywords,keywordsmain,description)
    2. VALUES('$name','$text','$text2','$author','$link','0','$for','$keywords','$keywordsmain','$description')");
    ==>
    Код (PHP):
    1. $result = mysql_query("INSERT INTO `stat`
    2.     (`name`, `text`, `text2`, `author`, `link`, `status`,
    3.     `for`, `keywords`, `keywordsmain`, `description`) 
    4. VALUES
    5.     ('$name', '$text', '$text2', '$author', '$link', '0',
    6.     '$for', '$keywords', '$keywordsmain', '$description')"); 
    Т.е. возьми названия столбцов в косые кавычки - такие же, как и те, которыми окружено название таблицы.
     
  11. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    sobachnikб, алилуя!!! да ты прав))) как я затупил опять то?

    Добавлено спустя 2 минуты 47 секунд:
    тогда еще вопрос по редактированию..если это не будет считаться наглостью))
    Код (Text):
    1. <?php include 'lock.php'; ?>
    2. <?php
    3. // данные доступа к базе данных
    4. $db_host = '127.0.0.1';
    5. $db_login = 'root';
    6. $db_pass = '';
    7. $db_name = 'asy';
    8. $table = 'stat';
    9. $db = mysql_connect($db_host, $db_login, $db_pass) or exit(mysql_error());
    10. mysql_select_db($db_name, $db) or exit(mysql_error());
    11.  
    12.  
    13. $id = (int)$_GET["id"];
    14. if(!$id)
    15.     exit('ID не указан!');
    16.  
    17. $sql = "UPDATE `stat` SET
    18.     `author` = '" . mysql_real_escape_string($_POST['author'], $db) . "',
    19.     `text` = '" . mysql_real_escape_string($_POST['text'], $db) . "',
    20.     `text2` = '" . mysql_real_escape_string($_POST['text2'], $db) . "',
    21.     `name` = '" . mysql_real_escape_string($_POST['name'], $db) . "',
    22.     `keywords` = '" . mysql_real_escape_string($_POST['keywords'], $db) . "',
    23.       `keywordsmain` = '" . mysql_real_escape_string($_POST['keywordsmain'], $db) . "',
    24.     `link` = '" . mysql_real_escape_string($_POST['link'], $db) . "',
    25.     `for` = '" . mysql_real_escape_string($_POST['for'], $db) . "',
    26.     `status` = '" . mysql_real_escape_string($_POST['status'], $db) . "',
    27.     `description` = '" . mysql_real_escape_string($_POST['description'], $db) . "'
    28. WHERE `id` = {$id}";
    29.  
    30. $res = mysql_query($sql, $db) or exit(mysql_error());
    31.  
    32.  
    33. if($res) {
    34.  
    35.     echo '<script type="text/javascript">
    36.    window.close();
    37.  
    38. </script>';
    39. } else {
    40.     echo 'Запись не обновлена';
    41. }
    42.  
    43. ?>

    Код (Text):
    1. <?php include 'lock.php'; ?>
    2. <html>
    3. <head>
    4. <script>
    5. function closeWindow()
    6. {
    7.    if(false == popupWindow.closed)
    8.    {
    9.       popupWindow.close ();
    10.    }
    11.    else
    12.    {
    13.       alert("sms");
    14.    }
    15. }
    16. </script>
    17. </head>
    18. <body>
    19.  
    20. <?php
    21. $db_host="127.0.0.1";   // обычно не нужно изменять
    22. $db_user="root";    // имя пользователя БД
    23. $db_password="";    // пароль БД
    24. $db_name = "asy";  // имя БД
    25. $table_name = "stat";   // имя таблицы статистики
    26.  
    27.  
    28.  
    29.  
    30. // соединение с БД
    31. mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
    32. mysql_select_db($db_name) or die (mysql_error());
    33.  
    34. //Преобразование в безопасные символы
    35.  
    36.  
    37. $id = (int)$_GET["id"];
    38.  
    39.     $soo = mysql_query("SELECT * FROM `stat` WHERE `id` = '$id'");
    40.     $kol = mysql_num_rows($soo);
    41.     for ($i=0; $i <= 0; $i++) {
    42.         $kol2 = mysql_fetch_assoc($soo);
    43.         if($kol2['for'] == 1) // Статус заявки выполнен
    44.      {
    45.      $grey='color:black;';
    46.            $selected = '<select size="1" name="status">
    47. <option value="1" selected>Общая</option>
    48. <option value="2">для монтажника</option>
    49. <option value="3">для предпринимателя</option>
    50. <option value="4">для клиента</option>
    51. </select>';
    52.      }
    53.       elseif ($kol2['for'] == 2){
    54.      $grey='color:darkgrey;';
    55.     $selected = '<select size="1" name="status">
    56. <option value="1" >Общая</option>
    57. <option value="2" selected>для монтажника</option>
    58. <option value="3">для предпринимателя</option>
    59. <option value="4">для клиента</option>
    60. </select>';
    61. }
    62. elseif ($kol2['for'] == 3){
    63.      $grey='color:darkgrey;';
    64.     $selected = '<select size="1" name="status">
    65. <option value="1">Общая</option>
    66. <option value="2">для монтажника</option>
    67. <option value="3" selected>для предпринимателя</option>
    68. <option value="4">для клиента</option>
    69. </select>';
    70. }
    71. elseif ($kol2['for'] == 4){
    72.      $grey='color:darkgrey;';
    73.     $selected = '<select size="1" name="status">
    74. <option value="1">Общая</option>
    75. <option value="2">для монтажника</option>
    76. <option value="3">для предпринимателя</option>
    77. <option value="4" selected>для клиента</option>
    78. </select>';
    79. }
    80.         echo '<form  action="stataction.php" method="post" >  
    81. <p style="margin-top:15%;" align="center">Вводите ваши данные:</p>';
    82.  
    83. $tr = '<tr><td>';
    84. $trc = '</td></tr>';
    85. $td = '</td><td>';
    86. $status = '0';
    87.  
    88.  
    89.         echo $kol2['id'].'</br>
    90.         <table><form method="post" action="stataction.php?id=' . $kol2['id'] . '">
    91.         <tr style="'.$grey.'"><td>Автор : </td><td><input type="text" style="width:40px; "name="author" value="'.$kol2['author'].'" ></input></br></br></td></tr>
    92.         <tr><td style="'.$grey.'">Заголовок :</td><td><input type="text" name="name" value="'.$kol2['name'].'" ></input></br></br></br></td></tr>
    93.         <tr><td style="'.$grey.'">Текст новости : </td><td><textarea  maxlength="7500" wrap="soft" name="text" value="'.strip_tags($kol2['text']).'" >'.strip_tags($kol2['text']).'
    94.         </textarea></br></br></br></td></tr>
    95.         <tr><td style="'.$grey.'">Текст новости : </td><td><textarea  maxlength="7500" wrap="soft" name="text2" value="'.strip_tags($kol2['text2']).'" >'.strip_tags($kol2['text2']).'
    96.         </textarea></br></br></br></td></tr>
    97.         <tr><td>link : </td><td><input type="text" name="link" value="'.$kol2['link'].'" ></input></br></br></br></td></tr>
    98.         <tr><td>Ключи : </td><td><input type="text" name="keywords"  value="'.$kol2['keywords'].'" ></input></br></br></br></td></tr>
    99.         <tr><td>вторые ключи : </td><td><input type="text" name="description" value="'.$kol2['description'].'" ></input></br></br></br></td></tr>
    100.         <tr><td>тип : </td><td></br>'.$selected.'</input></br></td></tr>
    101.         <tr><td>_</td><td>_</td></tr>
    102.         <tr><td></td><td><a onClick="JavaScript:closeWindow();"><input onClick="JavaScript:closeWindow();" type="submit" value="Редактировать" /></a></td></tr></form></table>
    103.         </body>
    104.         </html>';
    105.         }
    106.        
    107.        
    108.         ?>
    выдает что нет id хотя в окне следуещее пере отправкой данных
    http://127.0.0.1/index/admin/prosstat.php?id=2

    ошибка
    Notice: Undefined index: id in I:\site\admin\stataction.php on line 13
    ID не указан!
     
  12. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Имелось в виду "перед"? Если так - то какая разница, что там в окне перед отправкой данных? Важно, куда эти данные отправляются :) В случае простой отправки формы - это тот адрес, который прописан в атрибуте action у тега form.
     
  13. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Код (Text):
    1. <form method="post" action="stataction.php?id=' . $kol2['id'] . '">
    ну вот эта строка..отправляет данную..

    Добавлено спустя 1 минуту 48 секунд:
    дамп в скрипте уже пишет что не существует ее. значит ли это что я ее не вытащил из адресной стоки?
     
  14. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А перед этим, на 80-й строке у тебя
    Код (Text):
    1.       echo '<form  action="stataction.php" method="post" >
    Попробуй убрать.
     
  15. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Notice: Undefined index: for in I:\site\admin\stataction.php on line 25
    Incorrect integer value: '' for column 'for' at row 1

    теперь такая ерунда...

    по моей логике когда я писал то выводятся данные со статусом например. и исходя из того какой селектед то выводить нужную форму...
    я дублировал просто ее для поля for и щас он говорит мне что не передано ей значение?
     
  16. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    У тебя нету инпута с атрибутом name="for". Возможно, это должно быть здесь?
    И ещё. Вот это что такое?
    Код (PHP):
    1. for ($i=0; $i <= 0; $i++) { 
    :D
     
  17. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    вот я тупень. пока свое сообщение еще раз не прочитал не понял что в name="" не сменил статус на фор))) всем спасибо огромное! если бы не вы я бы еще долго сидел и корячился это раз а во вторых приятно осознавать что в беде не юросят. только благодаря форуму этому я стал хоть как то разбиратся в пхп! даже свой скрипт написал ))) кстати не самый легкий по логике)

    Добавлено спустя 1 минуту 14 секунд:
    Код (Text):
    1. for ($i=0; $i <= 0; $i++) {
    по этому поводу я тоже долго не понимал но работает)) и ладно)
    одна из заповедей програмиста - работает - не трожь!
     
  18. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    :D
    Ну работать то будет, но зачем?)
    Вообще нет никакого смысла в этом.

    Ну так еще мона:
    Код (PHP):
    1. mysql_query("INSERT INTO `stat` SET `name`='".$name."',`text`='".$text."',,,,,,,,,");