Marcus
Avatar Marcus
Themenersteller
Guru (223 Beiträge)

Daten werden nicht übergeben

am 16.03.2012, 19:23 Uhr eröffnete Marcus folgenden Thread
PHP & MySQL    2904 mal gelesen    3 Antwort(en).

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?


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 16.03.2012, 19:57 Uhr schrieb seitenreport

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


SEO Analyse und Website-Check mit Seitenreport

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 16.03.2012, 19:59 Uhr schrieb Marcus

Hallo Matthias!

Danke, das hab ich völlig verpennt! Aber jetzt auch die Daten selbst geändert


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de


gelöschter Benutzer
am 17.03.2012, 00:34 Uhr schrieb

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\';
}
}
?>


  • 1


« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.