2017-06-26 6 views
0

Good Afternoon Alle,Mysql Schleife Rückkehr falsche Daten

ich ein Problem bin vor und kann nicht herausfinden, was ich falsch in meinem myslq/php while/foreach-Schleife tue.

Schleife scheint doppelte Ergebnisse zu sein.

////////////////////////Check which site have this app/////////////////// 
$query_t = "SELECT * FROM site WHERE app_id='2'"; 
$result_t = mysql_query($query_t) or die(mysql_error()); 

$rows = array();  
while($r_t = mysql_fetch_array($result_t)) 
    $rows[] = $r_t; 
foreach($rows as $r_t){ 

$this_areport_site_id = $r_t['site_id']; 

    //////////////Search for user emails that have access to this app //////// 
$query_t4 = "SELECT mail FROM $user_tbl WHERE arep_kitchen='1' AND site_id='$this_areport_site_id' ORDER BY id ASC"; 
$result_t4 = mysql_query($query_t4); 

while ($r_t4 = mysql_fetch_array($result_t4)) { 
    $areport_kitchen_email .= $r_t4[mail].',';// append comma after each value you append to the string 

} 

echo 'Here: '.$this_areport_site_id.' - '.$areport_kitchen_email.'<br />'; 

    } 

Jetzt ist es zurückgeben, mir zu folgen:

Here: AHROW - [email protected], 
Here: AHROW - [email protected],[email protected], 
Here: AHALEX - [email protected],[email protected],[email protected], 

Und ich erwartete

Here: AHROW - [email protected],[email protected], 
Here: AHLANG - No Records here 
Here: AHALEX - [email protected], 

Ich würde Vorschlag schätzen, was ich da falsch mache, wie ich auf diesem ganzen Morgen sitze .

Antwort

0

Sie sollten die Zeichenfolge $areport_kitchen_email vor Anhängen von E-Mails entleeren:

$areport_kitchen_email = ''; // empty emails container string 

while ($r_t4 = mysql_fetch_array($result_t4)) { 
    $areport_kitchen_email .= $r_t4[mail].',';// append comma after each value you append to the string 
} 

Diese Dubletten zu vermeiden.

+0

Hallo Bozzy, Zunächst einmal vielen Dank für Ihre Antwort. Ich habe mir das vorher angeschaut und mit dem Code, den Sie vorgeschlagen haben, bekomme ich noch: 'Hier: AHROW - [email protected], Hier: AHROW - person1 @ email.com, person2 @ email.com, Hier: AHALEX - person3 @ email.com, ' Und ich bin mir nicht sicher, warum es diese die erste Reihe zeigen? mit AHROW gibt es 2 Datensätze, mit AHALEX gibt es einen Datensatz, und in AHLANG gibt es app_id, aber keine Benutzer-E-Mails unter dieser Site. –

+0

Seltsam. Also haben wir AHALEX jetzt korrekt, aber immer noch zwei Instanzen von AHROW mit verschiedenen Kombinationen von E-Mails ... Ich würde versuchen, den E-Mail-Suchteil zu kommentieren und den Inhalt von $ this_areport_site_id wiederzugeben, um zu sehen, wo das Problem liegt. Lass es mich wissen, wenn du es versuchst. – Bozzy

+0

Also, wenn ich die Suche E-Mail-Abfrage auskommentieren und echo $ this_areport_site_id zurückgeben gibt es 'AHROW AHLANG AHALEX ', die korrekt ist, wie app_id = 2 für alle diese 3 Datensätze existieren. –

0

Ich habe das Problem behoben, indem ich zwei Schleifen ineinander führe und von einer kommagetrennten Zeichenfolge zurücktrete, die im ersten Post ein Problem zu sein scheint.

Bozzy, ich danke Ihnen für eine Anstrengung.

$query_t7 = "SELECT * FROM site WHERE app_id='2'"; 
$result_t7 = mysql_query($query_t7) or die(mysql_error()); 
while($r_t7 = mysql_fetch_array($result_t7)) { 

$this_areport_site_id = $r_t7['site_id']; 

$query_t8 = "SELECT * FROM admins WHERE arep_kitchen='1' AND site_id='$this_areport_site_id' ORDER BY id ASC"; 
$result_t8 = mysql_query($query_t8) or die(mysql_error()); 
while($r_t8 = mysql_fetch_array($result_t8)) { 

$areport_kitchen_email = $r_t8['mail']; 

} 
} 
+0

Vielleicht würdest du ein 'echo' nach dem' $ areport_kitchen_email = $ r_t8 ['mail']; 'hinzufügen, um deine Daten auszugeben , Recht? Ich denke jedoch, dass dies keine vollständige Lösung ist, zumindest wenn Sie auch die Sites ohne E-Mails ausgeben müssen (AHLANG in Ihrem Beispiel), die in der zweiten while-Schleife nicht berechnet werden, da keine Datensätze die Abfragebedingungen erfüllen . – Bozzy