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

Форум MySQL

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

 

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

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

тема: как вывести определенную строку из таблици?
 
 автор: Be4ep   (27.01.2005 в 12:41)
 
 

сабж...

   
 
 автор: cheops   (27.01.2005 в 12:59)   письмо автору
 
   для: Be4ep   (27.01.2005 в 12:41)
 

Хм... без таблицы сложно что-то сказать... Нужно действовать примерно следующим образом:
<?php
  
// Устанавливаем соединение с базой данных
  
include "config.php";
  
// Формируем SQL-запрос
  
$query "SELECT name FROM tbl WHERE id=24";
  
// Выполняем SQL-запрос
  
$str mysql_query($query);
  if(!
$str) exit("Ошибка в синтаксисе SQL-запроса");
  
// Выводим содержимое поля name
  
echo mysql_resutl($str,0);

Файл config.php должен быть примерно следующего состава
<?php 
    $dblocation 
"localhost"
    
$dbname "ваша база"
    
$dbuser "ваш логин"
    
$dbpasswd "ваш пароль"

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
if (!
$dbcnx) { 
  echo( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" ); 
  exit(); 


if (! @
mysql_select_db($dbname,$dbcnx) ) { 
  echo( 
"<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" ); 
  exit(); 

?>

   
 
 автор: Be4ep   (27.01.2005 в 13:37)
 
   для: cheops   (27.01.2005 в 12:59)
 

я поменял на:

<?php 
  
// Устанавливаем соединение с базой данных 
  
include "config.php"
  
// Формируем SQL-запрос 
  
$query "SELECT * FROM clients WHERE id=1"
  
// Выполняем SQL-запрос 
  
$str mysql_query($query); 
  if(!
$str) exit("Ошибка в синтаксисе SQL-запроса"); 
  
// Выводим содержимое поля name 
  
echo mysql_resutl($str,0); 
?>

имя таблици у меня clients. если не ошибаюсь надо было вставить вместо tbl. но всеравно выдает: "Ошибка в синтаксисе SQL-запроса"

и что означает " WHERE id=1".

я только начал работать с sql ток что не судите строго :)

   
 
 автор: Be4ep   (27.01.2005 в 13:38)
 
   для: Be4ep   (27.01.2005 в 13:37)
 

сначала попробовал по твоему, а потом изменил на WHERE id=1

   
 
 автор: Artemy   (27.01.2005 в 16:07)   письмо автору
 
   для: Be4ep   (27.01.2005 в 13:38)
 

А вообще есть поле(колонка) со названием id в твоей таблице?
Какие есть названия полей(колонок) в таблице?

   
 
 автор: Be4ep   (27.01.2005 в 16:32)
 
   для: Artemy   (27.01.2005 в 16:07)
 

3 колонки: name, email, preferens
что такое id???

   
 
 автор: BAHO   (27.01.2005 в 16:43)   письмо автору
 
   для: Be4ep   (27.01.2005 в 16:32)
 

id - енто номер. Обычно auto_increment. Если тебе надо какую-то конкретную строчку, то надо делать так "where name='$per'" или "where email='$per'" . Хотя в вашей таблице лучше использовать ешё колонку id, обычно она самая первая.

   
 
 автор: cheops   (27.01.2005 в 20:23)   письмо автору
 
   для: Be4ep   (27.01.2005 в 16:32)
 

Если поля id нет нужно писать что-то вроде
<?php 
  
// Устанавливаем соединение с базой данных 
  
include "config.php"
  
// Формируем SQL-запрос 
  
$query "SELECT * FROM clients WHERE name='Be4ep'"
  
// Выполняем SQL-запрос 
  
$str mysql_query($query); 
  if(!
$str) exit("Ошибка в синтаксисе SQL-запроса"); 
  
// Выводим содержимое поля name 
  
echo mysql_resutl($str,0); 
?>

   
 
 автор: Be4ep   (28.01.2005 в 00:05)
 
   для: cheops   (27.01.2005 в 20:23)
 

те нужно указывать параметр из таблици? тогда понятно зачем поле ид.

   
 
 автор: Be4ep   (28.01.2005 в 00:18)
 
   для: cheops   (27.01.2005 в 20:23)
 

а тогда пишет:

Fatal error: Call to undefined function mysql_resutl() in z:\home\test1.ru\www\wiev.php on line 10


само сабой в таблицу в колонку Name я значение вставил

   
 
 автор: cheops   (28.01.2005 в 13:37)   письмо автору
 
   для: Be4ep   (28.01.2005 в 00:18)
 

Хм... поторопился когда писал, исправьте пожалуйста
mysql_resutl

на
mysql_result

   
 
 автор: Be4ep   (28.01.2005 в 14:37)
 
   для: cheops   (28.01.2005 в 13:37)
 

я и сам не заметил :)

ну хорошо параметр из одной колонки вывели, а всю строку таким же образом?
те я должен каждый раз выполнять запрос к определенной калонке?

   
 
 автор: Artemy   (28.01.2005 в 21:24)   письмо автору
 
   для: Be4ep   (28.01.2005 в 14:37)
 

Если я правильно понел, то так!
<?
// Устанавливаем соединение с базой данных 
include "config.php"
// Формируем запрос
$query "SELECT * FROM clients WHERE name = 'Ве4ер'";
// Посылаем запрос к базе данных
$res mysql_query($query);
// Если запрос выполнился выводим данные
if(!$res
  {
   echo 
"Ошибка при обрашении к базе данных!";
   exit;
  }
// Выводим данные
while ( $sql mysql_fetch_array($res))
  {
  echo 
"Имя - $sql['name']<br> e-mail - $sql['email']<br> Preferens- $sql['preferens']";
  }
?>

   
 
 автор: cheops   (28.01.2005 в 23:25)   письмо автору
 
   для: Artemy   (28.01.2005 в 21:24)
 

Да... только строку с выводом от греха лучше в таком виде писать
<?php
echo "Имя - $sql[name]<br> e-mail - $sql[email]<br> Preferens- $sql[preferens]";
?>

   
 
 автор: Artemy   (29.01.2005 в 10:20)   письмо автору
 
   для: cheops   (28.01.2005 в 23:25)
 

А не могли Вы объяснит почему?

   
 
 автор: cheops   (29.01.2005 в 14:09)   письмо автору
 
   для: Artemy   (29.01.2005 в 10:20)
 

Считается что с элементами массивов в строке следует обращаться примерно следующим образом:
<?php 
  $wet
['root'] = "password"
  
// Все записи ниже эквивалентны 
  
echo "Значение элемента массива ".$wet['root']; 
  echo 
"Значение элемента массива $wet[root]"
  echo 
"Значение элемента массива {$wet['root']}"
?>

Но в PHP столько правил и они так плохо документированы, что я не удивлюсь если есть ещё какие-то способы...

   
 
 автор: Artemy   (29.01.2005 в 20:56)   письмо автору
 
   для: cheops   (29.01.2005 в 14:09)
 

Как я понел существенного различия нет!?
Да?

   
 
 автор: Be4ep   (29.01.2005 в 19:30)   письмо автору
 
   для: Artemy   (28.01.2005 в 21:24)
 

вот что вывело :) :
Имя -
e-mail -
Preferens-

а сами значения никак

   
 
 автор: Be4ep   (29.01.2005 в 19:34)   письмо автору
 
   для: Be4ep   (29.01.2005 в 19:30)
 

поправил на:

<? 
  
echo "Имя - $sql[0]<br> e-mail - $sql[1]<br> Preferens- $sql[2]"
?> 

и получилось. понять не могу почему..... :|

   
 
 автор: cheops   (29.01.2005 в 19:46)   письмо автору
 
   для: Be4ep   (29.01.2005 в 19:34)
 

Функция mysql_fetch_array() по умолчанию создаёт смешанный массив в котором все данные продублированы с использованием индексов (0, 1, 2 и т.д. и ассоциативных ключей name, email, preferens и т.д.) поэтому срабатывать должен и такой код:
<?php
  
echo "Имя - $sql[0]<br> e-mail - $sql[1]<br> Preferens- $sql[2]"
?>

и такой
<?php 
echo "Имя - $sql[name]<br> e-mail - $sql[email]<br> Preferens- $sql[preferens]"
?>

Для того, чтобы вывести и значения и ключи всего массива используйте конструкцию
<?php
  print_r
($sql);
?>

   
 
 автор: Be4ep   (29.01.2005 в 23:00)   письмо автору
 
   для: cheops   (29.01.2005 в 19:46)
 

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

   
 
 автор: Be4ep   (29.01.2005 в 19:45)   письмо автору
 
   для: Be4ep   (27.01.2005 в 12:41)
 

ну а вот если с полем ид. то как при добавлении мне узнать какая там последняя.

с полем ид вывести всю таблицу получится что то типа while(!$id)?

   
 
 автор: cheops   (29.01.2005 в 19:50)   письмо автору
 
   для: Be4ep   (29.01.2005 в 19:45)
 

Обычно поле id, снабжают атрибутом auto_increment - тогда при добавлении новой записи если передать ему значение 0 или NULL оно автоматически принимает максимально значение плюс единица - может вам требуется именно это?

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=81

   
 
 автор: Be4ep   (29.01.2005 в 23:04)   письмо автору
 
   для: cheops   (29.01.2005 в 19:50)
 

ну это тоже полезно. только мне надо узнать вот что:
предположим есть таблица:

ид_1
.......(от 1 до 999 неразрывно)
ид_999

я не знаю, что там последняя ид идет под номером 999, так как мне это узнать ее номер

   
 
 автор: cheops   (30.01.2005 в 00:39)   письмо автору
 
   для: Be4ep   (29.01.2005 в 23:04)
 

SELECT MAX(id) AS id FROM tbl;

   
 
 автор: Be4ep   (30.01.2005 в 02:00)   письмо автору
 
   для: cheops   (30.01.2005 в 00:39)
 


<?
include "config.php";
// запрос
$query "SELECT * FROM clients2";
// Выполнить запрос
$res mysql_query($query) or die(mysql_error());
// Получать по одной строке из таблицы в массив $row, пока строки не кончатся
while ($row=mysql_fetch_array($res)) {
  echo 
"Name: ".$row[Name]." Email: ".$row[Email]." Preferens: ".$row[Preferens];
  echo 
"<BR><BR>";
}
?>


можно ли вывести всю таблицу по другому, или только так?

   
 
 автор: Be4ep   (30.01.2005 в 02:17)   письмо автору
 
   для: Be4ep   (30.01.2005 в 02:00)
 

еще можно вот так:

<?
include "config.php";
///////////////////////////////////////////////////////////////
$query_id "SELECT MAX(id) AS id FROM clients2";
$res_id mysql_query($query_id);
if(!
$res_id)
  {
   echo 
"Ошибка при обрашении к базе данных!";
   exit;
  }
// Выводим данные
while ( $sql_id mysql_fetch_array($res_id))
  {
  
$id_max $sql_id[0];
  }
////////////////////////////////////////////////
for ($i=0$i<$id_max$i++) {
$query "SELECT * FROM clients2 WHERE id = $i";
$res mysql_query($query);
if(!
$res)
  {
   echo 
"Ошибка при обрашении к базе данных!";
   exit;
  }
while ( 
$sql mysql_fetch_array($res))
  {
  echo 
"Name: ".$sql[Name]." Email: ".$sql[Email]." Preferens: ".$sql[Preferens];
  echo 
"<BR><BR>";
  }
}
?>


но это слишком длинно, если не ошибаюсь здесь можно на страницы выводить определенное количество строк, чего нельзя сделать в первом варианте

   
 
 автор: cheops   (30.01.2005 в 14:02)   письмо автору
 
   для: Be4ep   (30.01.2005 в 02:00)
 

Ну вместо функции mysql_fetch_array() можно использовать другие функции, но смысл остаётся тот же... можно сначала узнать число записей, а потом выводить в цикле for, а не while... А чем вас этот вариант не устраивает?

http://www.softtime.ru/group/id_group=2

   
 
 автор: Be4ep   (30.01.2005 в 15:54)   письмо автору
 
   для: cheops   (30.01.2005 в 14:02)
 

просто мне интересно сколько может быть вариантов

   
Rambler's Top100
вверх

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