簡體   English   中英

循環的MySql(雖然是foreach)

[英]MySql, loop (while foreach)

我有一個大問題。 我從數據庫中獲取數據。 我想在標簽中顯示它們。 我的方法是循環中的循環。 我告訴你代碼。 我的問題是結果(第二個循環)輸出所有數據。

第一個循環在自己的選項卡中顯示具有相同ID的每個用戶名。 這樣可行。 第二個循環的工作原理相同。 但第二個循環不會過濾。

(!) 第一個循環正確顯示每個具有相同id的用戶名的用戶名。 但是循環秒顯示了所有event_names,而不僅僅是用戶的事件名稱。 簡歷:我有3個用戶。 每個用戶。 用戶1有自己的標簽。 (2個事件)用戶2有自己的選項卡。 (1個事件)用戶3有自己的標簽。 (1事件)在第二個循環中,我詢問每個用戶的事件。 在用戶1的選項卡中必須出現2個事件,在用戶2的選項卡中必須出現1個事件,並且在用戶3的選項卡中也必須出現1個事件。 但是,在每個標簽(用戶1,2和3)中出現4個事件。 所有用戶的事件......這是循環的問題,不是嗎? (!)

有人能幫我嗎?

這里有一些表和輸出的圖片:

我的表用戶

在此輸入圖像描述

代碼:

<?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">';

我的桌上派對:

在此輸入圖像描述

代碼:

$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>'; 

和我的輸出: 在此輸入圖像描述

錯誤在哪里? 我不敢相信:-(請幫幫我!!!!

這里是完整的代碼:

<?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>';
   }      





?>

我會發布這個作為答案而不是評論。

看來你的問題與你的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);

(如果$ db是PDO對象) http://php.net/manual/fr/pdostatement.bindvalue.php

你的第二個問題應該是這個

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

你缺少用戶名中的單個quete意味着它應該是$ row ['username'];

總是打開錯誤或使用mysqli_error()函數,他們會告訴錯誤。

請查看此鏈接以了解您的知識http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM