Проблема с массивами в Php ....

  • Автор темы Kosha1981
  • Дата начала

Kosha1981

Guest
Проблема с массивами в Php ....

Всем доброго времени суток . В Php я новичек , а потому некоторым вопрос может показаться глупым , но тем не менее ...
Есть у меня 2 таблицы в БД - в таблице S содержится информация обо всем имеющимся товаре (по очереди идут порядковый номер ($num), характеристика1 ($name) , характеристика2 ($image), характеристика3 ($modif)) , а в таблице R содержится id пользователя ($id), порядковый номер ($rnum) и ($type) - один из товаров (значение которого соответствует одному из номеров товара ($num) в таблице S)

Вот выборка из таблиц :
PHP:
$query="SELECT * FROM S";
$result=mysql_query($query) or die (mysql_error());
for ( $k=1; $k<=mysql_num_rows($result); $k++ )
{
$fetch=mysql_fetch_array($result);
$num=$fetch['num'];
$name=$fetch['name'];
$image=$fetch['image'];
$modif=$fetch['modif'];
$query1="SELECT * FROM R where id=$used_id";
$result1=mysql_query($query1) or die (mysql_error());
for ( $j=1; $j<=mysql_num_rows($result1); $j++ )
{
$fetch1=mysql_fetch_array($result1);
$type=$fetch1['type'];
$rnum=$fetch1['rnum'];
}
}
Так как в таблице R товаров для одного id может быть несколько , то значит , чтобы все их показать их нужно загнать в массив - я попытался сделать так :
PHP:
$s=0;
$s=s++;
if ($type==$num)
{
$rname[$s]=$name;
$rimage[$s]=$image;
$rmodif[$s]=$modif;
}
echo "$rimage[$s]";
echo "$rname[$s]";
echo "$rmodif[$s]";
Где $rname , $rimage и $rmodif соответственно имя , рисунок и характеристики товара в таблице R ...

У меня это не работает - подскажите , как это правильно реализовать , чтобы на экран выводилась информация обо всем товаре содержащимя в таблице !

С уважением Игорь .
 

Кром

Новичок
Вот так лучше писать:

PHP:
$QUERY = 'SELECT * FROM table';
while ($ROW = mysql_fetch_array($QUERY))
{
	echo $ROW['num'].' '.$ROW['name'].' '.$ROW['image'];	
}
 

Kosha1981

Guest
Кром

Спасибо за ответ !
Возможно вы не поняли , но нужно чтобы при совпадение значения $num таблицы S с значением $type таблицы R все данные о товаре под номером $num выводились ниже - при этом этих совпадений может быть сколько угодно ... и мне нужно , чтобы они выводились гораздо ниже , то есть за пределами выборки из таблицы ...
 

Фанат

oncle terrible
Команда форума
Kosha1981
Во-первых, ты неправильно работаешь с базой, о чем тебе попытался сказать Кром.

во-вторых, ты очень невнятно описал, что ты делаешь.
Если ты исправишься, то тебе скажут, как сделать то, что тебе надо.
К примеру, ты не обхяснил. зачем тебе этот массив
 

Kosha1981

Guest
Фанат

Массив нужен , чтобы вывести все значения принимаемые переменными ($rname , $rimage и $rmodif) - я пытался делать без массивов , но выводилось только одно значение (
 

Кром

Новичок
Kosha1981
Через while выводи. А перед этим убедись, что значений действительно несколько, а не одно.
 

Kosha1981

Guest
Кром

Ну вы же видете Php код - просто обьясните как можно реализовать то о чем я писал выше ...

-~{}~ 08.10.04 21:16:

Кром
PS : И если можно укажите допущенные мною в коде ошибке .
 

Фанат

oncle terrible
Команда форума
извини, код-то мы видим, в от смысла в нем - увы.
Попробуй, все-таки, словами. или у тебя по-русски получается еще хуже, чем на пхп?
Итак.
Тебе нужно вывести две таблицы - так?
Сначала одну, а под ней - вторую?
Первая таблица - это все товары?
А вторая таблица - это что?
 

flipper

Guest
Re: Проблема с массивами в Php ....

Фанат прав, не ясен смысл кода, точнее что ты хотел в итоге получить...

у тебя есть две таблицы S(справочник товаров) и R(???)... а может таблица R это типа кто брал этот товар или заносил что-ли, короче не понятно
просто опиши подробней что за таблицы, и что тебе от них надо
 

Kosha1981

Guest
Таблица S содержит список всех возможных товаров , и один или несколько из них (может быть и по несколько каждого) могут находится в таблице R , но не так как в таблице S (порядковый номер, имя, рисунок, модификакторы ) , а указан номер (type) - и если type в таблице R совпадает с номером (num) в таблице S , то информацию о товаре type в таблице R (совпадающим c num в таблице s) cледует вывести на экран ...
 

bool

Новичок
PHP:
$query = "SELECT * FROM S,R WHERE S.num=R.type";
$result = mysql_query($query);
$num = mysql_num_rows($result);
while($row = mysql_featch_assoc($result)
{
   .....
   //формируеш таблицу
   .....
}
 

Oscar

Новичок
Kosha1981
Если bool, вдруг, не угадал с тем, что вам нужно - опишите проблему лучше в живом виде:
"У Ани есть 2 яблока, у Пети - 3. Почему у Вовочки яблок больше, чем у Ани и Пети вместе взятых?" :)

Таблицы - это прекрасно, но в первом посте говорилось, что таблица R содержит id пользователя. Это вещи, которые пользователь хочет купить?

Какой вывод нужен?

User1
tovar1
tovar2
User2
tovar1
tovar3

Или?
 

Kosha1981

Guest
Oscar

У Ани есть куча товаров и они пронумерованы , а Петя имеет несколько из этих товаров (в коробках) и знает их только по номерам . Помогите Пети узнать какие же товары (название,Вид,характеристики) он имеет ! :)))

bool

Спасибо - попробую !

-~{}~ 09.10.04 15:51:

bool

Не получилось - выводит 1 вид товара , хотя их должно быть 2 в корзине и товар не тот :(
 

advocat

developer
Kosha1981
смотря каким образом реализована связь между пользователем и товаром. Если это отдельная промежуточная таблица, то тебе нужно

[sql]SELECT *.`tbl_goods` FROM `tbl_goods` LEFT JOIN `tbl_svyazi` ON `tbl_goods`.`id` = `tbl_svyazi`.`good_id` WHERE `tbl_svyazi`.`user_id`='$user_id'[/sql]
 

advocat

developer
Kosha1981
а что сдесь неопнятного ?
tbl_goods - таблица с товарами
tbl_svyazi - таблица связи пользователя с товаром (id, tovar_id, polzovatel_id)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: advocat
tbl_svyazi - таблица связи пользователя с товаром (id, tovar_id, polzovatel_id)
поле id в такой таблице заводят только извращенцы.
 

Kosha1981

Guest
advocat

Спасибо , но а дальше что ? Как мне вывести данные на экран или переменные будут иметь те же названия что и в БД ?

-~{}~ 09.10.04 21:07:

Ребята все заработало - сделал все как предложил bool , но почему-то вместо товара под номером 25 в корзине товар под номером 110 - кто-нибудь может обьяснить в чем дело , а PHP код такой :

<table align=right cellspacing=0 cellpadding=0>
PHP:
$query3="SELECT * FROM subjects,rukzak where subjects.num=rukzak.type&&id=$used_id order by rukzak.rnum";
$result3 = mysql_query($query3)or die (mysql_error());
While ($row=mysql_fetch_assoc($result3))
{
echo 
"
<tr>
<td colspan=3><div align=center><font size=3 color=#003300><b>$name</b></font></div></td>
</tr>
";
<tr>
PHP:
echo
"
<td align=center width=80 rowspan=14>$image</td>
";
echo
"
<td align=center><font size=2><b>Характеристики :<b></td>
<td><font size=2><b>$modif</b></font></td>
";
</tr>
 

Oscar

Новичок
Kosha1981
А можно узнать, что это за странные переменные $name, $image, $modif ?
 
Сверху