Loading...   Upload Image

MySQL WHERE-KlauselTutorials » PHP/MySQL Tutorials » MySQL WHERE-Klausel

Verfasst von Alice am 06.05.2009 - wurde schon 7650 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
3x bewertet
Schwierigkeit: einfach
Kommentare: [ 1 ]

Tag - Schlagwort MySQL Tag - Schlagwort Datensatz Tag - Schlagwort PHP

MySQL WHERE-Klausel - Tutorial

Mal wieder ein Wunsch, aus dem Wishbook

Ich wüsste 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 ...


Affiliates:   Gallery Yuri  •   Chibi Graphics  •   Design Grafixx  •   Colorful Gfx  •   The Seduction  •   Blue-Graphics  •   Pat DG  • Show all ...
designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider