MySQL Datensatz PHP
MySQL WHERE-KlauselTutorials » PHP/MySQL Tutorials » MySQL WHERE-Klausel
MySQL WHERE-Klausel - Tutorial
Mal wieder ein Wunsch, aus dem WishbookIch wsste gerne wie Tabellen ausliest und diese auf der PHP Seite dann Ordnen kann. Z.b gibt es Tubes & Scans in einer MySQL Tabelle, wie kann man dies nun machen das der User nur noch auf "Sortieren nach - Tubes" z.b klicken muss und nur die Tubes angezeigt werden?
So etwas laesst sich ganz leicht umsetzen, alles was man dazu braucht ist das kleine Woertchen WHERE und einen Operator ...
Gehen wir jetzt mal vom oben genannten Beispiel aus, wir haben eine Tabelle 'downloads' die wie folgt aufgebaut ist
Damit jetzt NUR noch die Datensaetze ausgelesen werden, die dem typ Scans angehoeren muss die Abfrage wie folgt lauten
$abfrage = mysql_query("SELECT * FROM downloads WHERE typ='Scans' ");
Damit nur noch die Datensaetze ausgelesen werden mit dem typ Tubes, einfach typ=Scans gegen typ=Tubes austauschen ...
$abfrage = mysql_query("SELECT * FROM downloads WHERE typ='tubes' ");
Wenn wir nun nur Datensaetze eines bestimmten uploaders haben wollen, muesste unsere Abfrage so aussehen
$abfrage = mysql_query("SELECT * FROM downloads WHERE uploader='Alice' ");
Das Syntaxe lautet also immer
SELECT * FROM tabellenName WHERE Spalte = Wert;
Jetzt koennen wir aber nicht nur die Datensaetze auslesen, die einen bestimmten Wert haben, nein wir koennen das Ganze auch umdrehen, wir koennen nur Datensaetze auslesen, die in einen bestimmten Wert NICHT enthalten, das sieht dann wie folgt aus
$abfrage = mysql_query("SELECT * FROM downloads WHERE uploader!='Alice' ");
Hier wuerden jetzt nur Datnsaetze abgefragt werden die NICHt vom uploader Alice stammen ...
Eine Liste der verwendbaren Operatoren in einer WHERE Klausel
Es gaebe da noch LIKE, IN und BETWEEN, die allerdings erklaer ich dann in einem anderen Tutorial, noch mal gesondert ;)
Um nun wieder auf den Wunsch zurueck zu kommen, hier mal ein kleines Beispielscript, wie das Ganze in die Tat umsetzen koennte
<?php // Datenbankverbindung //--------------------------------------------------- $host = "localhost"; // Adresse des Datenbankservers, meist localhost $user = "root"; // Ihr MySQL Benutzername $pass = ""; // Ihr MySQL Passwort $dbase = "test"; // Name der Datenbank $connection = mysql_connect("$host" , "$user" , "$pass") OR die ("Keine Verbindung zu der Datenbank moeglich."); $db = mysql_select_db($dbase , $connection) OR die ("Auswahl der Datenbank nicht moeglich."); //--------------------------------------------------- $pfad = $_SERVER['PHP_SELF']; // aktuellen Dateipfad ermitteln => Link // Abfrage der vorhandenen typen => gruppieren $typen = mysql_query("SELECT typ FROM downloads GROUP BY typ"); echo "Sortieren nach: "; // Ausgabe der Typen mit Link while($row_p = mysql_fetch_object($typen)){ echo "<a href=\"$pfad?typ=".$row_p->typ."\">".$row_p->typ."</a> "; } $typ = mysql_real_escape_string($_GET['typ']); // Varaible definieren => entschaerfen if(!isset($_GET['typ'])){ // wenn kein typ uebergeben wurde //alle Datensaetze abfragen $abfrage = mysql_query("SELECT * FROM downloads"); }else{ // Wenn typ uebergeben wurde // Nur die vom typ = '$typ' $abfrage = mysql_query("SELECT * FROM downloads WHERE typ='$typ'"); } // Ausgabe while($row = mysql_fetch_object($abfrage)){ echo "<p>ID ".$row->id."</p>"; } ?>
Als erstes die Datenbankverbindung, logisch sonst gibt es keine Daten aus der DB :D
Anschliessend werden die vorhandenen typen aus der DB ausgelesen, unter denen man waehlen / sortieren koennen soll ...
Hier kommt in der Abfrage eine GROUP BY Klausel zu Einsatz, diese bewirkt eine Gruppierung der Spalte typ, d.h. das hier die typen zusammengefasst werden und zum Schluss dann jeder typ nur einmal ausgegeben wird, auch wenn dieser mehrfach vertreten war;)
Dann enschaerfen wir die Variable $typ, die per GET uebergeben wird, mittels mysql_real_escape_string() Befehl
Darauf folgt eine If-Abfrage ob per $GET der gewuenschte typ uebergeben wurde, sofern dies nicht der Fall sein sollte, werden alle Datensaetze abgefragt, sollte ein typ uebergeben worden sein, so werden dann nur die Datensaetze ausgelesen, die zu diesem typ gehoeren.
Und zum Schluss werden die Daten dann ausgeben ...
Kommentar schreibenHinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar zu hinterlassen...
Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...