Hallo und guten Morgen, ich muss aus einer MySQL-Datenbank zwei Werte auslesen. die zwei Werte stehen aber in unterschiedlichen Tabellen. For example: Tabelle1 = AA Feld: SN Tabelle1 = AA Feld: Serien-Nr Tabelle2 = AB Feld: SN Tabelle2 = AB Feld: Serien-Nr Es andert sich bei der Abfrage also nur der Name der Tabelle. Die Variable für die Tabelle muss also indirekt abgefragt werden. Mein Beispiel: In Abhängigkeit von searchtype ( Tabelle ) soll dann searchterm ( Feld ) angezeigt werden. <?php $searchtype = $_POST['searchtype']; $searchterm = $_POST['searchterm']; // $searchtype = 'RRMMC1'; // $searchterm = '123456'; /* if (!$searchtype) echo "Sie haben keinen Typ ausgewaehlt"; exit; if (!$searchterm) echo "Sie haben keine Seriennummer ausgewaehlt"; exit; */ echo "$searchtype"; echo "$searchterm"; $link = mysql_connect('localhost', 'user', 'passwd'); if (!$link) { die('Keine Verbindung möglich: ' . mysql_error()); } $db_selected = mysql_select_db('Datenbank'); if (!$db_selected) { die('Auswahl der Datenbank nicht möglich: ' . mysql_error()); } $query = 'SELECT * from $searchtype where AOI_Nr = $searchterm'; $result = mysql_query($query); if (!$result) { die('Anfrage fehlgeschlagen: ' . mysql_error()); } /* holen der Zeilen in umgekehrter Reihenfolge */ for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) { if (!mysql_data_seek($result, $i)) { echo "Cannot seek to row $i: " . mysql_error() . "\n"; continue; } if (!($row = mysql_fetch_assoc($result))) { continue; } // echo $row['$searchterm'], "<br />\n"; echo "$searchterm", "<br />\n"; } mysql_free_result($result); ?> Wer kann mir dabei helfen? Gruss Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 13.05.2011 11:10, schrieb Bernhard Junk:
Hallo und guten Morgen,
ich muss aus einer MySQL-Datenbank zwei Werte auslesen. die zwei Werte stehen aber in unterschiedlichen Tabellen. For example:
Wer kann mir dabei helfen?
a) Wo ist die konkrete Fragestellung zu openSUSE? b) Nie, nie niemals nicht UNGEPRÜFTE und UNESCAPTE Usereingaben in einen SQL-Querrysting übernehmen! c) Wo genau besteht Hilfsbedarf? Gruß Uli -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Freitag, 13. Mai 2011, 11:10:30 schrieb Bernhard Junk:
Hallo und guten Morgen,
ich muss aus einer MySQL-Datenbank zwei Werte auslesen. die zwei Werte stehen aber in unterschiedlichen Tabellen. For example:
Tabelle1 = AA Feld: SN Tabelle1 = AA Feld: Serien-Nr Tabelle2 = AB Feld: SN Tabelle2 = AB Feld: Serien-Nr
Es andert sich bei der Abfrage also nur der Name der Tabelle. Die Variable für die Tabelle muss also indirekt abgefragt werden. Mein Beispiel:
In Abhängigkeit von searchtype ( Tabelle ) soll dann searchterm ( Feld ) angezeigt werden.
$searchtype = $_POST['searchtype']; $searchterm = $_POST['searchterm'];
Hierzu wurde ja in einer anderrn Mail schon etwas gesagt
// $searchtype = 'RRMMC1'; // $searchterm = '123456'; /* if (!$searchtype)
echo "Sie haben keinen Typ ausgewaehlt"; exit;
hier fehlt { nach ) und } nach exit; wenn man die Kommntarzeichn entfernt würde es sonst wohl nicht das richtige machen
if (!$searchterm) echo "Sie haben keine Seriennummer ausgewaehlt"; exit; */ echo "$searchtype"; echo "$searchterm";
$link = mysql_connect('localhost', 'user', 'passwd'); if (!$link) { die('Keine Verbindung möglich: ' . mysql_error()); } $db_selected = mysql_select_db('Datenbank'); if (!$db_selected) { die('Auswahl der Datenbank nicht möglich: ' . mysql_error()); } $query = 'SELECT * from $searchtype where AOI_Nr = $searchterm';
das der String in ' ' eingeschlossen ist, weden die Variable $searchtype und $searchterm nicht expandiert. richtig ist hier " von wechem Typ is AOI_Nr wenn's Zahlen sin ist's ok, wenn String (Text) dann nicht, dann müsste man das so schreiben $query = "SELECT * from $searchtype where AOI_Nr = \"$searchterm\""; ult = mysql_query($query);
if (!$result) { die('Anfrage fehlgeschlagen: ' . mysql_error()); } /* holen der Zeilen in umgekehrter Reihenfolge */
das kann man doch ebsser machen, indem man mit einer "ORDER BY" Klausel in der Query die Sortierung angibt. Nur so erhält man eine garantierte Reihenfolge.
for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) { if (!mysql_data_seek($result, $i)) { echo "Cannot seek to row $i: " . mysql_error() . "\n"; continue; }
if (!($row = mysql_fetch_assoc($result))) { continue; }
// echo $row['$searchterm'], "<br />\n"; echo "$searchterm", "<br />\n"; }
mysql_free_result($result);
?> Wer kann mir dabei helfen?
Bye Jürgen -- Dr.rer.nat. Jürgen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de ------------------------------------------------------------------------------- Diese EMail ist elektronisch mittels GPG / PGP signiert. Diese elektronische Unterschrift ist in einem EMail-Anhang enthalten. Leider kann die Signatur ohne die Installation entsprechender Programme weder geprüft noch angezeigt werden. Mehr dazu unter: http://www.gnupg.org oder auch http://www.pgpi.org ------------------------------------------------------------------------------- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Bernhard, hallo Ulrich, gehört zwar weniger in die SuSE-Liste, auch die Datenüberprüfung ist sicher vonnöten. Ich habe daher an zwei Änderungen vorgenommen. Ohne zu testen nehme ich an, dass das Hauptproblem für Bernhard ist, dass keine Daten zurückkommen. Meine Variante habe ich an den Mailtext angefügt, die vorherige an entsprechenden Stellen auskommentiert. Gruß Robert <?php $searchtype = $_POST['searchtype']; $searchterm = $_POST['searchterm']; // $searchtype = 'RRMMC1'; // $searchterm = '123456'; /* if (!$searchtype) echo "Sie haben keinen Typ ausgewaehlt"; exit; if (!$searchterm) echo "Sie haben keine Seriennummer ausgewaehlt"; exit; */ echo "$searchtype"; echo "$searchterm"; $link = mysql_connect('localhost', 'user', 'passwd'); if (!$link) { die('Keine Verbindung möglich: ' . mysql_error()); } else { $db_selected = mysql_select_db('Datenbank'); if (!$db_selected) { die('Auswahl der Datenbank nicht möglich: ' . mysql_error()); } else { $query = "SELECT * from `" . addslashes($searchtype) . "` where AOI_Nr = '" . addslashes($searchterm) . "'"; $result = mysql_query($query); if (!$result) { die('Anfrage fehlgeschlagen: ' . mysql_error()); } else { /* holen der Zeilen in umgekehrter Reihenfolge for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) { if (!mysql_data_seek($result, $i)) { echo "Cannot seek to row $i: " . mysql_error() . "\n"; continue; } if (!($row = mysql_fetch_assoc($result))) { continue; } // echo $row['$searchterm'], "<br />\n"; echo "$searchterm", "<br />\n"; // hier gibst Du nur die Variable wieder }*/ $datensatz = mysql_fetch_row($result); while ($datensatz) { echo "<br>"; foreach ($datensatz as $inhalt) { echo $inhalt . ", "; } $datensatz = mysql_fetch_row($result); } mysql_free_result($result); } } } ?> -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 13.05.2011 16:22, schrieb Robert Großkopf:
Hallo Bernhard, hallo Ulrich,
gehört zwar weniger in die SuSE-Liste, auch die Datenüberprüfung ist sicher vonnöten. Ich habe daher an zwei Änderungen vorgenommen. Ohne zu testen nehme ich an, dass das Hauptproblem für Bernhard ist, dass keine Daten zurückkommen. Meine Variante habe ich an den Mailtext angefügt, die vorherige an entsprechenden Stellen auskommentiert.
Gruß
Robert
$searchtype = $_POST['searchtype']; $searchterm = $_POST['searchterm']; // $searchtype = 'RRMMC1'; // $searchterm = '123456'; /* if (!$searchtype)
echo "Sie haben keinen Typ ausgewaehlt"; exit; if (!$searchterm) echo "Sie haben keine Seriennummer ausgewaehlt"; exit; */ echo "$searchtype"; echo "$searchterm";
$link = mysql_connect('localhost', 'user', 'passwd'); if (!$link) { die('Keine Verbindung möglich: ' . mysql_error()); } else { $db_selected = mysql_select_db('Datenbank'); if (!$db_selected) { die('Auswahl der Datenbank nicht möglich: ' . mysql_error()); } else { $query = "SELECT * from `" . addslashes($searchtype) . "` where AOI_Nr = '" . addslashes($searchterm) . "'"; $result = mysql_query($query); if (!$result) { die('Anfrage fehlgeschlagen: ' . mysql_error()); } else { /* holen der Zeilen in umgekehrter Reihenfolge for ($i = mysql_num_rows($result) - 1; $i>= 0; $i--) { if (!mysql_data_seek($result, $i)) { echo "Cannot seek to row $i: " . mysql_error() . "\n"; continue; }
if (!($row = mysql_fetch_assoc($result))) { continue; }
// echo $row['$searchterm'], "<br />\n"; echo "$searchterm", "<br />\n"; // hier gibst Du nur die Variable wieder }*/ $datensatz = mysql_fetch_row($result); while ($datensatz) { echo "<br>"; foreach ($datensatz as $inhalt) { echo $inhalt . ", "; } $datensatz = mysql_fetch_row($result); } mysql_free_result($result); } } }
?> Super, Danke das wars für den ersten Teil. Jetzt habe ich noch das Problem mit der Einbindung in die HTML-Seite. Da bekomme ich die Fehlermeldung:
Die Dateien unter /srv/www/htdocs/results.php“ method=“post?=AOI-Nr&searchterm=123456&searchtype=RRMMC1 konnten nicht gefunden werden. Die HTML-Seite habe ich wie folgt aufgebaut: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> <TITLE>Suchprogramm fuer Seriennummern nach Typbezeichnung</TITLE> <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Linux)"> <META NAME="CREATED" CONTENT="20110511;18323500"> <META NAME="CHANGED" CONTENT="20110512;8462500"> <STYLE TYPE="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } --> </STYLE> </HEAD> <BODY LANG="de-DE" DIR="LTR"> <H1>Suchprogramm fuer Seriennummern</H1> <FORM ACTION="./results.php“ method=“post"> <BR>Suchtyp auswaehlen</BR> <SELECT name > <OPTION VALUE="Serien-Nr">AIO_Nr </OPTION> <OPTION VALUE="Typ" >Typ </OPTION> </select> <BR>Suchbegriff eingeben:</BR> <INPUT name="searchterm" ></br> <INPUT name="searchtype" ></br> <INPUT type="submit" value= "suchen"> <p>test</p> </FORM> </BODY> </HTML> Da werden die Übergabeparameter "searchterm" und "searchtype" defininiert aber das Script kann nicht aufgerufen werden. Gruss Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 13.05.2011 17:34, schrieb Bernhard Junk: Ich seh zwar immer noch kein openSUSE betreffendes Problem, aber
<FORM ACTION="./results.php“ method=“post">
Das schließende Anführungszeichen bei 'action' und das öffnende bei 'method' sieht mir "seltsam" aus. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Bernd,
Die Dateien unter /srv/www/htdocs/results.php“
Die Anführungszeichen scheinen aus der OpenOffice-Maschinerie zu kommen. Das ist vielleicht das spezielle eingedeutschte Format. Es wird offensichtlich vom Webserver nicht gefunden. Sonst würden die beiden nicht in der Fehlermeldung auftauchen.
method=“post?=AOI-Nr&searchterm=123456&searchtype=RRMMC1 konnten nicht gefunden werden.
Ist richtig, dass Du kein gesondertes Verzeichnis für Deine Dateien im Webserververzeichnis hast? Mich wundert sowieso, dass die Meldung den ganzen Pfad auf der Festplatte angibt ...
Die HTML-Seite habe ich wie folgt aufgebaut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> <TITLE>Suchprogramm fuer Seriennummern nach Typbezeichnung</TITLE> <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Linux)">
Als ich das gelesen hatbe dachte ich mir nur: Mutig, mutig. Mit OpenOffice HTML und irgendwo anders PHP zusammenbauen ... Prinzipiell bietet zwar OpenOffice HTML-Grundfunktionen. Sollte aber eigentlich nur für das Sammeln erster Erfahrungen genutzt werden, denn der erzeugte Code ist schnell völlig überlastet. Das sehen viele Mitglieder aus beiden Office-Mailinglisten genauso. Ich würde stattdessen bei öfterem Gebrauch von PHP und HTML Bluefish installieren. Gibt's in der Regel in den Education-Repositories. Ist im Gegensatz zu dem von mir früher genutzten Quanta wesentlich schneller bei Start und wohl auch weniger Speicherschluckend.
<META NAME="CREATED" CONTENT="20110511;18323500"> <META NAME="CHANGED" CONTENT="20110512;8462500"> <STYLE TYPE="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } --> </STYLE> </HEAD> <BODY LANG="de-DE" DIR="LTR"> <H1>Suchprogramm fuer Seriennummern</H1>
Fur das "ue" vielleicht ein "ü"
<FORM ACTION="./results.php“ method=“post"> <BR>Suchtyp auswaehlen</BR> <SELECT name > <OPTION VALUE="Serien-Nr">AIO_Nr </OPTION> <OPTION VALUE="Typ" >Typ </OPTION> </select> <BR>Suchbegriff eingeben:</BR> <INPUT name="searchterm" ></br> <INPUT name="searchtype" ></br> <INPUT type="submit" value= "suchen"> <p>test</p>
</FORM> </BODY> </HTML>
Gruß Robert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 13.05.2011 21:17, schrieb Robert Großkopf:
Hallo Bernd,
Die Dateien unter /srv/www/htdocs/results.php“ Die Anführungszeichen scheinen aus der OpenOffice-Maschinerie zu kommen. Das ist vielleicht das spezielle eingedeutschte Format. Es wird offensichtlich vom Webserver nicht gefunden. Sonst würden die beiden nicht in der Fehlermeldung auftauchen.
method=“post?=AOI-Nr&searchterm=123456&searchtype=RRMMC1 konnten nicht gefunden werden. Ist richtig, dass Du kein gesondertes Verzeichnis für Deine Dateien im Webserververzeichnis hast? Mich wundert sowieso, dass die Meldung den ganzen Pfad auf der Festplatte angibt ...
Die HTML-Seite habe ich wie folgt aufgebaut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> <TITLE>Suchprogramm fuer Seriennummern nach Typbezeichnung</TITLE> <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Linux)">
Als ich das gelesen hatbe dachte ich mir nur: Mutig, mutig. Mit OpenOffice HTML und irgendwo anders PHP zusammenbauen ... Prinzipiell bietet zwar OpenOffice HTML-Grundfunktionen. Sollte aber eigentlich nur für das Sammeln erster Erfahrungen genutzt werden, denn der erzeugte Code ist schnell völlig überlastet. Das sehen viele Mitglieder aus beiden Office-Mailinglisten genauso.
Ich würde stattdessen bei öfterem Gebrauch von PHP und HTML Bluefish installieren. Gibt's in der Regel in den Education-Repositories. Ist im Gegensatz zu dem von mir früher genutzten Quanta wesentlich schneller bei Start und wohl auch weniger Speicherschluckend.
<META NAME="CREATED" CONTENT="20110511;18323500"> <META NAME="CHANGED" CONTENT="20110512;8462500"> <STYLE TYPE="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } --> </STYLE> </HEAD> <BODY LANG="de-DE" DIR="LTR"> <H1>Suchprogramm fuer Seriennummern</H1> Fur das "ue" vielleicht ein "ü"
<FORM ACTION="./results.php“ method=“post"> <BR>Suchtyp auswaehlen</BR> <SELECT name> <OPTION VALUE="Serien-Nr">AIO_Nr</OPTION> <OPTION VALUE="Typ">Typ</OPTION> </select> <BR>Suchbegriff eingeben:</BR> <INPUT name="searchterm"></br> <INPUT name="searchtype"></br> <INPUT type="submit" value= "suchen"> <p>test</p>
</FORM> </BODY> </HTML> Gruß
Robert Hallo Robert, habe inzwischen bluefish und quanta installiert. Sollen die " nach FORM ACTION= rausgenommen werden? ich habe es rausgenommen aber trotzdem findet er sie results.php nicht. Gleiche Fehlermeldung. Wie sollte das Script "OpenOffice-bereinigt" denn aussehen? Gruss Bernd
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Bernd, die folgende Zeile enthält 4* ", von denen 2 aber nicht korrekt sind (das sind nicht die normalen Anführungszeichen oben ...)
<FORM ACTION="./results.php“ method=“post">
<FORM ACTION="results.php" method="post">
<BR>Suchtyp auswaehlen</BR>
Für die Umlautdarstellung: <BR>Suchtyp auswählen</BR> Eine gute Anlaufstelle ist für mich immer selfhtml: http://de.selfhtml.org/ Was der PHP-Datei für eine ordnungsgemäße Verarbeitung der Umlaute fehlt ist der Hinweis auf den verwendeten Zeichensatz: Für PHP: header("Content-Type: text/html; charset=utf-8"); Die HTML-Datei ist entsprechend erstellt, könnte also auch direkt Umlaute verarbeiten. Gruß Robert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fri, 13 May 2011, Robert Großkopf schrieb:
gehört zwar weniger in die SuSE-Liste, auch die Datenüberprüfung ist sicher vonnöten.
<?php $searchtype = $_POST['searchtype']; $searchterm = $_POST['searchterm']; if (!$searchtype) { echo "Sie haben keinen Typ ausgewaehlt"; exit; } if (!$searchterm) { echo "Sie haben keine Seriennummer ausgewaehlt"; exit; } echo "$searchtype"; echo "$searchterm"; $mysqli = new mysqli('localhost', 'user', 'passwd', 'Datenbank'); if ($mysqli->connect_error) { die("Connect failed: %s\n", $mysqli->connect_error); } // hier könnte man noch ein 'ORDER BY feldname [DESC]' anhängen // um nach feldname zu sortieren (mit DESC absteigend). $query = $mysqli->prepare("SELECT * from ? where AOI_Nr = ?"); if($query) { $query->bind_param('ss', $searchtype, $searchterm); $result = $query->execute(); if (!$result) { die('Anfrage fehlgeschlagen: ' . $query->error()); } while ($row = $result->fetch_assoc())) { echo implode(", ", $row), "<br />\n"; } $result->free(); } $mysqli->close(); ?> HTH, -dnh -- Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so. -- Douglas N. Adams, Last Chance To See -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Bernhard Junk
-
David Haller
-
Dr. Jürgen Vollmer
-
Robert Großkopf
-
Ulrich Gehauf