Hallo,
ich möchte anhand einer Kundennummer bzw. eines Nachnamens alle weiteren Daten einer Person aus meiner MySQL-DB auslesen.
Das HTML-Doc sieht so aus:
Die Datenbank hat folgenden Aufbau:HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <link rel="stylesheet" type="text/css" href="css/styles_screen.css"> </head> <body> <center> <p><b>Suchkriterium</b></p> <form action="search.php" method="post"> <table border="0"> <tr> <td> <input type="radio" name="search" id="kdnr" checked="checked" />Kundennummer <input type="radio" name="search"id="name" />Nachname </td> </tr> <tr> <td><input type="text" name="text" maxlength="50"></td> </tr> <tr> <td><input type="submit" name="send" id="send" value="suchen" /></td> </tr> </center> </body> </html>
Tabelle 1 - personalien: id (kundennummer), anrede, vorname, nachname, ...
Tabelle 2 - informationen: mail, telefonnummer, ...
Ich habe schon ein paar Versuche der search.php hinter mir, doch läuft das ganze noch nicht...
Das Problem ist die Verbindung mehrerer Tabellen und die gescheite Ausgabe.
Hat da wer einen Anstoß?
Freundliche Grüße
El
Geändert von el_matador (19.04.2010 um 12:31 Uhr)
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
hab verschiedene dinge ausprobiert... als letztes hab ich deinen tipp versucht in ein bestehendes doc einzufügen.
ich muss dazu sagen, dass ich keine ahnung von php habe und grad erst ein paar tutorials abgearbeitet habe (unter anderem auch das folgende doc).
freue mich sowohl über die lösung, als auch über verbesserungsvorschläge.PHP-Code:<?php
$db_host = "localhost";
$db_user = "abc";
$db_pass = "abc";
$db_name = "abc";
$conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
mysql_select_db( $db_name, $conID );
}
$sql = "SELECT * FROM `personalien` JOIN `stufe1` ON (personalien.id = stufe1.kdnr) WHERE personalien.nachname = 'search'";
$abfrageergebnis = mysql_query( $sql, $conID );
$anzahl = mysql_num_rows( $abfrageergebnis );
echo "<p>Es wurden <strong>" .$anzahl. "</strong> Datensätze gefunden!</p>";
echo '<table border="1">';
echo "<tr><th>id</th><th>Anrede</th><th>Titel</th><th>Vorname</th><th>Nachname</th><th>Straße</th><th>Postleitzahl</th><th>Ort</th><th>E-Mail</th><th>Geburtstag</th><th>Nationalität</th><th>Telefonnummer</th><th>Migrationshintergrund</th></tr>";
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{
echo "<tr>";
echo "<td>" .$datensatz['id']. "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['anrede'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['titel'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['vorname'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['nachname'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['strasse'] ). "</td>";
echo "<td>" .$datensatz['plz']. "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['ort'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['mail'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['geburtstag'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['nationalitaet'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['telefon'] ). "</td>";
echo "<td>" .htmlspecialchars ( $datensatz['migration'] ). "</td>";
echo "</tr>";
}
echo "</table>";
?>
sicherheitstechnisch muss da nichts rein, da es nur im intranet laufen wird.
edit: bei den echo's fehlt jetzt noch die tabelle für die daten der stufe1...
Geändert von el_matador (22.04.2010 um 14:46 Uhr)
Das ist kein Grund - Ich und viele andere sprechen da aus Erfahrung. Und wenn es nur einer ist, der schlechte Laune hat und Dir ans Bein pi... will.sicherheitstechnisch muss da nichts rein, da es nur im intranet laufen wird.
...Meine Meinung
für mich schon.
1. kenne ich die leute, da hat keiner computerkenntnisse und exploits sind für die us-städte.
2. sollte da mal was schief laufen, ist es dann deren problem.
aber um auf das eigentliche thema zurückzukommen...
bin mit der abfrage leider immernoch nicht weiter.![]()
Interessante Einstellung
Das Problem wird sein, dass keiner weiß, wo das Problem ist und was nicht klappt.
Schließlich klingt das so, dass Du eine Lösung hast, über die Du Dich freust und nur noch Verbesserungsvorschläge suchst.
Hast Du mal Dein Select-Statement direkt in phpmyadmin ausprobiert um zu gucken, ob es was liefert?
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
flasch ausgedrückt: ich würde mich über eine lösung freuen!
hab jetzt noch ein wenig gebastelt, aber er scheint den suchbegriff zu ignorieren.
jedenfalls bekomme ich keinen datensatz ausgegeben.
das hier ist die letzte version:
PHP-Code:<?php
$db_host = "localhost";
$db_user = "xyz";
$db_pass = "xyz";
$db_name = "blub";
$searchstring = $_POST['searchkey'];
$conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
mysql_select_db( $db_name, $conID );
}
$sql = "SELECT * FROM personalien, stufe1 WHERE personalien.id = '$searchstring' AND stufe1.kdnr = '$searchstring'";
$abfrageergebnis = mysql_query( $sql, $conID );
$anzahl = mysql_num_rows( $abfrageergebnis );
echo .........
?>
Geändert von el_matador (22.04.2010 um 15:36 Uhr)
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
ja das funktioniert. war mit das erste, was ich getestet habe.
edit: nachdem ich nun
mit diesemPHP-Code:$sql = "SELECT * FROM personalien, stufe1 WHERE personalien.id = '$searchstring' AND stufe1.kdnr = '$searchstring'";
ausgetauscht habe, läuft es. blöde anführungszeichen... ^^PHP-Code:$sql = 'SELECT * FROM personalien, stufe1 WHERE personalien.id = '.$searchstring.' AND stufe1.kdnr = '.$searchstring.' ';
Geändert von el_matador (22.04.2010 um 16:04 Uhr)
D.h. Du hast Dir per "echo $sql;" die Abfrage ausgeben lassen und genau diese Abfrage in phpmyadmin ausprobiert?
Wundert mich ein bisschen, weil das hier eigentlich nur funktionieren sollte, wenn in personalien.id und in stufe1.kdnr alle Werte mit Prozentzeichen "umrahmt" wären:
PHP-Code:"SELECT * FROM personalien, stufe1 WHERE personalien.id = '%$searchstring%' AND stufe1.kdnr = '%$searchstring%'";
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
hab meine abfrage erst in phpmyadmin getestet und dann in den code eingefügt und angepasst.
wenigstens habe ich den fehler gefunden. vielen dank!
allerdings habe ich jetzt ein anderes problem, welches ich erst jetzt bemerkt habe...
ich habe die abfrage um die tabelle stufe2 erweitert:
dumm ist, dass ich jetzt natürlich nur ein ergebnis bekomme, wenn die anderen tabellen schon daten enthalten.PHP-Code:$sql = 'SELECT * FROM personalien, stufe1, stufe2 WHERE (personalien.id = '.$searchstring.' AND stufe1.kdnr = '.$searchstring.' AND stufe2.kdnr = '.$searchstring.') ';
wie löse ich dies am besten, wenn die anderen tabellen noch nicht befüllt wurden und ich dennoch eine ausgabe bekommen möchte?
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)