За последние 24 часа нас посетили 47312 программистов и 1806 роботов. Сейчас ищут 928 программистов ...

цикл foreach

Тема в разделе "PHP для новичков", создана пользователем ruslite, 21 фев 2014.

  1. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Всем привет!)
    Есть цикл
    Код (Text):
    1. <?php
    2. foreach( $messages as $name):
    3. ?>
    4. <li> <strong><?php echo $name->name;  ?></strong> : <?php echo $message->message; ?> </li>
    5. <?php endforeach;  ?>
    Я сделал только для $name, но как мне сделать еще и с $message? Прописывал два цикла подряд с разными переменными, но почему-то все дублировалось по несколько раз.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Так поможет?
    Код (PHP):
    1. <li> <strong><?php echo $name->name;  ?></strong> : <?php echo $name->message; ?> </li>
     
  3. INETCHIK

    INETCHIK Активный пользователь

    С нами с:
    13 фев 2014
    Сообщения:
    35
    Симпатии:
    0
    Может так
    Код (PHP):
    1. FOREACH($mess as $n=>$m):?><li><strong><?=$n;?></strong>:<?=HTMLSPECIALCHARS($m);?></li>
    2. <? ENDFOREACH;?>
     
  4. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Код (Text):
    1.     <?php
    2.                         $query = $pdo->prepare( 'SELECT * FROM message ORDER BY id DESC' );
    3.                         $query->execute();
    4.                        
    5.                         $messages = $query->fetchAll( PDO::FETCH_OBJ );
    6.                         foreach( $messages as $message ):
    7.                     ?>
    8.                         <li> <strong><?php echo $message->author; ?></strong> : <?php echo $message->message; ?> </li>
    9.                     <?php endforeach; ?>
    Вот, надо именно foreach.
    Код (Text):
    1. $message->author;
    - вообще не могу понять почему чувак сделал так, но не работает, что вообще значат этот author я не знаю. Я сделал, что отображается, но оформление не могу сделать.
    Код (Text):
    1. <?php
    2.                         $query = $pdo->prepare( 'SELECT * FROM message ORDER BY id DESC' );
    3.                         $query->execute();
    4.                        
    5.                         $messages = $query->fetchAll( PDO::FETCH_OBJ );
    6.                         foreach( $messages as $name ){
    7.                        
    8.                     ?>
    9.                         <li><strong><?php echo $name->name;?></strong></li>
    10.                     <?php }
    11.                     foreach( $messages as $message ){
    12.                     ?>
    13.                     <li> <?php echo $message->message; ?> </li>
    14.                     <?php } ?>
    А надо чтобы напротив имя было сообщение, т.е. таблицей, но как я не пытался не получается. Тэг li, это я уже так поставил, все в столбик отображается. Сначала имя в столбик, ниже сообщения...

    Добавлено спустя 1 минуту 32 секунды:
    не так не хочет. пытался уже
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Если ключи одинаковые то $message->{$name->id}; только так. Главное чтобы был тот ключ который равен и идентичен в $name.
     
  6. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    все решил, вроде уже так делал, а не получалось, а сейчас получилось

    Код (Text):
    1. <li> <strong><?php echo $message->name; ?></strong> : <?php echo $message->message; ?> </li>
    Спасибо всем!) Пол вечера тупил..
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Так вам так и сказали выше $name->message ибо $name произошло от $messages.
     
  8. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    да, именно, просто я думал, что я так делал, видать опечатка была, вот и не работало!)

    и вот вопрос (спрошу уже сюда, чтобы тему не поднимать), просто свзязь с node.js и немного непонятно.
    Есть форма:
    Код (Text):
    1. <form class="form-inline" id="messageForm">
    2.                 <input id="nameInput" type="text" class="input-medium" placeholder="Name" />
    3.                 <input id="messageInput" type="text" class="input-xxlarge" placeHolder="Message" />
    4.            
    5.                 <input type="submit" value="Send" />
    6. </form>
    Что значит placeholder="Name" и placeHolder="Message", а именно placeHolder. Просто мне надо проверить форму на ее пустоту, я умею это делать, но здесь я не вижу никаких переменных.

    Также обращается к скрипту js
    Код (Text):
    1. $( "#messageForm" ).submit( function() {
    2.     var nameVal = $( "#nameInput" ).val();
    3.     var msg = $( "#messageInput" ).val();
    4.    
    5.     socket.emit( 'message', { name: nameVal, message: msg } );
    6.    
    7.     // Ajax call for saving datas
    8.     $.ajax({
    9.         url: "./ajax/insertNewMessage.php",
    10.         type: "POST",
    11.         data: { name: nameVal, message: msg },
    12.         success: function(data) {
    13.            
    14.         }
    15.     });
    16.    
    17.     return false;
    18. });
    Как понимаю проверку надо проводить в ней. Только как, я js не очень знаю. Прошу помощи.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  10. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    А, понятно. Что-то я не додумался. Спасибо. А с проверкой кто-нибудь может помочь?

    Все проверил я форму.
    Код (Text):
    1. if((nameVal) && (msg)){
    2.     socket.emit( 'message', { name: nameVal, message: msg } )};
    Всем спасибо