Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка SQL-запроса при помощи PHP
 
 автор: DreadfulS   (17.10.2006 в 13:14)   письмо автору
 
 

есть простая таблица типа
table
id_name
name
data

теперь вопрос, как построить запрос к БД что бы данные из неё открывались в окне с адресом типа http://site/inf.php?name=вася

   
 
 автор: cheops   (17.10.2006 в 14:04)   письмо автору
 
   для: DreadfulS   (17.10.2006 в 13:14)
 

Для этого можно воспользоваться примерно таким скриптом
<?php
  
// Экранируем спец-символы
  
if (!get_magic_quotes_gpc()) $_GET['name'] = mysql_escape_string($_GET['name']);
  
$query "SELECT * FROM tbl WHERE name = '$_GET[name]'";
  
$tbl mysql_query($query);
  if(
mysql_num_rows($tbl))
  {
    while(
$table mysql_fetch_array($tbl))
    {
       echo 
$table['table']."<br>"
       
echo $table['id_name']."<br>"
       
echo $table['name']."<br>"
       
echo $table['date']."<br>"
    
}
  }
?>

   
 
 автор: DreadfulS   (17.10.2006 в 20:01)   письмо автору
 
   для: cheops   (17.10.2006 в 14:04)
 

попробывал сделать по образу и подобию:
таблица client
id_client int(11) auto_increment
name tinytext
data text
pos int(11) 0


файлы записи
addinf.php

<?php
  
// соединение с БД
  
require_once("../config.php");
  if(!isset(
$_POST['name'])) links($_POST['id_name'], "нет наименования");
  
// замена кавычек
  
$_POST['name'] = str_replace("'","`",$_POST['name']);
  
$_POST['data'] = str_replace("'","`",$_POST['data']);
  
// запрос
  
$query "INSERT INTO client VALUES (
            NULL,
            '"
.$_POST['name']."',
            '"
.$_POST['data']."',
            "
.$_POST['table'].",
            "
.$_POST['pos'].",
            "
.$_POST['id_name'].")";
  if(
mysql_query($query)) {
          
  } else 
puterror("ошибка добавления");
?>

addinfform.php

<?php
  
///////////////////////////////////////////////////


  // Устанавливаем соединение с базой данных
  
require_once("../config.php");
  if(!isset(
$button)) $button "Добавить";
  if(!isset(
$action)) $action "addinf.php";
  
// Если позиция товарной позиции не передана
  // назначаем ей последнюю позицию
  
if(!isset($pos))
  {
    
$query "SELECT MAX(pos) FROM client
              WHERE id_name="
.$_GET['id_name'];
    
$num mysql_query($query);
    if(
$num$pos mysql_result($num,0) + 1;
  }
?>

<form action=<?php echo $action?> method=post>
<table>
<tr><td><p class=zag2>Наименование</td><td><input size=19 class=input type=text name=name value='<?php echo $name?>'></td></tr>
<tr><td><p class=zag2>Данные</td><td><input size=19 class=input type=text name=data value='<?php echo $data?>'></td></tr>
<tr><td><p class=zag2>табле</td><td><input size=19 class=input type=text name=table value='<?php echo $table?>'></td></tr>
<tr><td><p class=zag2>Позиция</td><td><input size=3 class=input type=text name=pos value='<?php echo $pos?>'></td></tr>
<tr><td></td><td><input class=button type=submit value=<?php echo $button?>></td></tr>
</table>
</form>


фаил просмотра данных
inf.php

<?php 
  
// Экранируем спец-символы 
  
if (!get_magic_quotes_gpc()) $_GET['name'] = mysql_escape_string($_GET['name']); 
  
$query "SELECT * FROM client WHERE name = '$_GET[name]'"
  
$client mysql_query($query); 
  if(
mysql_num_rows($client)) 
  { 
    while(
$table mysql_fetch_array($client)) 
    { 
       echo 
$table['table']."<br>" 
       
echo $table['id_name']."<br>" 
       
echo $table['name']."<br>" 
       
echo $table['date']."<br>" 
    

  } 
?>



выдаёт ошибку записи в БД
а если посмотреть имеющееся в БД то просто выдаёт пустой лист
в чём моя ошибка? если можно по подробнее
заранее спасибо.

   
 
 автор: cheops   (17.10.2006 в 21:45)   письмо автору
 
   для: DreadfulS   (17.10.2006 в 20:01)
 

Измените строку
<?php
  
} else puterror("ошибка добавления");
?>

на
<?php
  
} else puterror("ошибка добавления - ".mysql_error);
?>

Что теперь выводится?

   
 
 автор: DreadfulS   (17.10.2006 в 23:09)   письмо автору
 
   для: cheops   (17.10.2006 в 21:45)
 

ошибка добавления - mysql_error

   
 
 автор: cheops   (18.10.2006 в 00:46)   письмо автору
 
   для: DreadfulS   (17.10.2006 в 23:09)
 

Извиняюсь, поторопился :))) конечно же я имел в виду функцию mysql_error()
<?php 
  
} else puterror("ошибка добавления - ".mysql_error()); 
?>

   
 
 автор: DreadfulS   (18.10.2006 в 09:20)   письмо автору
 
   для: cheops   (18.10.2006 в 00:46)
 

ошибка добавления - 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 ' , )' at line 5(7) - в зависимости от заполнения полей

   
 
 автор: cheops   (18.10.2006 в 11:31)   письмо автору
 
   для: DreadfulS   (18.10.2006 в 09:20)
 

У вас передаются не все параметры - в этом можно убедиться, если вы выведите запрос в окно браузера
<?php
  
echo $query;
?>

   
 
 автор: DreadfulS   (18.10.2006 в 15:56)   письмо автору
 
   для: cheops   (18.10.2006 в 11:31)
 

хм... передаю все, но передаются не все, тогда вопрос, играет ли роль в каком порядке передаются поля из формы в БД или нет, поскольку порядок записи и порядок полей в БД разнятся?

   
 
 автор: cheops   (18.10.2006 в 16:41)   письмо автору
 
   для: DreadfulS   (18.10.2006 в 15:56)
 

Нет при использовании SELECT-запроса порядок следования полей не имеет значения, в INSERT-запросе имеет (однако синтаксис запроса позволяет его переопределить).

   
 
 автор: DreadfulS   (18.10.2006 в 18:13)   письмо автору
 
   для: cheops   (18.10.2006 в 16:41)
 

с внесением данных в БД разобрался, а вот первоначальный вопрос остался тёмной лошадкой

<?php  
  
// Экранируем спец-символы  
  
if (!get_magic_quotes_gpc()) $_GET['name'] = mysql_escape_string($_GET['name']);  
  
$query "SELECT * FROM client WHERE name = '$_GET[name]'";  
  
$client mysql_query($query);  
  if(
mysql_num_rows($client))  
  {  
    while(
$table mysql_fetch_array($client))  
    {  
       echo 
$table['table']."<br>"  
       
echo $table['id_name']."<br>"  
       
echo $table['name']."<br>"  
       
echo $table['data']."<br>"  
    
}  
  }  
?>

так и не работает:(
http://site/inf.php?name=(что то там) выдаёт пустую страницу, хотя все данные в БД имеются

   
 
 автор: cheops   (18.10.2006 в 22:48)   письмо автору
 
   для: DreadfulS   (18.10.2006 в 18:13)
 

После запроса
<?php
 $client 
mysql_query($query);
?>

добавьте проверку
<?php
 $client 
mysql_query($query);
 if(!
$client) exit("Ошибка - ".mysql_error()."<br>Запрос - ".$query);
?>

Что теперь выводится?

   
 
 автор: DreadfulS   (18.10.2006 в 23:17)   письмо автору
 
   для: cheops   (18.10.2006 в 22:48)
 

вообще ничего, так же пустая страница
сама ссылка запроса
http://dreadfuls.ru/Site/admin/catalog/inf.php?name=admin
таблица в базе client
table | id_name | name | data
таблица 1 admin данные

давайте разберём на примере вашего форума
файл info.php

<?php
   
// Устанавливаем соединение с базой данных
  
require_once("config.php");
   
// Извлекаем информацию из строки запроса
  
$id_author $_GET['id_author'];
  
$id_forum $_GET['id_forum'];
  if(!
preg_match("|^[\d]+$|",$id_author)) exit();
  if(!
preg_match("|^[\d]+$|",$id_forum) && !empty($id_forum)) exit();
  
// Извлекаем информацию о посетителе
  
$query "SELECT * FROM authors 
            WHERE id_author=
$id_author";
  
$ath mysql_query($query);
  if(
$ath)
  {
    
$author mysql_fetch_array($ath);
    
?>
    <p class=linkbackbig><a href="javascript: history.back()">Вернуться назад</a></p>   
    <?php
  
} else puterror("Ошибка при обращении к базе авторов");
?>

например $ath = mysql_query($query); почему $ath, откуда он взялся не пойму?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования