Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2010, 23:17   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Повтор во время loop

PHP код:
<table align="right"><tr>{section name=up_loop loop=$up}
<
td id="text" valign="top" width="100%" border="1px">
{
$up[up_loop].name}<br/>
{
$up[up_loop].date}<br/>
{if 
$up[up_loop].photo}<img height="200px" src="./img/users/{$up[up_loop].photo}">{/if}
{if 
$up[up_loop].photo==""}<img height="200px" src="./img/users/nophoto.jpg">{/if}
{
$up[up_loop].photo}
</
td>{/section}
</
tr></table
Массив заполнен нормально, в данном случае 2 значения, там где up_loop. В итоге работы кода выводится сначала нормальная фотка, а потом nophoto. Под nophoto самой последней переменной не отображается, а под норм фоткой отображается. То-есть loop каким-то таинственным образом шаманит над выводом, таким, что я его еще не знаю, либо запамятовал. Что сейчас происходит и как правильно вывести фотку пользователя, если она есть, а nophoto, если фотки нет?
Krasi вне форума Ответить с цитированием
Старый 26.07.2010, 09:07   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

а может else попробовать?

{if $up[up_loop].photo!=""}<img height="200px" src="./img/users/{$up[up_loop].photo}">
{else}<img height="200px" src="./img/users/nophoto.jpg">{/if}
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 26.07.2010, 15:21   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Пробовал, ничего не меняет. Может что-то с массивом? Но что и как можно проверить? При перечислении x в echo($massiv[x][photo]); с виду выдает все нормально, без пустых полей и тп.
Krasi вне форума Ответить с цитированием
Старый 26.07.2010, 15:25   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Ладно, вот так записываю:
PHP код:
$up_query mysql_query("SELECT * FROM `sb_friends` WHERE `fr_us_name` = '$user_login' OR `fr_fr_name` = 

'
$owner_login'");
while(
$up mysql_fetch_array($up_query)){
  if (
$up[fr_allow]=="0" && strtolower($up[fr_us_name]) != strtolower($user_login))
  {
$up_array0[]=Array('name' => $up[fr_us_name], 'date' => $up[fr_date]); $us=$up[fr_us_name]; $ua="0";}

    if (
$up[fr_allow]=="0" && strtolower($up[fr_us_name]) == strtolower($user_login))
    {
$up_array0[]=Array('name' => $up[fr_fr_name], 'date' => $up[fr_date]); $us=$up[fr_fr_name]; $ua="0";}

  if (
$up[fr_allow]=="1" && strtolower($up[fr_us_name]) != strtolower($user_login))
  {
$up_array1[]=Array('name' => $up[fr_us_name], 'date' => $up[fr_date]); $us=$up[fr_us_name]; $ua="1";}
    
    if (
$up[fr_allow]=="1" && strtolower($up[fr_us_name]) == strtolower($user_login))
    {
$up_array1[]=Array('name' => $up[fr_fr_name], 'date' => $up[fr_date]); $us=$up[fr_fr_name]; $ua="1";}

$up_query2 mysql_query("SELECT user_photo FROM `sb_users` WHERE `user_login` = '$us'");
list(
$up_query2) = mysql_fetch_array($up_query2);
if (
$ua=="0")
{
$up_array0[]=Array('photo' => $up_query2);}
if (
$ua=="1")
{
$up_array1[]=Array('photo' => $up_query2);} 
Можно заодно и уязвимости выявить. Ну и предложить оптимизацию=)

Последний раз редактировалось Krasi; 26.07.2010 в 15:27.
Krasi вне форума Ответить с цитированием
Старый 26.07.2010, 18:29   #5
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

http://www.php.net/manual/en/languag....array.foo-bar

Почитайте внимательно.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 27.07.2010, 20:09   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

PHP код:
$up_query mysql_query("SELECT * FROM `sb_friends` WHERE `fr_us_name` = '$user_login' OR `fr_fr_name` = 

'
$owner_login'");
while(
$up mysql_fetch_array($up_query)){
  if (
$up['fr_allow']=="0" && strtolower($up['fr_us_name']) != strtolower($user_login))
  {
$up_array0[]=Array('name' => $up['fr_us_name'], 'date' => $up['fr_date']); $us=$up['fr_us_name']; $ua="0";}

    if (
$up['fr_allow']=="0" && strtolower($up['fr_us_name']) == strtolower($user_login))
    {
$up_array0[]=Array('name' => $up['fr_fr_name'], 'date' => $up['fr_date']); $us=$up['fr_fr_name']; $ua="0";}

  if (
$up['fr_allow']=="1" && strtolower($up['fr_us_name']) != strtolower($user_login))
  {
$up_array1[]=Array('name' => $up['fr_us_name'], 'date' => $up['fr_date']); $us=$up['fr_us_name']; $ua="1";}
    
    if (
$up['fr_allow']=="1" && strtolower($up['fr_us_name']) == strtolower($user_login))
    {
$up_array1[]=Array('name' => $up['fr_fr_name'], 'date' => $up['fr_date']); $us=$up['fr_fr_name']; $ua="1";}

$up_query2 mysql_query("SELECT user_photo FROM `sb_users` WHERE `user_login` = '$us'");
list(
$up_query2) = mysql_fetch_array($up_query2);
if (
$ua=="0")
{
$up_array0[]=Array('photo' => "$up_query2");}
if (
$ua=="1")
{
$up_array1[]=Array('photo' => "$up_query2");}
}
echo(
$up_array0[1][photo]); 
Так не помогло. Зато 'photo' в массив записывается не так, что нулевой элемент идет на нулевую позицию. echo выдает то, что должно быть нулевым элементом. В чем еще косяк - как это исправить?
Krasi вне форума Ответить с цитированием
Старый 28.07.2010, 01:14   #7
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

PHP код:
echo($up_array0[0]['photo']); //что выведет? 
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 28.07.2010, 07:32   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

не совсем догоняю смысл вышеприведенного кода.. может объясните... но мне кажется оптимимзровать нада начинать с структуры БД и SQL запроса... тогда и для php останется простой и чистый вывод
ADSoft вне форума Ответить с цитированием
Старый 28.07.2010, 12:58   #9
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Цитата:
echo($up_array0[0]['photo']);
Пустоту
Цитата:
мне кажется оптимимзровать нада начинать
Вообще реализую "добавление в друзья". Сейчас в каждую строку вписываются логин пользователя и логин его друга. При открытии страницы друзей любым пользователем, производится чтение с бд строк, где в любом из двух столбцов есть имя этого пользователя, потом выводится один из столбцов, тот, где имя пользователя == имя друга (отсеивается имя сессионного пользователя). Дружбу еще надо подтвердить, поэтому в зависимости от статуса в стоблике fr_allow данные записываются в один из 2 массивов. Ну и в конце добавляется фотка из таблицы пользователей sb_users. В итоге пользователь видит 2 таблицы: люди для подтверждения и люди-друзья.
Krasi вне форума Ответить с цитированием
Старый 28.07.2010, 13:42   #10
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от Krasi Посмотреть сообщение
Пустоту
Я немного ошибся. Выведите пожалуйста:
PHP код:
print_r($up_array0[0]); 
что вернёт.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос об ошибке For loop control variable must... dr.Chas Общие вопросы Delphi 2 08.01.2010 22:35
Повтор в список Enigmatic Microsoft Office Excel 6 27.11.2009 00:13
Loop-нужен совет в нюансах! MacTiger Общие вопросы C/C++ 1 19.11.2009 17:49
Вычитание и LOOP lordus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 14.11.2009 17:20
Assignment to FOR-Loop variable zotox Помощь студентам 4 24.03.2009 11:32