[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: БЫДЛО код
Andruhaphp
Как заменить вот это быдлокод,кто подскажет???
$res = mysql_query("SELECT `name1`,`name2`,`name3`,`name4`,`name5`,`price1`,`price2`,`price3`,`price4`,`price5` FROM `galery` WHERE `user_id`='$id' ");
$row = mysql_fetch_assoc($res);
$name1=$row['name1'];
$name2=$row['name2'];
$name3=$row['name3'];
$name4=$row['name4'];
$name5=$row['name5'];
$price1=$row['price1'];
$price2=$row['price2'];
$price3=$row['price3'];
$price4=$row['price4'];
$price5=$row['price5'];



Спустя 4 минуты, 11 секунд (27.02.2011 - 21:46) Lenarfate написал(а):
$res = mysql_query("SELECT * FROM `galery` WHERE `user_id`='$id' ");
$row = mysql_fetch_assoc($res);

и выводишь где нужно определенные переменные. где нужно $row['name1'], где нужно $row['price2'] и тп

Спустя 2 минуты, 55 секунд (27.02.2011 - 21:49) Andruhaphp написал(а):
а вот это циклом никак нельзя заменить
$name1=$row['name1'];
$name2=$row['name2'];
$name3=$row['name3'];
$name4=$row['name4'];
$name5=$row['name5'];
$price1=$row['price1'];
$price2=$row['price2'];
$price3=$row['price3'];
$price4=$row['price4'];
$price5=$row['price5'];

Спустя 48 секунд (27.02.2011 - 21:50) Snus написал(а):
Andruhaphp
$res = mysql_query("SELECT `name1`,`name2`,`name3` FROM `galery` WHERE `user_id`='".mysql_real_escape_string($id)."' ") or die(mysql_error());
list($name1,$name2,$name3) = mysql_fetch_array($res);

Можно так еще.

Спустя 32 минуты, 1 секунда (27.02.2011 - 22:22) andyp написал(а):
Если сильно нужно циклом, то можно:


foreach ($row as $k=>$v) {
$$k = $v;
}


Цитата
list($name1,$name2,$name3) = mysql_fetch_array($res);

По умолчанию, тип массива у mysql_fetch_array смешанный, то есть там будут не только числовые индексы, а конструкция list ожидает числовой. Поэтому, правильней:
list($name1,$name2,$name3) = mysql_fetch_array($res, MYSQL_NUM);


Спустя 11 часов, 24 минуты, 33 секунды (28.02.2011 - 09:47) linker написал(а):
list($name1, $name2, $name3) = mysql_fetch_row($res);

Спустя 9 минут, 33 секунды (28.02.2011 - 09:56) Snus написал(а):
Цитата (Snus @ 27.02.2011 - 18:50)
list($name1,$name2,$name3) = mysql_fetch_array($res);

Цитата (andyp @ 27.02.2011 - 19:22)
list($name1,$name2,$name3) = mysql_fetch_array($res, MYSQL_NUM);

Цитата (linker @ 28.02.2011 - 06:47)
list($name1, $name2, $name3) = mysql_fetch_row($res);

Нет принципиальной разницы wink.gif

Спустя 22 минуты, 40 секунд (28.02.2011 - 10:19) linker написал(а):
Разница есть по крайней мере в первом варианте отдается смешанный массив: обычный и ассоциативный, list() тут не проканает. mysql_fetch_row() тут в самый раз.

Спустя 7 минут, 23 секунды (28.02.2011 - 10:26) Snus написал(а):
linker
А вот ты бы взял, да проверил прежде, чем утверждать wink.gif

Спустя 1 час, 37 минут, 9 секунд (28.02.2011 - 12:04) andyp написал(а):
Конструкция list работает с числовыми массивами, поэтому либо
mysql_fetch_array($res, MYSQL_NUM);
либо
mysql_fetch_row($res)
,что одинаково.


Snus включите отображение ошибок уровня NOTICE и проверьте

$a = array('a'=>'1', 'b'=>'2');
list($a1,$a2) = $a;



Хотя не спорю, что Ваш пример не будет выводить сообщений об ошибках

Спустя 22 минуты, 42 секунды (28.02.2011 - 12:26) Snus написал(а):
andyp
Ну-ну smile.gif А в случае с mysql_fetch_array, list будет забирать только числовые ключи. Ну впрочем вариант linker'а правильнее, но это не столь принципиально wink.gif

Спустя 3 минуты, 29 секунд (28.02.2011 - 12:30) andyp написал(а):
Да но это только потому что все числовые ключи на месте

Спустя 6 секунд (28.02.2011 - 12:30) twin написал(а):
Я вот только не пойму, зачем переназначать переменные... Чем не угодила эта форма
$row['name1']
зачем обязтельно
$name1

Ну а коли приспичило, есть такая штука, как extract()

Спустя 6 часов, 16 минут, 22 секунды (28.02.2011 - 18:46) inpost написал(а):
$i = 1;
$row['name'.$i];

ну а дальше циклом for

Спустя 5 часов, 56 минут, 22 секунды (1.03.2011 - 00:43) Andruhaphp написал(а):
Вот так
for ($i=1;$i<6;$i++)
{
$name.$i =$row['name'.$i];
} ?

Спустя 41 минута, 58 секунд (1.03.2011 - 01:25) inpost написал(а):
Andruhaphp
зачем их инициализировать? Что мешает тебе напрямую с $row['name1'] работать???

Спустя 10 часов, 11 минут, 9 секунд (1.03.2011 - 11:36) Andruhaphp написал(а):
да.ничего не мешает

Спустя 28 минут, 31 секунда (1.03.2011 - 12:04) andyp написал(а):
так Вы присвоите только те элементы массива, которые начинаются с name.

А с помощью explode, list или если уж сильно надо циклом
foreach ($row as $k=>$v) {
$$k = $v;
}
присвоятся все.
Но как правильно здесь говорилось, это делать незачем (разве что дальше эти переменные повсюду используются и Вам не хочется их везде заменять).
Быстрый ответ:

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