<a href="-luan-381"></a> <a href=""></a> <a href="-couple-name-2347"></a> <a…
von:
VPNwelt.com sucht Feedback Wie der Name schon sagt handelt es sich um eine Review Website für…
von: florian.berg.privat
Hallo zusammen!
Wir sind gerade dabei, eine Datenbank für ein Mitgliederverzeichnis zu erstellen.
Diese soll es auch ermöglichen, innerhalb der DB zu suchen.
Unser Formular sieht wie folgt aus: <?
$kategorie = $_POST["kategorie"];
$content = $_POST["content"];
// Anhand der übergebenen Kategorie wird eine entsprechende Abfrage generiert
// und das Ergebnis in einer Variablen gespeichert.
mysql_connect("localhost","XXXXX","XXXXX") or die ("Keine Verbindung moeglich");
mysql_select_db("XXXXX") or die ("Die Datenbank existiert nicht");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
if (isset ($content))
{
switch ($kategorie)
{
case "mitglied":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE mitglied = $content");
break;
case "anrede":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE anrede = $content");
break;
case "Titel":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE titel = $content");
break;
case "vorname":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE vorname = $content");
break;
case "name":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE name = $content");
break;
case "verein_landesgruppe":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE verein_landesgeruppe = $content");
break;
case "geburtsdatum":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE geburtsdatum = $content");
break;
case "strasse":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE strasse = $content");
break;
case "plz":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE plz = $content");
break;
case "ort":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE ort = $content");
break;
case "land":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE land = $content");
break;
case "email":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE email = $content");
break;
case "homepage":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE homepage = $content");
break;
case "telefon":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE telefon1 = $content");
break;
case "handy":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE handy = $content");
break;
case "mitgliedsbeitrag_gezahlt":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE mitgliedsbeitrag_gezahlt = $content");
break;
case "bemerkungen":
$erg = mysgl_query("SELECT mitglied, vorname, name FROM Mitgliederverzeichnis WHERE bemerkungen = $content");
break;
}
if ($erg)
{
while($row = mysql_fetch_array($erg))
{
echo $row[0];
echo 'Â ';
echo $row[1];
echo 'Â ';
echo $row[2];
?>
">Details
<?
}
}
else
{
echo "Es sind keine Datensätze vorhanden";
}
}
else
{
echo "Bitte Wählen Sie eine kategorie aus und geben Sie einen Suchtext ein.";
}
?>
Leider ergibt jede Eingabe eines Suchtextes die Ausgabe des ersten echo-Befehls: 'Es sind keine ....Ä'. Woran kann das liegen?
Hallo Marcus,
in Zukunft bitte unbedingt die Zugangsdaten aus dem mysql_connect entfernen, wenn Du derartigen Code öffentlich zur Schau stellst. Andernfalls ist Hägger der Schreckliche schneller bei Dir drin, als es Dir lieb ist (zumal die Beiträge hier auch von Suchmaschinen gelesen werden).
Ich habe die Zugangsdaten in Deinem Beitrag gerade mal schnell maskiert.
Beste Grüße,
Matthias
Hallo Matthias!
Danke, das hab ich völlig verpennt! Aber jetzt auch die Daten selbst geändert
Hi Marcus,
es liegt daran das Strings auch bei SQL in Anführungszeichen gehören. Du kannst dir SQL Fehler so anzeigen lassen: echo mysql_error();
Ich hab deinen Code mal etwas gekürzt und optimiert. Du solltest Benutzereingaben immer validieren! (Habs nur so schnell runter getippt, es können noch Fehler drin sein.)
Schöne Grüße
Thomas <?php
// Anhand der übergebenen Kategorie wird eine entsprechende Abfrage generiert
// und das Ergebnis in einer Variablen gespeichert.
mysql_connect(\'localhost\',\'XXXXX\',\'XXXXX\') or die (\'Keine Verbindung moeglich\');
mysql_select_db(\'XXXXX\') or die (\'Die Datenbank existiert nicht\');
mysql_query(\'SET NAMES utf8\');
$kategorie = strtolower($_POST[\'kategorie\']);
$content = mysql_real_escape_string($_POST[\'content\']);
// verfügbare Spalten
$validKats=array(\'mitglied\',\'anrede\',\'titel\',\'vorname\',\'name\',\'verein_landesgruppe\',\'geburtsdatum\',\'strasse\',\'plz\',\'ort\',\'land\',\'email\',\'homepage\',\'telefon\',\'handy\',\'mitgliedsbeitrag_gezahlt\',\'bemerkungen\');
if(empty($content)){
echo \'$content ist leer!\';
}else if(!in_array($kategorie,$validKats)){
echo \'Bitte Wählen Sie eine kategorie aus und geben Sie einen Suchtext ein.\';
}else{
$erg = mysgl_query(\'SELECT `mitglied`, `vorname`, `name`
FROM `Mitgliederverzeichnis`
WHERE `\'.$kategorie.\'`="\'.$content.\'"\');
if(mysql_num_rows($erg)){
while($row = mysql_fetch_object($erg))
echo $row->mitglied, \' \', $row->vorname, \' \', $row->name,
\'mitglied), \'">Details
\';
}else{
echo \'Es sind keine Datensätze vorhanden\';
}
}
?>
Beitrag erstellen
EinloggenKostenlos registrieren