Вывод данных из БД посредством цикла
1.
ШЕДЕВР (02.11.2012 / 20:43)
Привет! У меня в базе хранятся 10 фотографий юзера, и храню их я в поле: photo1,photo2...photo10... Фотки загружаются, динамично удаляются, перемещаются... В итоге получается что не обязательно там 10 фоток и не обязательно они идут 1,2,3,4...10..
Вывожу я их вот таким образом..:
if($cardata[photo1]){echo'<img alt="" src="/image/big/'.$cardata[photo1].'" />';}
if($cardata[photo2]){echo'<img alt="" src="/image/big/'.$cardata[photo2].'" />';}
и так до 10ти...
ЧТобы не писать 10 раз иф иф иф... нельзя это через цикл провести изначально проверив СКОЛЬКО фотографий и пустить по этой сумме цикл... Помогите реализовать
2.
Серега (02.11.2012 / 20:57)
если у тебя имена полей похожие, то можно сделать цикл с $i и проверять существование фото 'photo'.$i
3.
Николай (02.11.2012 / 20:58)
считай кол-во не пустых ячеек в бд
дальше через for выводи нужное кол-во фоток
4.
Серега (02.11.2012 / 20:59)
а вообще - почему бы не создать отдельную таблицу с фотографиями? тогда все намного проще будет
5.
Назар (02.11.2012 / 21:00)
<?php
for($i=1;$i<11;$i++){
if(array_key_exists('photo'.$i,$cardata)){
echo'<img alt="" src="/image/big/'.$cardata['photo'.$i].'" />';
}
}
?>
А вообще, это брет так хранить фотографии юзера!
$cardata[photo1] - так писать очень плохо, так как сначала интерпритатор будет искать константу с именем photo1. Ключ надо указывать в кавычках для ассоциативного массива.
6.
ШЕДЕВР (02.11.2012 / 21:02)
2, золотой ты человек!)))
я вот искал вот это:
for($i=1;$i<=10;$i++){
if($cardata['photo'.$i]){
Я не знал как привязать к полю ЧИСЛО 1,2,3 которые даются из цикла... )))
А то приходилось писать иф по 10 раз, а так можно 1 раз, $i считает сам до 10ти... я делал [photo][$id], ['photo'][$i] и много по разному... никак не получалось)))
3, спасибо уже решил!)
4, я тебе поставлю + как пройдет время, я сег уже поставил...
7.
Николай (02.11.2012 / 21:02)
Moto-Moto (2 Ноября 2012 / 20:43)
Привет! У меня в базе хранятся 10 фотографий юзера, и храню их я в поле: photo1,photo2...photo10... Фотки загружаются, динамично удаляются, перемещаются... В итоге получается что не обязательно там 10 фоток и не обязательно они идут 1,2,3,4...10..
Вывожу я их вот таким образом..:
if($cardata[photo1]){echo'<img alt="" src="/image/big/'.$cardata[photo1].'" />';}
if($cardata[photo2]){echo'<img alt="" src="/image/big/'.$cardata[photo2].'" />';}
и так до 10ти...
ЧТобы не писать 10 раз иф иф иф... нельзя это через цикл провести изначально проверив СКОЛЬКО фотографий и пустить по этой сумме цикл... Помогите реализовать
<?
for($i=0;$i<10;$i++){
if(!empty($cardata['photo'.$i])){echo'<img alt="" src="/image/big/'.$cardata['photo'.$i].'" />';}
}
}
8.
ШЕДЕВР (02.11.2012 / 21:06)
7, я почти также делаю... вот
for($i=1;$i<=10;$i++){
if($cardata['photo'.$i]){
echo'<a href="/image/biggest/'.$cardata['photo'.$i].'" target="_blank"><img alt="" src="/image/big/'.$cardata['photo'.$i].'" /></a>';
}
}
P.S. кстати почему цикл все начинают с 0? например в моём случае когда есть поля фото1...фото10 - лучше же использовать цикл с 1 по 10
9.
Серега (02.11.2012 / 21:15)
8: Moto-Moto, c чего начинать цикл - это уже тебе решать) для каждой ситуации можно делать по-разному) можно и с 10 начать, с $i--, или вообще делать с постусловием =)
URL:
https://visavi.net/topics/35148