[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите сделать
BzenkoSergey
Доброе время суток, делаю скрипт по выводу новостей, новости выводит в цикле правильно а вот категории повторяет.

В базе 2-ве таблицы в каждой по две записи.
cat - id, name
post - id, cat, text
В ячейку cat таблицы post загоняется id ячейки c таблицы cat

Мне нужно чтобы выводило новость и отдельно её категорию тоесть информацию что в ячейки name с таблице cat.
Сам код такой.
<?php
$post_result = mysql_query("SELECT * FROM post", $db);
$post = mysql_fetch_array($post_result);

$postcat = $post['cat'];

$cat_result = mysql_query("SELECT * FROM cat WHERE id = $postcat", $db);
$cat = mysql_fetch_array($cat_result);

do {
printf ("<p>%s</p><p>%s</p>", $post['text'], $cat['name']);
}
while ($post = mysql_fetch_array($post_result));
?>


Подскажите как реализовать.



Спустя 5 минут, 1 секунда (20.11.2009 - 21:14) John_761 написал(а):
Почитай здесь
А потом про синтаксис SELECT'a в гугле...

Спустя 5 минут, 57 секунд (20.11.2009 - 21:20) BzenkoSergey написал(а):
Цитата (John_761 @ 20.11.2009 - 18:14)
Почитай здесь
А потом про синтаксис SELECT'a в гугле...

Спасибо!

Спустя 3 часа, 37 минут, 41 секунда (21.11.2009 - 00:58) BzenkoSergey написал(а):
Подскажите как в один цикл вывести данные из 4-х таблиц, в гугле нечего не нашел по данной теме.

<?php
$post_result = "SELECT * FROM `post`";
$post = mysql_query($post_result) or die(mysql_error() ."<br/>". $post_result);

$cat_result = "SELECT * FROM `cat`";
$cat = mysql_query($cat_result) or die(mysql_error() ."<br/>". $cat_result);

$country_result = "SELECT * FROM `country`";
$country = mysql_query($country_result) or die(mysql_error() ."<br/>". $country_result);

$sity_result = "SELECT * FROM `sity`";
$sity = mysql_query($sity_result) or die(mysql_error() ."<br/>". $sity_result);

while ($post_news = mysql_fetch_assoc($post))
{
$table .="<div class='post-m'>";
$table .="<div class='news-title'><h2><a href='".$post_news['id']."'>".$cat['name'].$post_news['h1']."</a>";
$table .="</h2></div>";
$table .="<div class='news-country'>";
$table .="<a href='".$country['id']."'><img src='tpl/images/country/".$country['img']."' /></a>";
$table .="<a href='".$sity['id']."'>".$sity['name']."</a>";
$table .="</div>";
$table .="<div class='poster'><a href='".$post_news['id']."'><img src='".$post_news['poster']."' /></a></div>";
$table .="<div class='text'>".$post_news['short-story']."</div>";
$table .="<div class='dop-info'>";
$table .="<p class='sps'>благодарностей<b>".$post_news['sps-num']."</b></p>";
$table .="<p class='ppc'>жалоб<b>".$post_news['ppc-num']."</b></p>";
$table .="<p class='rat'>рейтинг<b>".$post_news['rat-num']."</b></p>";
$table .="<p class='comm'>отзывов<b>".$post_news['comm-num']."</b></p>";
$table .="<p class='view'>просмотров<b>".$post_news['view-num']."</b></p>";
$table .="</div>";
$table .="</div>";
$table .="<br />";
}
echo $table;
?>

Спустя 2 часа, 33 минуты, 19 секунд (21.11.2009 - 03:31) BzenkoSergey написал(а):
появилась идея объединить масив со всех переменных в одну, и вывести результат в цикле, вот проблемка руководясь тому что здесь написано ссылка переделал запросы, и составил вот такой код
<?php
define("HOST","localhost");
define("USER","root");
define("PASS","1");
define("DB","5");


$link = mysql_connect(HOST,USER,PASS) or die (mysql_error());
mysql_select_db(DB, $link);
mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

$post_result = "SELECT * FROM `post`";
$post = mysql_query($post_result) or die(mysql_error() ."<br/>". $post_result);

$cat_result = "SELECT * FROM `cat`";
$cat = mysql_query($cat_result) or die(mysql_error() ."<br/>". $cat_result);

$all['name'] = $cat['name'];
$all['short-story'] = $post['short-story'];


echo "hshsjj".$all['short-story']."hdsh".$all['name']."sdh";

?>

только он не выводит не каких данных с переменных

вот старый код он работает
<?php
$bd_user = "root";
$bd_pass = "1";
$bd_bd = "5";
$bd_host = "localhost";


$db = mysql_connect($bd_host, $bd_user, $bd_pass);
mysql_select_db($bd_bd, $db);
mysql_query( "SET NAMES cp1251" );
mysql_query( "SET CHARACTER SET cp1251");
mysql_query( "SET SESSION collation_connection = cp1251_general_ci");


$post_result = mysql_query("SELECT * FROM post", $db);
$post = mysql_fetch_array($post_result);

$cat_result = mysql_query("SELECT * FROM cat", $db);
$cat = mysql_fetch_array($cat_result);

$all['name'] = $cat['name'];
$all['short-story'] = $post['short-story'];


echo "hshsjj".$all['short-story']."hdsh".$all['name']."sdh";

?>


подскажите пожалуйста что исправить в 1-м варианте что-бы вывело информацию, или лучше воспользоваться 2-м (старым кодом) вариантом?

Спустя 5 минут, 59 секунд (21.11.2009 - 03:37) John_761 написал(а):
В 1м варианте ты не получаешь данные из запроса
mysql_fetch_array()

А что ты вобще хочешь сделать? Что в тех 4х таблицах?

Спустя 6 минут (21.11.2009 - 03:43) BzenkoSergey написал(а):
Цитата (John_761 @ 21.11.2009 - 00:37)
В 1м варианте ты не получаешь данные из запроса
mysql_fetch_array()

А что ты вобще хочешь сделать? Что в тех 4х таблицах?

в первой "Клуб" во второй "текст" структура varchar

нужно чтобы в echo вывело информацию полученную в результате приравнивания переменных $all[]

Спустя 6 минут, 11 секунд (21.11.2009 - 03:49) John_761 написал(а):
А, не дочитал smile.gif
Не проще сделать одну таблицу с 4мя полями id, name, text, cat ?

Спустя 5 минут, 25 секунд (21.11.2009 - 03:55) BzenkoSergey написал(а):
Цитата (John_761 @ 21.11.2009 - 00:49)
А, не дочитал  smile.gif
Не проще сделать одну таблицу с 4мя полями id, name, text, cat ?

это упрощённый пример чтоб кода много не было, нужно именно так, мне нужно с нескольких запросов вытащить данные по определённым ячейкам и прировнять их к другой переменном так как while обрабатывает в цикле только одину переменную

может я не прав насчёт while но впихнуть в него несколько переменных у меня не получилось

Спустя 13 минут, 13 секунд (21.11.2009 - 04:08) John_761 написал(а):
А, понял smile.gif У тебя 2 таблицы, в одной новости, в другой категории новостей. И ты каждой новости присваиваешь категорию. Если мой мозг правильно понял то:

 
$sql = "SELECT `post`.`id`, `post`.`text`, `cat`.`name` FROM `post`, `cat` WHERE `post`.`cat` = `cat`.`id`";

$result = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($result)) :

echo $row['text']; // Выведет текст новости
echo $row['name']; // И ее категорию

endwhile;

Спустя 2 минуты, 10 секунд (21.11.2009 - 04:10) BzenkoSergey написал(а):
Именно то что нужно огромнейшое тебе спасибо!!!!!!!!

Спустя 1 день, 18 часов, 33 минуты, 50 секунд (22.11.2009 - 22:44) BzenkoSergey написал(а):
Подскажите как вывести информацию с запроса

<?php
$post_sql = "SELECT * FROM post, cat, country, sity WHERE post.cat = cat.id and post.country = country.id and post.sity = sity.id";
$post = mysql_query($post_sql) or die(mysql_error());

$m = $post['country'];

echo "($m)";

while ($post_result = mysql_fetch_assoc($post)) :

echo $post_result['poster']; // Выведет новость
echo $post_result['cat']; // И ее категорию

endwhile;
?>


echo "($m)"; - выводит "()" информацию с переменно не выводит или её там нет, подскажите как вывести

Спустя 1 час, 15 минут, 36 секунд (23.11.2009 - 00:00) S{oRpiO написал(а):
echo $m;

Спустя 3 минуты, 26 секунд (23.11.2009 - 00:03) Joker написал(а):
Цитата (BzenkoSergey @ 23.11.2009 - 01:44)
$post = mysql_query($post_sql) or die(mysql_error());

$m = $post['country'];



Вообще так делать нельзя.

Для начала нужно, преобразовать запрос, а после уже использовать данные из него.

тобишь как ты уже после начал делать:


<?php
$post_sql = "SELECT * FROM post, cat, country, sity WHERE post.cat = cat.id and post.country = country.id and post.sity = sity.id";
$post = mysql_query($post_sql) or die(mysql_error());


while ($post_result = mysql_fetch_assoc($post)) :

echo $post_result['country']; // Выведет страну
echo $post_result['poster']; // Выведет новость
echo $post_result['cat']; // И ее категорию

endwhile;

Спустя 3 минуты, 46 секунд (23.11.2009 - 00:07) S{oRpiO написал(а):
Напиши вот так...


<?php
$post_sql = "SELECT * FROM post, cat, country, sity WHERE post.cat = cat.id and post.country = country.id and post.sity = sity.id";
$rez = mysql_query($post_sql) or die(mysql_error());
$post = mysql_fetch_array ($rez);
$m = $post['country'];

echo $m;

while ($post_result = mysql_fetch_assoc($post)) :

echo $post['poster']; // Выведет новость
echo $post['cat']; // И ее категорию

endwhile;
?>

Спустя 5 минут, 50 секунд (23.11.2009 - 00:13) Joker написал(а):
Цитата (S{oRpiO @ 23.11.2009 - 03:07)
Напиши вот так...


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

Спустя 14 минут, 32 секунды (23.11.2009 - 00:27) S{oRpiO написал(а):
это не мой код это код человека который и просит помощи я только дописал нехватающие

Спустя 39 минут, 52 секунды (23.11.2009 - 01:07) Joker написал(а):
Цитата (S{oRpiO @ 23.11.2009 - 03:27)
просит помощи я только дописал нехватающие


Ты дописал так что раньше не работало только вывод страны а теперь весь цикл т.к.

в этих строчках

$rez = mysql_query($post_sql) or die(mysql_error());
$post = mysql_fetch_array ($rez);


ты преобразуешь запрос в массив и после записываешь в переменную $post

После в цикле ты используешь перменную опять $post а в ней не результат запроса а массив со значениями первой строки запроса.

вот:

while ($post_result = mysql_fetch_assoc($post))

Спустя 17 часов, 51 минута, 44 секунды (23.11.2009 - 18:59) BzenkoSergey написал(а):
Цитата (S{oRpiO @ 22.11.2009 - 21:07)
Напиши вот так...


<?php
$post_sql = "SELECT * FROM post, cat, country, sity WHERE post.cat = cat.id and post.country = country.id and post.sity = sity.id";
$rez = mysql_query($post_sql) or die(mysql_error());
$post = mysql_fetch_array ($rez);
$m = $post['country'];

echo $m;

while ($post_result = mysql_fetch_assoc($post)) :

          echo $post['poster']; // Выведет новость
          echo $post['cat']; // И ее категорию

endwhile;
?>

теперь с циклом проблема

<?php

$post_sql = "SELECT * FROM post, cat, country, sity WHERE post.cat = cat.id and post.country = country.id and post.sity = sity.id";
$rez = mysql_query($post_sql) or die(mysql_error());

$post = mysql_fetch_array ($rez);
$m = $post['country'];
echo $m;

while ($post_result = mysql_fetch_assoc($post)) :

echo $post_result['poster']; // Выведет новость
echo $post_result['cat']; // И ее категорию

endwhile;
?>


Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\5\shortstory.php on line 10

ругается на while ($post_result = mysql_fetch_assoc($post)) :

если изменить на while ($post_result = mysql_fetch_assoc($rez))
в цикле вообще не какой информации не выводит

Спустя 1 час, 7 минут, 32 секунды (23.11.2009 - 20:06) Kuliev написал(а):
BzenkoSergey
Конечно проблема, функции не передан аргумент!

Спустя 19 минут, 9 секунд (23.11.2009 - 20:25) BzenkoSergey написал(а):
подскажите как правильно сделать

Спустя 36 минут, 32 секунды (23.11.2009 - 21:02) Kuliev написал(а):
Цитата (BzenkoSergey @ 23.11.2009 - 22:25)
подскажите как правильно сделать


<?php

$post_sql = "SELECT * FROM post, cat, country, sity WHERE post.cat = cat.id and post.country = country.id and post.sity = sity.id";
$rez = mysql_query($post_sql) or die(mysql_error());

/*
$post = mysql_fetch_array ($rez);
$m = $post['country'];
echo $m;
*/


while ($post_result = mysql_fetch_assoc($rez))
{
echo $post_result['poster']; // Выведет новость
echo $post_result['cat']; // И ее категорию

}
?>

Спустя 11 минут, 8 секунд (23.11.2009 - 21:13) BzenkoSergey написал(а):
а чтобы можно было выводить данные помимо цикла ?

Спустя 2 минуты, 24 секунды (23.11.2009 - 21:16) Kuliev написал(а):
Цитата (BzenkoSergey @ 23.11.2009 - 23:13)
а чтобы можно было выводить данные помимо цикла ?

А если немного подумать?

Спустя 16 минут, 40 секунд (23.11.2009 - 21:32) Kuliev написал(а):
BzenkoSergey

Вот держи, надеюсь то что вы хотели

<?php

$sql = "SELECT *
FROM `post`, `cat`, `country`, `sity`
WHERE `post`.`cat` = `cat`.`id`
AND `post`.`country` = `country`.`id`
AND `post`.`sity` = `sity`.`id`"
;

$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);

/*
$post = mysql_fetch_array ($rez);
$m = $post['country'];
echo $m;
*/

$flag = 0;

while ($row = mysql_fetch_assoc($result))
{
if($flag == 0)
{
echo $country = $row['country']; // Выведет город
$flag = 1;
}

echo $row['poster']; // Выведет новость
echo $row['cat']; // И ее категорию

}


?>

Спустя 43 минуты, 9 секунд (23.11.2009 - 22:15) BzenkoSergey написал(а):
спасибо, я новенький в php пытался сам сделать но не получилось, подскажите как быть ели в базе в 2-х таблицах есть поле "name" и данные в них хранятся разные, можно с одним запросом к бд выводить по желанию данные из одной таблицы или из другой?
Быстрый ответ:

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