madmax00 Geschrieben 20. März 2006 Geschrieben 20. März 2006 Hallo, Leute Da habe ich wieder eine Frage oder sogar mehr: Erst möchte ich mal erklären, was ich machen will. Ich habe vor eine Branche Site zu erstellen. Ein Datenbank und alles dazu nötigen habe ich gemacht, es funktioniert auch. Jetzt möchte ich mal alle Daten sortiert ausgeben, d.h. ich möchte die Dateien die ausgegeben werden nach drei Kriterien (Name, Bundesland und Branche) sortieren. Jetzt kommt: Wie kann meine MySQL erstelle, das wenn in Eingabe Feld Name und Branche was steht, wird nur nach die beide Kriterien was ausgegeben oder, wenn ich sage:“ Gibt mir nur alle aus Bundesland so und so“, dann soll es auch gemacht werden. Ich kriege das nicht zusammen. Und zweite, wie kann ich machen, dass wenn ich auf Button „Start“ drucke und die Daten ausgegeben werden, bleibt bei mir auch in eingebe Felder die Daten was ich vorher eingegeben habe? <?php include("./MyRusTel/connect.php"); $Bundesland = array(1 => "Baden Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen"); $Branche = array(1 => "Recht", "Reisen", "Portale"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content=" text/html; charset=utf-8"> <meta name="ROBOTS" content="ALL"> <title>Unbenanntes Dokument</title> </head> <body> <form action="MyRustel_Index.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000"> <table> <tr> <td>Name / Имя</td> <td><input type="text" name="Name" size="50"></td> </tr> <tr> <td>Bundesland / Земля Германии</td> <td> <select size="1" name="Bundesland"> <?php for($i=0; $i<=16; $i++){ echo "<option"; echo " value=\"".$i."\">".$Bundesland[$i]."</option>\n"; } ?> </select> </tr> <tr> <td>Branche / Отрасль</td> <td> <select size="1" name="Branche"> <?php for($i=0; $i<=3; $i++){ echo "<option"; echo " value=\"".$i."\">".$Branche[$i]."</option>\n"; } ?> </select></td> </tr> <tr> <td colspan="2"><input type="submit" value="Start" name="btnStart"></td> </tr> </table> </form> <?php // Wenn der Button start gedrueckt wurde if (isset($_POST['btnStart'])) { $strDBName = "myrustel"; $Kundendaten_query=mysql_query("SELECT * from kundendaten WHERE Name='" .($_REQUEST['Name'])."' AND Bundesland='".($_REQUEST['Bundesland'])."'AND Branche='".($_REQUEST['Branche'])."' OR Name='" .($_REQUEST['Name'])."' AND Bundesland='".($_REQUEST['Bundesland'])."' OR Name='".($_REQUEST['Name'])."' AND Branche='".($_REQUEST['Branche'])."' OR Bundesland='".($_REQUEST['Bundesland'])."'AND Branche='".($_REQUEST['Branche'])."' OR Branche='".($_REQUEST['Branche'])."' OR Bundesland='".($_REQUEST['Bundesland'])."' OR Name='".($_REQUEST['Name'])."'"); for($s=0; $s<mysql_num_rows($Kundendaten_query);$s++){ $Kundendaten[$i]=mysql_fetch_array($Kundendaten_query); if(!empty($Kundendaten[$i]['Name'])){ echo "<p>".nl2br($Kundendaten[$i]['Name'])."</p>\n"; } if(!empty($Kundendaten[$i]['Beschreibung'])){ echo "<p>".nl2br($Kundendaten[$i]['Beschreibung'])."</p>\n"; } if(!empty($Kundendaten[$i]['Strasse'])){ echo "<p>".nl2br($Kundendaten[$i]['Strasse'])."</p>\n"; } if(!empty($Kundendaten[$i]['PLZ'])){ echo "<p>".nl2br($Kundendaten[$i]['PLZ'])."</p>\n"; } if(!empty($Kundendaten[$i]['Ort'])){ echo "<p>".nl2br($Kundendaten[$i]['Ort'])."</p>\n"; } if(!empty($Kundendaten[$i]['Bundesland'])){ echo "<p>".nl2br($Kundendaten[$i]['Bundesland'])."</p>\n"; } if(!empty($Kundendaten[$i]['Telefon'])){ echo "<p>".nl2br($Kundendaten[$i]['Telefon'])."</p>\n"; } if(!empty($Kundendaten[$i]['Mobil'])){ echo "<p>".nl2br($Kundendaten[$i]['Mobil'])."</p>\n"; } if(!empty($Kundendaten[$i]['Fax'])){ echo "<p>".nl2br($Kundendaten[$i]['Fax'])."</p>\n"; } if(!empty($Kundendaten[$i]['Email'])){ echo "<p>".nl2br($Kundendaten[$i]['Email'])."</p>\n"; } if(!empty($Kundendaten[$i]['Homepage'])){ echo "<p>".nl2br($Kundendaten[$i]['Homepage'])."</p>\n"; } echo strftime("%d-%m-%Y %R"); echo "<br><br><br>"; } } ?> </body> </html> [/PHP] Mit freundlichen Grüßen Max Zitieren
~tine~ Geschrieben 21. März 2006 Geschrieben 21. März 2006 Und zweite, wie kann ich machen, dass wenn ich auf Button „Start“ drucke und die Daten ausgegeben werden, bleibt bei mir auch in eingebe Felder die Daten was ich vorher eingegeben habe? Um die Daten auch nach einem Submit noch in den Eingabefeldern anzeigen zu können, musst du den entsprechenden POST-Wert einfach als value angeben. Für das Feld Name also zum Beispiel:<input type="text" name="Name" size="50" value="<? echo $_POST['Name']; ?>"> Bei Auswahllisten musst du dann eben bei dem entsprechenden Wert ein selected="selected" angeben. Wie kann meine MySQL erstelle, das wenn in Eingabe Feld Name und Branche was steht, wird nur nach die beide Kriterien was ausgegeben oder, wenn ich sage:“ Gibt mir nur alle aus Bundesland so und so“, dann soll es auch gemacht werden. Ich kriege das nicht zusammen. Wenn ich das richtig verstehe, willst du die SQL-Anfrage entsprechend den ausgefüllten Feldern zusammensetzen. Auch das kannst du über POST machen, in dem du abfragst, ob die entsprechende POST-Variable vorhanden und nicht leer ist. Beispielsweise so:$select = "SELECT * from kundendaten WHERE "; if(isset($_POST['Name'] && $_POST['Name'] != "")) $select .= "Name LIKE '".$_POST['Name']."'; // und das ganze dann entsprechend auch für die anderen Felder[/PHP] tine Zitieren
madmax00 Geschrieben 21. März 2006 Autor Geschrieben 21. März 2006 Wenn ich das richtig verstehe, willst du die SQL-Anfrage entsprechend den ausgefüllten Feldern zusammensetzen. Auch das kannst du über POST machen, in dem du abfragst, ob die entsprechende POST-Variable vorhanden und nicht leer ist. Beispielsweise so: Ja, hast du richtig verstanden. Ich hab das auch probiert, aber ich kriege mal Fehler. Der Fehler kommt nun immer wenn ich in zwei oder drei Felder was eingebe. ..... $select = "SELECT * from kundendaten WHERE "; if(isset($_POST['Name']) && $_POST['Name'] != "") $select .= "Name LIKE '".$_POST['Name']."' "; if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "") $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; if(isset($_POST['Branche']) && $_POST['Branche'] != "") $select .= "Branche LIKE '".$_POST['Branche']."'"; $Kundendaten_query=mysql_query($select); .... [/PHP] [PHP]Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\program files\htdocs\MyRusTel_Index.php on line 71 Und dann noch mit dem selected=“selected“, kriege ich auch nicht hin. Ich habe verschiedene Sachen ausprobiert, aber… Bitte um die Hilfe MfG max Zitieren
~tine~ Geschrieben 22. März 2006 Geschrieben 22. März 2006 Also in deiner $select-Variablen fehlen die Verknüpfungen mit AND (oder OR), wenn mehr als ein Feld ausgefüllt wurde. Du könntest das zum Beispiel lösen, in dem du ein Flag setzt, um zu wissen ob ein AND notwendig ist oder nicht. $setAND = false; $select = "SELECT * from kundendaten WHERE "; if(isset($_POST['Name']) && $_POST['Name'] != "") { $select .= "Name LIKE '".$_POST['Name']."' "; $setAND = true; } if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "") { if($setAND == true) $select .= " AND "; $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } //und so weiter [/PHP] Bei der Auswahlliste könntest du beispielweise prüfen, ob der zu setzende value-Wert gleich der POST-Variablen ist: [PHP]<option value="<? echo $i; ?>" <? if ($i == $_POST['Branchen']) echo "selected='selected'"?> > ... </option> Zitieren
madmax00 Geschrieben 29. März 2006 Autor Geschrieben 29. März 2006 Hallo, ich bin wieder. ~tine~ kannst du mir bitte noch mal helfen, wie genau soll ich den Flag setzen, ich habe schon so und so versucht. So, wie bei mir steht, gibt es auch mit zwei verschiedenen Namen aus, aber es muss immer was in der Feld "Name" was stehen. Wie soll ich machen, dass es bei mir, wenn ich dem Feld "Bundesland" ein Bundesland eingebe, gibt der mir alle Dateien mit den gleichem Bundesland aus. Oder, wenn ich in dem Feld "Name" und "Branche" eingebe, gibt der mir alle Dateien mit den gleichen Name und Branche aus. Und so weiter. <?php // Wenn der Button start gedrueckt wurde if (isset($_POST['btnStart'])) { $strDBName = "myrustel"; $setOR = false; $setAND = false; $select = "SELECT * from kundendaten WHERE "; if(isset($_POST['Name']) && $_POST['Name'] != "") { $select .= "Name LIKE '" .$_POST['Name']. "%'"; $setAND = true; } if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "") { if($setAND == true) $select .= " AND "; $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } if(isset($_POST['Branche']) && $_POST['Branche'] != "") { if($setAND == true) $select .= " AND "; $select .= "Branche LIKE '".$_POST['Branche']."'"; } if( isset($_POST['Name']) ) { $select .= " OR "; $setOR = true; } if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "") { if($setOR == true) //$select .= " AND "; $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } if(isset($_POST['Branche']) && $_POST['Branche'] != "") { if($setOR == true) $select .= " AND "; $select .= "Branche LIKE '".$_POST['Branche']."'"; } [/PHP] Ich brauche auch noch Hilfe bei der Auswahlliste. Ich habe dein Beispiel getestet, aber es ging nicht, dann habe ich auch selber was versucht, es ging auch nicht „sauber“. So, wie es jetzt steht, gibt der mir immer das letzte Bundesland aus. Aber ich brauche den, welche ich auswähle. [PHP]<tr> <td>Bundesland / Земля Германии</td> <td> <select size="1" name="Bundesland" > <?php for($i=0; $i<=16; $i++){ echo "<option selected='selected'"; echo " value=\"".$i."\" >".$Bundesland[$i]."</option>\n"; } ?> </select> </tr> MfG max Zitieren
~tine~ Geschrieben 30. März 2006 Geschrieben 30. März 2006 Hallo max, bezüglich deinem SQL: Nimm mal alles ab der zweiten Abfrage if(isset($_POST['Name'])) raus. Du setzt den SELECT quasi doppelt zusammen, einmal mit AND und einmal mit OR. Das funktioniert nicht. Nimm mal nur den Teil mit der AND-Verknüpfung, dann sollte es gehen. Also // Wenn der Button start gedrueckt wurde if (isset($_POST['btnStart'])) { $strDBName = "myrustel"; $setAND = false; $select = "SELECT * from kundendaten WHERE "; if(isset($_POST['Name']) && $_POST['Name'] != "") { $select .= "Name LIKE '" .$_POST['Name']. "%'"; $setAND = true; } if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "") { if($setAND == true) $select .= " AND "; $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } if(isset($_POST['Branche']) && $_POST['Branche'] != "") { if($setAND == true) $select .= " AND "; $select .= "Branche LIKE '".$_POST['Branche']."'"; } [/PHP]Wenn dann immer noch Probleme auftreten, lass dir den SELECT mit [PHP]echo $select; ausgeben und schau mal was da drin steht. zur Auswahlliste: nach dem Abschicken des Formulars müsste in deinem $_POST-Array neben $_POST['Name'] usw. auch ein $_POST['Bundesland'] vorhanden sein mit dem Wert des ausgewählten Bundeslandes. Folgende Abfrage sollte dann zum gewünschten Ergebnis führen: <tr> <td>Bundesland / Земля Германии</td> <td> <select size="1" name="Bundesland" > <?php for($i=0; $i<=16; $i++){ $selected = ""; if($i == $_POST['Bundesland']) $selected = "selected='selected'"; echo "<option value='".$i."' ".$selected.">".$Bundesland[$i]."</option>\n"; } ?> </select> </tr>[/PHP] tine Zitieren
madmax00 Geschrieben 30. März 2006 Autor Geschrieben 30. März 2006 Hallo tine, erst möchte ich mich bedanken für deine Hilfe. Hat mir sehr geholfen. Bezüglich meines SQL, habe ich jetzt mit elseif erledigt. <?php // Wenn der Button start gedrueckt wurde if (isset($_POST['btnStart'])) { $strDBName = "myrustel"; $setOR = false; $setAND = false; $select = "SELECT * from kundendaten WHERE "; if(isset($_POST['Name']) && $_POST['Name'] != "") { $select .= "Name LIKE '" .$_POST['Name']. "%'"; $setAND = true; if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "0") { if($setAND == true) $select .= " AND "; $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } if(isset($_POST['Branche']) && $_POST['Branche'] != "0") { if($setAND == true) $select .= " AND "; $select .= "Branche LIKE '".$_POST['Branche']."'"; } } elseif(isset($_POST['Name']) && $_POST['Name'] != "" && isset($_POST['Bundesland']) && $_POST['Bundesland'] == "0") { $select .= "Name LIKE '" .$_POST['Name']. "%'"; $setAND = true; if(isset($_POST['Branche']) && $_POST['Branche'] != "") { if($setAND == true) $select .= " AND "; $select .= "Branche LIKE '".$_POST['Branche']."'"; } } elseif(isset($_POST['Name']) && $_POST['Name'] != "" && isset($_POST['Branche']) && $_POST['Branche'] == "0") { $select .= "Name LIKE '" .$_POST['Name']. "%'"; $setAND = true; if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "0") { if($setAND == true) $select .= " AND "; $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } } elseif(isset($_POST['Name']) && $_POST['Name'] == "" && isset($_POST['Branche']) && $_POST['Branche'] == "0") { if(isset($_POST['Bundesland']) && $_POST['Bundesland'] != "0") { $select .= "Bundesland LIKE '".$_POST['Bundesland']."'"; } } elseif(isset($_POST['Name']) && $_POST['Name'] == "" && isset($_POST['Bundesland']) && $_POST['Bundesland'] == "0") { if(isset($_POST['Branche']) && $_POST['Branche'] != "") { $select .= "Branche LIKE '".$_POST['Branche']."'"; } } $Kundendaten_query=mysql_query($select);[/PHP] Da wollte ich noch was Fragen. Darf ich, wenn ich dem nächst noch Fragen haben werde, dich direkt per ICQ fragen, da du sehr gut erklären kannst und sehr gute Beispiele gibst. MfG max Zitieren
~tine~ Geschrieben 31. März 2006 Geschrieben 31. März 2006 Da wollte ich noch was Fragen. Darf ich, wenn ich dem nächst noch Fragen haben werde, dich direkt per ICQ fragen ... MfG max Sicher, kein Problem tine Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.