Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 20:01   #11
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от graymaster Посмотреть сообщение
Дай точную строку запроса (с уже вбитыми значениями), просто результат
подмены
Код:
$sql = mysql_query("INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');");
на
Код:
$q="INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');"; 
var_dump($q);
$sql=mysql_query($q);
И SHOW CREATE TABLE news;
из MySQL
ilushka2306 вне форума Ответить с цитированием
Старый 05.05.2011, 20:19   #12
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Надо обратить внимание на это

Цитата:
Сообщение от freeeeez Посмотреть сообщение
правильно так
Код:
$sql = mysql_query("INSERT INTO 'news' (id,head,text,link,date) VALUES('$id', '$head', '$text', '$link', '$date')");
и на это
Цитата:
Сообщение от 8oOoRPM Посмотреть сообщение
во первых фильтруйте данные, минимум strip_tags() и mysql_real_escape_string()- после, дабы избавится от всяких проблем итд. Для дебага используйте ...or die( mysql_error() )- сразу увидите на что ругаеця зверь
Ошибка скорее всего в запросе тут

Цитата:
INSERT INSERT INTO 'news' VALUES(,овость....
Если вы уже поправили
Код:
$sql = mysql_query("INSERT INTO 'news' VALUES(id, '$he.....
Из
Цитата:
Сообщение от freeeeez Посмотреть сообщение
Код:
mysql_query("INSERT INTO 'news' (id,head,text,link,date) VALUES('$id', '$head', '$text', '$link', '$date')");
Проблема в отсутствии $id. Точнее в том, что он пустой, что следует отсюда

PHP код:
$id $_POST['id']; 
А в форме
Код HTML:
<input type="hidden" name="id">
Т.е. передаётся пустая строка.

Его стоит всё же чем-то заполнить, если у него нет автоинкремента.
Если есть, то стоит это поле вообще из запроса убрать, БД сама его заполнит.

Скорее всего на настоящий момент код у вас такой:
PHP код:
$sql mysql_query("INSERT INTO 'news' VALUES($id, '$head', '$text', '$link', '$date');"); 
было бы неплохо его сменить на

PHP код:
$sql mysql_query("INSERT INTO 'news' (id,head,text,link,date) VALUES('$id', '$head', '$text', '$link', '$date')"); 
или

PHP код:
$sql mysql_query("INSERT INTO 'news' (head,text,link,date) VALUES('$head', '$text', '$link', '$date')"); 
с автоинкрементным id полем в mysql

Последний раз редактировалось graymaster; 05.05.2011 в 20:25. Причина: правка
graymaster вне форума Ответить с цитированием
Старый 05.05.2011, 21:39   #13
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от graymaster Посмотреть сообщение
Дай точную строку запроса (с уже вбитыми значениями), просто результат
подмены
Код:
$sql = mysql_query("INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');");
на
Код:
$q="INSERT INTO 'news' VALUES(id, '$head', '$text', '$link', '$date');"; 
var_dump($q);
$sql=mysql_query($q);
И SHOW CREATE TABLE news;
из MySQL
ilushka2306 вне форума Ответить с цитированием
Старый 05.05.2011, 21:53   #14
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Уже ответил, см. предыдущий пост насчёт пустого айди и правки запроса
graymaster вне форума Ответить с цитированием
Старый 05.05.2011, 22:35   #15
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от graymaster Посмотреть сообщение
Надо обратить внимание на это



и на это


Ошибка скорее всего в запросе тут



Если вы уже поправили
Код:
$sql = mysql_query("INSERT INTO 'news' VALUES(id, '$he.....


Из


Проблема в отсутствии $id. Точнее в том, что он пустой, что следует отсюда

PHP код:
$id $_POST['id']; 
А в форме
Код HTML:
<input type="hidden" name="id">
Т.е. передаётся пустая строка.

Его стоит всё же чем-то заполнить, если у него нет автоинкремента.
Если есть, то стоит это поле вообще из запроса убрать, БД сама его заполнит.

Скорее всего на настоящий момент код у вас такой:
PHP код:
$sql mysql_query("INSERT INTO 'news' VALUES($id, '$head', '$text', '$link', '$date');"); 
было бы неплохо его сменить на

PHP код:
$sql mysql_query("INSERT INTO 'news' (id,head,text,link,date) VALUES('$id', '$head', '$text', '$link', '$date')"); 
или

PHP код:
$sql mysql_query("INSERT INTO 'news' (head,text,link,date) VALUES('$head', '$text', '$link', '$date')"); 
с автоинкрементным id полем в mysql
вот сама таблица
ilushka2306 вне форума Ответить с цитированием
Старый 05.05.2011, 22:39   #16
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию

код на данный момент
PHP код:
<title></title>
    <?php
    
if ($_POST
    {  
        
$head $_POST['head']; 
        
$text =  $_POST['text']; 
        
$link $_POST['link']; 
        
$date $_POST['date']; 
                 
        
$error false
        
$errortext '<p>Подожди!</p><ul>'
         
        if (empty(
$head)) 
        { 
            
$error true
            
$errortext .='<li>А заголовок?</li>'
        } 
         
        if (empty(
$text)) 
        { 
            
$error true
            
$errortext .='<li>А где текст-то?</li>'
        } 
         
        
//$errortext .='</ul>'; 
         
        
if ($error
        { 
            echo (
$errortext); 
        } 
        else 
        { 
            
$dblocation "localhost"
$dbname "site"
$dbuser "root"
$dbpass ""

$dbconnect mysql_connect ($dlbocation$dbuser$dbpass); 
mysql_select_db ($dbname,$dbconnect); 

if (!
$dbconnect

    echo (
"Ошибка! Не возможно подключиться к БД!"); 
    exit(); 

else { 
    if (!@
mysql_select_db($dbname$dbconnect)) 
    { 
        echo(
"<p>Выбранной базы данных не существует!</p>"); 
    } 

                     
        
$sql mysql_query("INSERT INTO 'news' (head,text,link,date) VALUES('$head', '$text', '$link', '$date')");
             
        if (
$sql
        { 
            echo(
'<p>Новость добавлена.</p>'); 
        } 
        
mysql_close($dbconnect); 
        } 
    } 
if ((
$_POST && $error) || !$_POST

    
?> 
    <center> 
        <h2>Добавление новости в БД</h2> 
        <form action="" method="post"> 
        <input type="hidden"> 
        Заголовок: 
        <input type="text" name="head" width="400px" maxlength="200"><br> 
        Текст:<br> 
        <textarea name="text" rows="10" cols="70"></textarea><br> 
        Ссылка:<br> 
        <input type="text" name="link" maxlength="50"><br>  
        <input type="submit" name="add" value="Добавить"> 
        <input type="button" name="cancel" value="Отмена"> 
        </form> 
<?php 

?>
ilushka2306 вне форума Ответить с цитированием
Старый 06.05.2011, 11:27   #17
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

id может принимать отрицательные значения? Где атрибут unsigned?
Вы делаете сайт, который будет работать только в прошлом веке? Почему кодировка не utf-8?

Если вы будете в последствии искать записи по полю `date` (а вы будете искать записи по этому полю), то сделайте это поле индексом.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 06.05.2011, 19:04   #18
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ilushka2306 Посмотреть сообщение
вот сама таблица

...
код на данный момент
PHP код:
....
$sql mysql_query("INSERT INTO 'news' (head,text,link,date) VALUES ...");
.... 
Поля в таблице : tema, text, link, date
Поля в запросе : head, text, link, date

PS: и научитесь вы уже экранировать названия таблиц и полей в запросах - в каждой книжке/статье о SQL вас об этом просят-просят....
Andkorol вне форума Ответить с цитированием
Старый 15.05.2011, 13:34   #19
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию так и ни чего не получается, вот сделал по другому...

PHP код:
<?php  
session_start
();
?> 
<html>
<head>
<title>
</title>
<body>
  <?php
$dblocation 
"localhost"
$dbname "site"
$dbuser "root"
$dbpass ""

$dbconnect mysql_connect ($dlbocation$dbuser$dbpass); 
mysql_select_db ($dbname,$dbconnect); 

if (!
$dbconnect

    echo (
"Ошибка! Не возможно подключиться к БД!"); 
    exit(); 

else { 
    if (!@
mysql_select_db($dbname$dbconnect)) 
    { 
        echo(
"<p>Выбранной базы данных не существует!</p>"); 
    } 


    
$query "SELECT * FROM `forum`";  
    
$res mysql_query$query );
    
    {  
?>
<table width="80%" align="center"><tr><td width="20%">Логин</td><td width="30%">Тема</td><td>Текст</td></tr><tr><td><?php $login ?></td><td><?php $title ?></td><td><?php $text ?></td></tr></table>
<?php
    
}
?>
  <br>
  <?php
if ($_SESSION['login']!='')
{  
    if (
$_POST
    {  
        
$title $_POST['title']; 
        
$text =  $_POST['text']; 
        
$login $_SESSION['login'];
        
$date date("d = F = Y ");
          
        
$error false
        
$errortext '<p>Подожди!</p><ul>'
         
        if (empty(
$title)) 
        { 
            
$error true
            
$errortext .='<li>А заголовок?</li>'
        } 
         
        if (empty(
$text)) 
        { 
            
$error true
            
$errortext .='<li>А где текст-то?</li>'
        } 
         
        
//$errortext .='</ul>'; 
         
        
if ($error
        { 
            echo (
$errortext); 
        } 
        else 
        { 
        
            
$dblocation "localhost"
            
$dbname "site"
            
$dbuser "root"
            
$dbpass ""

        
$dbconnect mysql_connect ($dlbocation$dbuser$dbpass); 
        
mysql_select_db ($dbname,$dbconnect); 

        if (!
$dbconnect
        { 
            echo (
"Ошибка! Не возможно подключиться к БД!"); 
            exit(); 
        } 
        else { 
            if (!@
mysql_select_db($dbname$dbconnect)) 
            { 
                echo(
"<p>Выбранной базы данных не существует!</p>"); 
            } 
        } 
                     
        
$sql mysql_query("INSERT INTO 'forum' (login,title,text,date) VALUES('$login', '$title', '$text', '$date')");
             
        if (
$sql
        { 
            echo(
'<p>Новость добавлена.</p>'); 
        } 
        
mysql_close($dbconnect); 
        } 
    } 
    
?>
          <form action="forum.php" method="post">
        Заголовок: 
        <input type="text" name="title" width="400px" maxlength="200"><br> 
        Текст:<br> 
        <textarea name="text" rows="10" cols="70"></textarea><br> 
        <input type="submit" name="add" value="Написать">
        <input type="reset" value="Очистить">
        </form>
  <?php 
  
}
  else
  {
   
?>
   Вы не можете оставлять свои сообщения, пожалуйста войдите
       <form method="post" action="forum.php">
        <center>
    Логин:
    <input type="text"
        name="login"
        value="">
    Пароль:
    <input type="password"
        name="password"
        value="">
    <input type="submit" name="vhod" value="Вход">
    </center>
    </form>
   <?php
if (($_POST['login'] != '') & ($_POST['password'] != ''))   
    {  
    
$login $_POST['login'];  
    
$password md5($_POST['password']);          
    
$query "SELECT * FROM `users` WHERE login = '$login' AND password='$password' LIMIT 0 , 30";  
    
$res mysql_query$query );  
    if ( 
mysql_num_rows$res ) == )  
    {    
        
$_SESSION['login'] = $_POST['login']; 
    }
    }
?>
или <a href="register.php">зарегистрируйтесь</a>
<?php
  
}
?>
</body>
</html>
ilushka2306 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменные не хотят переприсаиваться (Delphi) Vampire_2008 Помощь студентам 10 17.05.2010 17:10
ХАРДЫ ВМЕСТЕ НЕ ХОТЯТ РАБОТАТЬ ПРАВИЛЬНО... suncity Компьютерное железо 6 30.07.2009 13:05
Divы не хотят себя вести по фэн-шую naeki HTML и CSS 2 30.12.2008 12:28