IF- Abfrage Problem

BladeNeo

Erfahrenes Mitglied
Hi @ all.

Folgende Problematik:

Ich habe mir eine Datenbank angelegt (Kriterien: Name, Vorname, Tel-Nr. u.s.w).
Ich kann erfolgreich schreiben, editieren, lesen und löschen.
Mein Problem liegt darin, dass ich per Klick verschiedene Suchkriterien hinzufügen will.
Neben Name, Vorname und Tel-Nr. gibt es ein kleines *.jpeg Bild, dass angeklickt werden kann (fungiert natürlich als Link).
Dieser link übergibt folgendermaßen ein Kriterium für die Zuordnung der Dateien:
<a href="index.php?sort=2">
Ich glaub auch, dass hier der Fehler liegt.. wieso kann ich sort=2 am besten der URL übergeben bzw. wenn schon Werte drinnen sind hinzufügen?

Sort=1 ist z.B sortierung des Namens Sort=2 Des Vornamens u.s.w
Ich glaub auch dass diese If-Anweisung vereinfacht werden kann, jedoch wie?

if($sort = 1)
{
..
}
else if ($sort = 2)
{
...
}
u.s.w.

Ich hoffe ich konnte meine Problematik einigermaßen gut rüberbringen...

MfG,
BladeNeo
 
switch ($sort)
{
case 1: { code }
case 2: { code }
default: { code }
}

oder auch if else anweisung

if ($sort = 2)
{
}
elseif ($sort = 1)
{
}
else
{
}
 
Ok.. danke! funktioniert super!

Kann mir nun noch jemand sagen, wie ich 2 Werte übergebe per URL.. einen übergebe ich ja mit einem simplen Link = <a href="index.php?sort=2">
Wie kann ich ein Wert zur URL hinzufügen. Damit ich 2 Variablen in der URL übergebe?

MfG,
BladeNeo
 
Ja danke, aber ich so ist es nicht dynamisch.. ich übergebe den Wert ja ganz normal mit A HREF und ohne jeglichen PHP-Code.
Ich brauch aber PHP-Code der dies zur URL hinzufügt, kann diesen aber leider nicht finden.
 
Hast du den Link in einer html Datei? Wenn ja, kannst du da kein php aufrufen, es muss also eine php Datei sein in der dann der HTML Code steht.

bsp.
PHP:
// seite.php
<html>
...
  <body>
  <?php
     $sort=2;
     $abc='bla';

    // oder
   $add = 'sort='.$sort.'&abc='.$abc;
  ?>
  <A href="index.php?sort=<?=$sort?>&abc=<?=$abc?>">Link</A>
  <A href="index.php?<?=$add?>">Link</A>
  </body>
</html>
 
Zuletzt bearbeitet:
Danke für die Antwort, aber ich verstehe die Sachlage noch nicht richtig!?
Ich erkläre nochmal das Problem und wie ich es bis jetzt gelöst habe:
Ich habe nun mit der switch-Anweisung eine Abfrage gemacht, die die Daten sortiert.. also klickt man z.B. auf das kleine Bild neben "Vorname" sortiert er mir ALLE Datensätze nach dem Vornamen.
PHP:
switch ($sort)
{
case 1: 
$result = mysql_query("SELECT * FROM kunden ORDER BY id",$db);
break;

case 2: 
$result = mysql_query("SELECT * FROM kunden ORDER BY vorname",$db);
break;
// u.s.w.
Jeder Datensatz hat eine kat-id (0,1 oder 2) 0 steht für kategorie 0 , 1 für kategorie 1 und 3 natürlich für 3.

Ich würde jetzt gerne z.B. alle Kunden der Kategorie 0 anzeigen lassen (kein Problem) nun seh ich sie und würde gerne wieder sortieren (natürlich bloß die der kat 0) jedoch (was eigentlich logisch ist) zeigt er mir wieder alle an, weil er wieder auf die switch- anweisung zugreift und alle dantensätze abruft (s.o.: case1).

Wie könnt ich dies lösen?, ohne einfach ne neue php anzulegen die von anfang an bloß kat0 ausliest (also durch HTML- Verknüpfungen).

Ich hoffe, dass ihr es versteht.. wenn nicht einfach fragen :nospam: ;-]
 
Baue doch noch eine WHERE Klausel mit ein.

Du machst eine abfrage für alle Kunden der kat 1. Anschließend gibst du diese ja aus(wie auch immer). Daraufhin erzeugst du einen link mit dem anhängsel der kat_id.
Etwa so
PHP:
  $result=mysql_query('SELECT * FROM kunden WHERE kat_id="1"');
  //ausgabe aller namen
  echo'<A href="scrip.php?sort=1&kat_id='.$data['kat_id'].'">Sortieren nach ID</A>';
  echo'<A href="scrip.php?sort=2&kat_id='.$data['kat_id'].'">Sortieren nach Vorname</A>';

Dann kommste auf dieses Script woraufhin wieder eine ausgabe stattfindet ...
PHP:
// Script
switch ($sort) {
  case 1: 
    $result = mysql_query('SELECT * FROM kunden WHERE kat_id = "'.$_GET['kat_id'].'"  ORDER BY id'); 
    break; 

  case 2: 
    $result = mysql_query('SELECT * FROM kunden WHERE kat_id = "'.$_GET['kat_id'].'" ORDER BY vorname'); 
    break; 
}


Hoffe das hilft ein wenig
 
Danke,
hat mir etwas weitergeholfen, aber ich kriegs immernoch nicht zum laufen.
Ich bring mal nen Auschnitt:

CASE1:
$result = mysql_query("SELECT * FROM kunden WHERE anr=".$_GET['kat_id']." ORDER BY id",$db);
Logisch gesehen ist dies der Erste Case, der für die ID- sortierung zuständig ist. Ok.. ich klick drauf und schonmal das erste Problem.. in der Allgemeinen Abfrage übergebe ich ja keine nummer (anr) Er kann sich keine id holen.. somit funktioniert die Abfrage Funktion nicht für alle Kategorien.

Ok geh mer mal weiter, ich übergebene ne Kat (es funktioniert) diese muss ich jedoch manuell in die URL schreiben, weil folgender Code mir die "anr" Nummer nicht übergibt.

<a href="index.php?sort=1&kat_id=<?echo $daten[anr]; ?>">
sort=1 (geht ins Case1, also ID- Sortierung) hier muss er nun noch die anr übergeben...
hmmm.. unter dem while übergibt er sofort $daten[anr] darüber nicht, auch logisch aber soll ich jetzt die gleiche Abfrage nochmal über dem while plazieren? (besseren Vorschlag?).

Sollte ma ne Pause einlegen, ich seh den Wald vor lauter Bäumen wohl nicht mehr ^^.
Wäre nett wenn jemand postet wenn er ne Idee oder nen Vorschlag hat.

MfG,
BladeNeo
 
Nun, ich hab dir ja die Lösungsvorschläge gegeben die eigentlich so auch funktionieren wenn man sie angepasst implementiert. Wir sehen hier aber nicht deinen Code, sondern nur einen ganz kleinen Ausschnit mit dem man nicht viel anfangen kann. letztendlich implementieren musst du dass. Ich verstehe ehrlich gesagt nicht wie dein script aufgebaut ist, irgendwie wusel wusel.

Du sagst, das case 1 jetzt nicht mehr geht, weil es beim ersten aufruf keine kat_id gibt. Dann lass doch case 1 als standart drin ohne den where teil wo du dir alle kunden anzeigen lässt. Bei case 2 machste dann die WHERE Klauseln rein und diese rufst du dann per link ab.
Du gibst doch den Kunden IRGENDWO aus, richtig? Genau in diesem Moment hast du doch auch die kat_id . Also erzeugst du einen link mit der kat_id und sort=2 damit er nicht in die 1 reinspringt wo KEINE where klausel ist
 
Zurück