2012-04-08 18 views
0

Ich habe eine Abfrage wie dieseEntfernen Duplikate von foreach

SELECT TOWN, NAME FROM CINEMA WHERE CITY_ID = ".$_POST['country']." GROUP BY TOWN, NAME 

Im Hinblick Seite nehme ich die Werte mit Hilfe von template_lite

<table border="1" > 
     <br /> 
{foreach value=mp from=$mpbycity} 
<tr><td>{$mp.TOWN}</td></tr> 
    <tr><td>{$mp.NAME}</td></tr> 

{/foreach} 
    </table> 

Das Problem ist die duplicates.You sieht aus unter Bild

Ich versuchte Array_unique, aber es funktioniert nicht.

enter image description here

+0

Ihr SQL sieht wackelig aus. Es wäre hilfreich, Ihre Tabellenstruktur in Ihrer Datenbank zu sehen. – Lion

+1

'TOWN' ist das gleiche,' VALUE' ist nicht – knittl

Antwort

1

Zunächst müssen Sie Variable filtern, bevor ..CITY_ID = ".$_POST['country']." innerhalb Abfrage zu schreiben. Mit diesem Code kann Angreifer Code in Abfragen einfügen. Überprüfen Sie Sql injection. Um dies zu vermeiden, verwenden Sie mysql_real_escape_string().

..CITY_ID = ".mysql_real_escape_string($_POST['country'])."... 

Und einzigartige Array können Sie array_unique(), SELECT DISTINCT, GROUP BY Klauseln verwenden. Auch in der Schleife kann vermieden werden, doppelte Werte in das Array zu schreiben. Alles hängt von Ihrer Datenbankstruktur und Abfrage ab.

+0

Wie kann ich das in Schleife tun? –

+0

schreiben PHP-Code, wo Sie mysql Abfrage – safarov

+0

Ich benutze Framework –

0

Sie suchen keine Duplikate. Im Grunde durchlaufen Sie eine Iteration über eine Gruppe nach Syntax, und Sie drucken sie in zwei Diff-Zeilen.

Der Ausgang Sie haben, ist wie

A B 
A C 
A D 

B C 
B D 
B E 

und Sie es als

A 
B 
A 
C 
A 
D 
B 
C 
B 
E 

Druck, die Sie denken Duplikat ist.

Die Kombination {$ mp.TOWN} und {$ mp.NAME} kombiniert ist einzigartig.