Zum Inhalt springen

MySQL-Abfrage im PHP Code


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.:rolleyes:

MfG max

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...