2014-10-10 13 views
3

У меня большая проблема. Я получаю данные из базы данных. Я хочу отображать их в закладках. Мой метод - это цикл в цикле. Я покажу вам код. Моя проблема в том, что результат (второй цикл) выводится на все данные.MySql, loop (while foreach)

Первый цикл отображает каждое имя пользователя с тем же идентификатором на собственной вкладке. это работает. второй контур работает по тому же принципу. но второй цикл не фильтрует.

(!) Первый цикл показывает мне правильно для каждого имени пользователя с тем же идентификатором собственной вкладки. но цикл sec on показывает мне все event_names, а не только имена событий пользователей. Резюме: у меня 3 пользователя. каждый пользователь. пользователь 1 имеет свою собственную вкладку. (2 события) пользователь 2 имеет свою собственную вкладку. (1 событие) пользователь 3 имеет свою собственную вкладку. (1 событие) во втором цикле, я спрашиваю события каждого пользователя. на вкладке пользователя 1 должно появиться 2 события на вкладке пользователя 2, должно появиться 1 событие, а на вкладке пользователя 3 должно появиться 1 событие. НО, на каждой вкладке (пользователь 1,2 и 3) появляются 4 события. события всех пользователей ... это проблема с циклом, не так ли? (!)

Может кто-нибудь мне помочь?

Вот некоторые фотографии из таблицы и вывод:

Мои таблицы пользователей

enter image description here

код:

<?php  
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME); 
mysqli_set_charset($db, "utf8"); 
$sqli2 = "SELECT username, premium FROM users WHERE id = $id "; 
$result2 = mysqli_query($db, $sqli2); 
foreach ($result2 as $row2)  
     { 
      echo '<div class="tabs">'; 

Моя сторона стола:

enter image description here

код:

$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME); 
mysqli_set_charset($db, "utf8"); 
$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen = '".$row2['username']."' "; 
$result = mysqli_query($db, $sqli);  
while ($row = mysqli_fetch_assoc($result)) 
{ 
    echo '<h3> '. $row['unternehmen'] .' '. $row['event_name'] .' </h3>'; 

и мой выход: enter image description here

Где ошибка? Я не могу поверить, что это :-(Пожалуйста, помогите мне !!!!

здесь полный код:.

<?php 


$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME); 
mysqli_set_charset($db, "utf8"); 
$sqli2 = "SELECT username, premium FROM users WHERE id = $id "; 
$result2 = mysqli_query($db, $sqli2); 


foreach ($result2 as $row2) { 


      echo '<div class="tabs">'; 
    echo '<ul>'; 
    echo '<li><a href="#tabs-1"> '. $row2['username'] .' </a></li>'; 
    echo '<li><a href="#tabs-2">Proin dolor</a></li>'; 
    echo '<li><a href="#tabs-3">Aenean lacinia</a></li>'; 
    echo '</ul>'; 
    echo '<div id="tabs-1">'; 
    echo '<p>Proin elit ac sollicitudin mi sit amet mauris. Nam elementum quam us.</p>'; 






    echo '</div>'; 
    echo '<div id="tabs-2">'; 




    echo '<p><div class="accordion">'; 


$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME); 
mysqli_set_charset($db, "utf8"); 
$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen = '".$row2['username']."' "; 
$result = mysqli_query($db, $sqli); 


    while ($row = mysqli_fetch_assoc($result)) 
     {   


    echo '<h3> '. $row['unternehmen'] .' '. $row['event_name'] .' </h3>'; 
    echo '<div> '; 
    echo '<form enctype="multipart/form-data" method="post" >'; 
    echo '<legend>Event Daten</legend>'; 
    echo '<label for="event_name">Name:</label>'; 
    echo '<input type="text" id="event_name" name="event_name" value="'. $row['event_name'] .'" /><br />'; 
    echo '<label for="beginn">Beginn:</label>'; 
    echo '<input type="text" id="beginn" name="beginn" value=" '. $row['beginn'] .'" /><br />'; 
     echo '<label for="party_id" value=" '. $row['party_id'].'"> Party ID:'. $row['party_id'].' </label>'; 
     echo '<input type="radio" id="party_id" name="party_id" value=" '. $row['party_id'] .'" /><br />'; 

    echo '</fieldset>'; 
    echo '<input type="submit" value="Änderungen speichern" name="partyspeicher" />'; 
    echo '</form>'; 
     echo '</div>'; 

     } 

    echo '</div>'; 
    echo '</p>'; 


    echo '</div>'; 
    echo '<div id="tabs-3">'; 
    echo '<p> Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>'; 
    echo '</div>'; 
    echo '</div>'; 
    }  





?> 
+0

Может быть лучше, чтобы разместить весь код. – Phillip

+0

Здравствуйте, перед вашим $ sqli, do $ user = $ row2 ['username']; , а в переменной $ sqli замените $ row [username] на $ user и посмотрите, не изменит ли это что-либо. Почему это? Ну $ row2 [имя пользователя] не будет работать, так как это должно быть $ row2 ['username'] ... и чтобы избежать проблем с котировками, просто создайте дополнительную переменную. – rottenoats

+0

нет не меняется. У меня 3 пользователя. каждый пользователь. Пользователь 1 имеет свою собственную вкладку. (2 события) Пользователь 2 имеет свою собственную вкладку. (1 событие) Пользователь 3 имеет свою собственную вкладку. (1 событие) во втором цикле, я спрашиваю события каждого пользователя. на вкладке пользователя 1 должно появиться 2 события на вкладке пользователя 2 должно появиться 1 событие и на вкладке пользователя 3 должно появиться 1 событие. BUT, на каждой вкладке (пользователь 1,2 и 3) отображаются 4 события. события всех пользователей ... это проблема с петлей, не так ли? – user3690260

ответ

2

Я просто разместить это как ответ вместо комментария

Похоже, ваша проблема напрямую связана с SQL строки:.

$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen = '$row2[username]' "; 

Обратите внимание на ваш $row2[username], он должен быть $row2['username'], но это может вызвать проблемы в вашей SQL строку Создать другая переменная под названием $username

$username = $row2['username']; 
$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen = '$username' "; 

И посмотрите, не изменит ли это что-либо.

Для дальнейшего использования:

Я бы рекомендовал использовать PDO (более безопасный) вместо MySQLi.Относительно простой в использовании с большим количеством полезных функций, таких как bindValue() функции, которая заменит $username = $row2['username']; с чем-то вроде

$sqli = $db->prepare("SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen = ':user' "); 
$sqli->blindValue(':user', $row2['username'], PDO::PARAM_STR); 

(если $ дб был PDO объект) http://php.net/manual/fr/pdostatement.bindvalue.php

+0

Нет, это не проблема. проблема в том, что первый цикл показывает все имя пользователя, а во втором цикле он тоже делает ... – user3690260

+0

нет, это не изменится. У меня 3 пользователя. каждый пользователь. Пользователь 1 имеет свою собственную вкладку. (2 события) Пользователь 2 имеет свою собственную вкладку. (1 событие) Пользователь 3 имеет свою собственную вкладку. (1 событие) во втором цикле, я спрашиваю события каждого пользователя. на вкладке пользователя 1 должно появиться 2 события на вкладке пользователя 2 должно появиться 1 событие и на вкладке пользователя 3 должно появиться 1 событие. BUT, на каждой вкладке (пользователь 1,2 и 3) отображаются 4 события. события всех пользователей ... это проблема с петлей, не так ли? – user3690260

1

ваш второй запрос должен быть этот

$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen 
FROM party WHERE unternehmen = '".$row2['username']."' " 

вам не хватает одного quete в имени пользователя означает, что она должна быть $ строка [ «имя пользователя»];

всегда включайте ошибку или используйте функцию mysqli_error(), они скажут, что неправильно.

Пожалуйста, проверьте эту ссылку на ваш резкий knowlede http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html

+0

нет не меняется. У меня 3 пользователя. каждый пользователь. Пользователь 1 имеет свою собственную вкладку. (2 события) Пользователь 2 имеет свою собственную вкладку. (1 событие) Пользователь 3 имеет свою собственную вкладку. (1 событие) во втором цикле, я спрашиваю события каждого пользователя. на вкладке пользователя 1 должно появиться 2 события на вкладке пользователя 2 должно появиться 1 событие и на вкладке пользователя 3 должно появиться 1 событие. BUT, на каждой вкладке (пользователь 1,2 и 3) отображаются 4 события. события всех пользователей ... это проблема с петлей, не так ли? – user3690260

+0

сейчас я обновил свой вопрос :-) Надеюсь, теперь его ясно. Извините мой плохой английский: -S – user3690260

+0

СПАСИБО ВАС !!!! Я посылаю вам электронное письмо! Большое спасибо! – user3690260