[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос к БД
Akmal
Здравствуйте.
У меня такая проблема: написал гостевую книгу, но она не работает. Проблема в том, что не заносятся данные в базу данных.
Не буду утомлять комментариями, просто приведу исходный код :

PHP
<!-- блок отображения сообщений-->
<?php
$server
="database";
$pass="ZgESNqVX ";
$user="tuitkar8";
$DB="tuitkar8";
mysql_connect($server,$user,$pass) or die ("Нет соединения с MySQL сервером!");
mysql_query ("CREATE DATABASE IF NOT EXISTS ".$DB) or die ("Не могу создать базу данных gb.");
mysql_select_db($DB);
mysql_query ("CREATE TABLE IF NOT EXISTS  a (
   id int(10) unsigned NOT NULL auto_increment,
   dt datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
   name varchar(100) NOT NULL,
   theme varchar(100),
   email varchar(100),
   message text NOT NULL,
   PRIMARY KEY (id))"
) or die ("Не могу создать таблицу gb2.");
   
$c=0;
$r=mysql_query ("SELECT * FROM a ORDER BY dt DESC"); // выбор всех записей из БД, отсортированных так, что самая последняя отправленная запись будет всегда первой.
    
while ($row=mysql_fetch_array($r))  // для каждой записи организуем вывод.
    
{
        if (
$c%2)
            
$col="bgcolor='#f9f9f9'";    // цвет для четных записей
        
else
            
$col="bgcolor='#f0f0f0'";    // цвет для нечетных записей
            
            
?>
            <table border="0" cellspacing="3" cellpadding="0" width="90%" <? echo $col?> >
            <tr>
                <td width="150" ><b>Имя:</b></td>
                <td><?php echo $row['name']; ?></td>
            </tr>
            <tr>
                <td width="150" ><b>E-mail:</b></td>
                <td><?php echo $row['email']; ?></td>
            </tr>
            <tr>
                <td width="150" ><b>Тема:</b></td>
                <td><?php echo $row['theme']; ?></td>
            </tr>
            <tr>
                <td width="150" style="color: #000000;">Дата:</td>
                <td><?php echo $row['dt']; ?></td>
            </tr>    
            
            <tr>
                <td colspan="2" style="color: #000000;">---------------------------------------------------------------</td>
            </tr>        
            <tr>
                <td colspan="2">
                    <?php echo $row['message']; ?>
                    <br><hr>
                </td>
            </tr>
            
            </table>       
<?php
        $c
++;
    }
    
    
    if (
$c==0// если ни одной записи не встретилось
        
echo "Гостевая книга пуста!<br>";


И скрипт, отвечающий за добавление записей:

PHP
<?
$server="database";
$pass="ZgESNqVX ";
$user="tuitkar8";
$DB="tuitkar8";
mysql_connect($server,$user,$pass) or die ("Нет соединения с MySQL сервером!");
mysql_select_db($DB);
mysql_query("Insert into tuitkar8(dt,name, email, theme,  message) 
VALUES (now(),'$name', $email,'$theme','$message')"
);
mysql_close();


При открытии гостевой выводится форма и надпись, что гостевая пуста. При добавлении записи ничего не происходит. При попытки просмотра таблицы на сервере выдаётся такая ошибка:

Цитата
Ошибка

SQL-запрос: Документация

SELECT COUNT( * ) AS `Ряды` , `dt`
FROM `a`
GROUP BY `dt`
ORDER BY `dt`
LIMIT 0 , 30

Ответ MySQL: Документация
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '"y"a^u` , `dt` FROM `a` GROUP BY `dt` ORDER BY `dt`
LIMIT 0, 30'


Я не совсем уверен, но мне кажется у меня ошибка с форматом даты.
Подскажите пожалуйста решение, ибо мучаюсь с этой гостевой уже долгое время.
Заранее спасибо.



Спустя 13 часов, 5 минут, 15 секунд (17.09.2009 - 13:19) Guest написал(а):
AS 'Ряды'
change to:
AS `rows` <- only english letters allowed

Спустя 17 часов, 11 минут, 53 секунды (18.09.2009 - 06:30) Акмаль написал(а):
Блин, неужели никто не поможет?

Спустя 1 час, 57 минут, 36 секунд (18.09.2009 - 08:28) sergeiss написал(а):
Цитата (Акмаль @ 18.09.2009 - 07:30)
Блин, неужели никто не поможет?

А ты читать умеешь, что тебе уже ответили? Или надо обязательно показать пальцем на ответ?
Цитата (Guest @ 17.09.2009 - 14:19)
AS 'Ряды'
change to:
AS `rows` <- only english letters allowed




Спустя 1 час, 29 минут, 31 секунда (18.09.2009 - 09:58) Акмаль написал(а):
sergeiss, я понял, что написал товарищ Гость. Что надо слово ряды поменять на слово rows. Но дело в том, что в моём коде слова "ряды" нет подавно.
И сама эта ошибка выдаётся программой PHPMyAdmin.

Спустя 18 минут, 10 секунд (18.09.2009 - 10:16) sergeiss написал(а):
Цитата (Акмаль @ 18.09.2009 - 10:58)
Но дело в том, что в моём коде слова "ряды" нет подавно.

Ага, я понял!!! Ты показываешь абстрактный код, и предлагаешь проявить телепатические способности, чтобы увидеть твой реальный код? biggrin.gif Я правильно понял?

Спустя 2 часа, 12 минут, 42 секунды (18.09.2009 - 12:28) Акмаль написал(а):
Слушай, чувак
вот раз:
PHP
<?php
Error_Reporting
(E_ALL & ~E_NOTICE);
?>

<html>
<head><meta http-equiv="content type" content="text/html; charset=windows-1251"></head>
<body bgcolor="#BDB76B">
<?include "verh.php";?>

<table border="1" rules=cls bordercolor="#B8860B" cellpadding="5"
       cellspacing"0" width=96% height="173" align="center" >
       
<tr>
 <th width="50"><center></center></th>
 <th width="67"><center></center></th>
 <th width=7%></th>
</tr>
<tr>  
  <? include 'zagolovok.php';?></th>
  <th width="67"><center><font size=4>Гостевая книга</font></center>  </th>
</tr>
<tr>
 <td height=10%></td>  
 <td width="449" border="1" rowspan="100">&nbsp;
    <table border="1" bordercolor="#000000" bgcolor="#CD853F" cellpadding="3" cellspacing"0"
       width=80% height="268" align="center" valign="top"><tr><td>&nbsp;
       
       <!-- блок отображения сообщений-->
<?php
$server
="database";
$pass="ZgESNqVX ";
$user="tuitkar8";
$DB="tuitkar8";
mysql_connect($server,$user,$pass) or die ("Нет соединения с MySQL сервером!");
mysql_query ("CREATE DATABASE IF NOT EXISTS ".$DB) or die ("Не могу создать базу данных gb.");
mysql_select_db($DB);
mysql_query ("CREATE TABLE IF NOT EXISTS  a (
   id int(10) unsigned NOT NULL auto_increment,
   dt datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
   name varchar(100) NOT NULL,
   theme varchar(100),
   email varchar(100),
   message text NOT NULL,
   PRIMARY KEY (id))"
) or die ("Не могу создать таблицу gb2.");
   
$c=0;
$r=mysql_query ("SELECT * FROM a ORDER BY dt DESC LIMIT 15"); // выбор всех записей из БД, отсортированных так, что самая последняя отправленная запись будет всегда первой.
    
while ($row=mysql_fetch_array($r))  // для каждой записи организуем вывод.
    
{
        if (
$c%2)
            
$col="bgcolor='#f9f9f9'";    // цвет для четных записей
        
else
            
$col="bgcolor='#f0f0f0'";    // цвет для нечетных записей
            
            
?>
            <table border="0" cellspacing="3" cellpadding="0" width="90%" <? echo $col?> >
            <tr>
                <td width="150" ><b>Имя:</b></td>
                <td><?php echo $row['name']; ?></td>
            </tr>
            <tr>
                <td width="150" ><b>E-mail:</b></td>
                <td><?php echo $row['email']; ?></td>
            </tr>
            <tr>
                <td width="150" ><b>Тема:</b></td>
                <td><?php echo $row['theme']; ?></td>
            </tr>
            <tr>
                <td width="150" style="color: #000000;">Дата:</td>
                <td><?php echo $row['dt']; ?></td>
            </tr>    
            
            <tr>
                <td colspan="2" style="color: #000000;">---------------------------------------------------------------</td>
            </tr>        
            <tr>
                <td colspan="2">
                    <?php echo $row['message']; ?>
                    <br><hr>
                </td>
            </tr>
            
            </table>       
<?php
        $c
++;
    }
    
    
    if (
$c==0// если ни одной записи не встретилось
        
echo "Гостевая книга пуста!<br>";
?>
   
<br>
<!-- форма отправки сообщения -->
<!-- проверка заполнения формы -->
<script>
function splash()
{
    if (document.myForm.username.value  =='')
        {
            alert ("Заполните имя пользователя!");
            return false;    
        }
        
    if (document.myForm.msg.value  =='')
        {
            alert ("Заполните текст сообщения!");
            return false;    
        }
    
    return true;   
}
</script>
<!-- код формы -->
<table border="1" bordercolor="#000000" bgcolor="#CD853F" cellpadding="3" cellspacing"0"
       width="47" height="268" align="center">
<form name="myForm" action="add.php" method="post" onSubmit="return splash();">
<input type="hidden" name="action" value="add">

    <tr>
        <td width="20%">
            Имя:
        </td>
        <td>
            <input name="name" size="40" style="width: 300px;">
        </td>
    </tr>
    
    <tr>
        <td width="20%">
            E-mail:
        </td>
        <td>
            <input name="email" size="40" style="width: 300px;">
        </td>
    </tr>
    
    <tr>
        <td width="20%">
            Тема:
        </td>
        <td>
            <input name="theme" size="40" style="width: 300px;">
        </td>
    </tr>    
    
    <tr height="165">
        <td valign="top">
            Сообщение:
        </td>
        <td width="80%">
            <textarea name="message" cols="40" rows="8" wrap=hard style="width: 300px;"></textarea>
        </td>
    </tr>        
    <tr>
        <td>&nbsp;</td>
        <td><p align="left"><input type="submit" value="Отправить сообщение"> </p> </td>
    </tr>
</form>
</table>
<center><i>Поля, отмеченные звездочкой (*) обязательны к заполнению.</i></center>
</table>
</td></tr>
<tr>    
<? include 'menu.php';?>
</tr>
</table>
<br><br><br><br><br>
<?include "copyright.php"?>

</body>
</html>
</body>   


и два:

PHP
<?
$server="database";
$pass="ZgESNqVX ";
$user="tuitkar8";
$DB="tuitkar8";
mysql_connect($server,$user,$pass) or die ("Нет соединения с MySQL сервером!");
mysql_select_db($DB);
mysql_query("Insert into tuitkar8(dt,name, email, theme,  message) 
VALUES (now(),'$name', $email,'$theme','$message')"
);
mysql_close();


где нужно заменить слово ряды на rows? Можешь не упражняться в остороумии а просто показать/объяснить?

Спустя 13 минут, 32 секунды (18.09.2009 - 12:42) S{oRpiO написал(а):
У меня пару вопросов ты этот код сам писал??? если да то с тебя програм никакой

делай простые проверки после запросов такие как

echo mysql_error();
echo mysql_errno();

и читай документацию код простой исправить его имея исходники дело 5 минут.

Спустя 16 минут, 20 секунд (18.09.2009 - 12:58) sergeiss написал(а):
Цитата (Akmal @ 17.09.2009 - 01:13)
При открытии гостевой выводится форма и надпись, что гостевая пуста. При добавлении записи ничего не происходит. При попытки просмотра таблицы на сервере выдаётся такая ошибка:

Код
Ошибка

SQL-запрос: Документация

SELECT COUNT( * ) AS `Ряды` , `dt`
FROM `a`
GROUP BY `dt`
ORDER BY `dt`
LIMIT 0 , 30

Ответ MySQL: Документация
#1064 - You have an error in your SQL syntax.Check the manual that corresponds to your MySQL server version for the right syntax to use near '"y"a^u` , `dt` FROM `a` GROUP BY `dt` ORDER BY `dt`
LIMIT 0, 30'



Акмаль - во-первых, если ты хочешь, чтобы тебе помогли, то уважай собеседников. Иначе тебе никто ничего отвечать (по делу) не будет.
Во-вторых, в первоначальном твоем посте указано, что у тебя выдается ошибка в запросе, в котором есть слово 'Ряды', используемое как алиас для полученного столбца.
В-третьих, это как раз ты сам определись, где у тебя это слово присутствует. Потому что ошибка указывается на него, а в твоем тексте его больше нигде нету.
В-четвертых, изучать всю твою "портянку" кода у меня нету ни времени, ни желания. Как и у многих других форумчан. Тем более, при неуважительном отношении.

Спустя 4 минуты, 18 секунд (18.09.2009 - 13:03) S{oRpiO написал(а):
Полностью солидарен с предыдущим оратором.

Спустя 56 минут, 24 секунды (18.09.2009 - 13:59) Акмаль написал(а):
S{oRpiO , я взял исходник и немного переделал его под свои нужды. В исходнике было сказано заранее сделать таблицу. Мне же нужно, чтобы она создавалась автоматически. Кое что изменил, отсюда и ошибки.

sergeiss , ну вообще-то никакого неуважения я не выказывал. Это как раз ты язвил и острил направо и налево. Уверен, опытному программеру понадобится всего пару минут, чтобы найти ошибку. А если тебе это в лом зачем вообще писать в этой теме?

Цитата
В-третьих, это как раз ты сам определись, где у тебя это слово присутствует. Потому что ошибка указывается на него, а в твоем тексте его больше нигде нету.


В том то и дело, что я не понимаю, откуда вообще взялось это слово.

Спустя 14 минут, 32 секунды (18.09.2009 - 14:14) sergeiss написал(а):
Цитата (Акмаль @ 18.09.2009 - 14:59)
Уверен, опытному программеру понадобится всего пару минут, чтобы найти ошибку. А если тебе это в лом зачем вообще писать в этой теме?

Для того, чтобы найти ошибку, надо как минимум видеть исходный текст.
ОК, текст есть.
1. Видим ошибку, указание на неправильный синтаксис в SQL-запросе.
2. Есть такой запрос в твоем коде? Нету.
3. Это значит, что ты указал не тот код, где на самом деле ошибка выскакивает.
4. Ищи, где у тебя на самом деле формируется и вызывается этот запрос, в котором содержится слово 'Ряды'.
5. Никто это не сможет сделать за тебя, да никто и не будет это делать. Потому что "кривой" код есть только у тебя, а ты пока даже не понял, в чем ошибка. Ты же показываешь какой-то другой код, в котором ЭТОЙ ошибки нету и быть не может. Я пытаюсь направить твою мысль так, чтобы ты сам подумал.
6. Я, как и любой другой форумчанин, могу помочь. При условии, что человек сам думает и сам делает. Наилучшая помощь - это направить мысль человека в правильную сторону. Опять же, при условии, что он этого хочет.

Если это твой "нормальный" стиль общения:
Цитата (Акмаль @ 18.09.2009 - 14:59)
ну вообще-то никакого неуважения я не выказывал
Цитата (Акмаль @ 18.09.2009 - 13:28)
Слушай, чувак .... Можешь не упражняться в остороумии а просто показать/объяснить?

то тогда да, ты не высказывал неуважения к собеседнику smile.gif

PS. Может быть, что проблемный запрос - часть какого-то триггера в БД.

Спустя 10 минут, 23 секунды (18.09.2009 - 14:24) glock18 написал(а):
Акмаль
Ищи и обрещешь. Если ошибка выводится, значит так оно есть.

Пока - читая этот топик 10 секунд потратить жалко.

Цитата
sergeiss , ну вообще-то никакого неуважения я не выказывал


это чтобы отбросить вопросы:
1.
Цитата
Не буду утомлять комментариями, просто приведу исходный код :

потом идет большая партянка кода. спасибо, только вчитываться нее не так интересно, как прочитать две строки комментариев с описанием проблемы.

2. ответ вам:
Цитата
AS 'Ряды'
change to:
AS `rows` <- only english letters allowed

а потом ваш
Цитата
Блин, неужели никто не поможет?

ну конечно. осталось перевести только.

3.
Цитата
Слушай, чувак
вот раз:

Потом еще партянка кода. Не удивлюсь, если та же.
Удивительное проявление уважения и того, как ты ценишь чужое время.

4.
Цитата
Можешь не упражняться в остороумии а просто показать/объяснить?

еще одно проявление уважения.

опять же могу отметить вот это:
Цитата
И сама эта ошибка выдаётся программой PHPMyAdmin.


А теперь спрашивается:
На кой кому-то давать исходный код твоей гостевухи, если ошибка вываливается в PHPMA?!

Спустя 4 часа, 18 минут, 53 секунды (18.09.2009 - 18:43) Акмаль написал(а):
sergeiss , честно, я не понимаю твоих претензий, ты ведь так сказать "первый начал". При чём градус моих ответов на твои не слишком вежливые посты был намного ниже. В них было раздражение, но никак не "неуважение". Но возможно это только разница в восприятии. Забудем об этом.

Цитата
1. Видим ошибку, указание на неправильный синтаксис в SQL-запросе.
2. Есть такой запрос в твоем коде? Нету.
3. Это значит, что ты указал не тот код, где на самом деле ошибка выскакивает.


Моя гостевуха состоит из двух файлов. Текст обоих я привёл в данном топике.
Получается проблема в серваке?

И ещё. Моя цель состоит не просто в том, чтобы написать гостевую книгу и забыть про неё. И даже если кто-то вручит мне готовый код, я буду разбираться в нём, пока не пойму что к чёму.
---------------------------------------
Я нашёл одну ошибку - в файле add.php стояло неправильное название таблицы. Исправил. На данный момент положение таково:
При добавлении новой записи в гостевой появляется новый пост, однако он не содержит введённых значений. Попросту выводится пустое сообщение, без имени, темы и самого сообщения.

glock18,
Цитата
На кой кому-то давать исходный код твоей гостевухи, если ошибка вываливается в PHPMA?!


Я думал они связаны. Ладно, а как тогда можно исправить эту ошибку, если не через код?

И последний вопрос:
прочитал в одной книжке, что количество значений в скобках
PHP
mysql_query("Insert into a(dt,name, email, theme,  message) 
VALUES (now(),'$name', '$email','$theme','$message')"
);


должно соответствовать количеству столбцов в таблице. Вместе с ключевым id у меня в таблице 6 столбцов, в запросе выше - 5. Возможно ошибка в этом? Каким образом включить id в этот список?



Спустя 34 минуты, 19 секунд (18.09.2009 - 19:17) Акмаль написал(а):
Вот ещё: оказывается PHPMyAdmin выдаёт ту ошибку при попытке промотреть уникальное значение одного поля. Но показывает таблицу целиком. И в таблице нет других значений, кроме даты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.