PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Werte aus HTML nach PHP


TomSP
20.12.2003, 13:40:54
Hallo an alle!

Ich habe mal wieder ein Problem:-(
Ich muß von zwei Select-Feldern auf einer HTML-Seite den Wert an ein PHP-Sript übergeben und mit diesen Werten eine Datenbankabfrage machen. Die HTML-Seite habe ich schon und mit der Datenbankabfrage gibt es auch keine Probleme, aber wie übernehme ich die Werte
aus den Select-Feldern? Kann mir da jemand
weiterhelfen? Ich bedanke mich schon jetzt für Eure Bemühungen!!!!!!!

Gruß
TomSp

xabbuh
20.12.2003, 13:52:11
Die Select-Abfrage in ein Formular packen, das Formular an die zweite Seite schicken. Der Name des Select-Feldes ist eine Variable, die als Wert, die Option hat, die bei der Select-Abfrage ausgewählt wurde.

seite1.php:

<form name="formular" method="POST" action="seite2.php">
<select name="auswahl">
<option value="option1">1. Option</option>
<option value="option2">2. Option</option>
</select>
</form>


seite2.php:
//DER ÜBERGEBENE WERT DES SELECT-FELDES: $_POST['auswahl']
echo "Die Auswahl ist: " . $_POST['auswahl'];

Angezeigt wird dann je nach Auswahl auf seite1.php:
Die Auswahl ist: option1
oder
Die Auswahl ist: option2

TomSP
20.12.2003, 15:06:37
Hallo Xabbuh,

bei mir klappt das irgendwie nicht. Ich habe folgenden HTML-Text:
<form name="Faecher" method="get" action="/lv-liste2.php">Welche <br>
<select name="Fachauswahl">
<option value="Fach1" selected="selected">Fach1</option>
<option value="Fach2">Fach2</option>
<option value="Fach3">Fach3</option>
</select>
-Veranstaltungen
finden im&nbsp;
<select name="Semester">
<option value="SS" selected="selected">SS</option>
<option value="WS">WS</option>
</select>
statt? <input type="submit" name="Anfragen" value="Anfragen!"> <br>
</form>

ist da eventuell ein Fehler drin?
Da sollen ja gleich zwei Selectfelder abgefragt werden, deswegen habe ich auch nur ein Formular verwendet.

xabbuh
20.12.2003, 15:20:53
Nach dem Absenden des Formulars stehen dir auf der Seite lv-liste2.php folgende Variablen zur Verfügung:

$_GET['Fachauswahl'] : als Wert enthält die Variable den value der ersten Select-Abfrage
$_GET['Semester'] : Wert der Variablen ist der value der zweiten Select-Abfrage

Wähle zum Beispiel Fach 1 und WS aus und lass dir diese beiden Variablen auf lv-liste2.php ausgeben:

echo "Gewähltes Fach: " . $_GET['Fachauswahl'] . "<br>";
echo "Gewähltes Semester: " . $_GET['Semester'] . "<br>";

Als Ausgabe erhälst du dann:

Gewähltes Fach: Fach1
Gewähltes Semester: WS

TomSP
20.12.2003, 15:28:03
Hallo xabbuh,

habe ich getestet und folgende Ausgabe erhalten:

Gewähltes Fach:
Gewähltes Semester:

aber wie du siehst, wurden die Werte nicht übergeben. Was kann denn da noch schief laufen. Ich hab schon alle möglichen Links und Bücher durchforstet aber ich finde keine klare Antwort.

Gruß
TomSp

xabbuh
20.12.2003, 15:52:14
Poste mal deinen gesamten Code des Formular und der Verarbeitung des Formulars.

Welche php-Version nutzt du?

nino
20.12.2003, 15:54:56
<form name="Faecher" method="get" action="/lv-liste2.php">

meines wissens nach müsste es heißen:

<form name="Faecher" method="POST" action="lv-liste2.php">

nino

TomSP
20.12.2003, 16:02:56
Hallo,

ich benutze PHP4

Hier ist das PHP-Script:

<?
$_GET['Fachauswahl'];
$_GET['Semester'];
/* Datenbankserver */
$db_server = "localhost";
/* Datenbankname */
$db_name = "datenbank";
/* Datenbankuser */
$db_user = "root";
/* Datenbankpasswort */
/*$db_passwort = "behappy";*/

/* Stellt Connect zu Datenbank her */
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$result = mysql_db_query("datenbank","SELECT fach, thema, zeit, zimmer FROM Kurs
where fach=$_GET[Fachauswahl] and Semester=$_GET[Semester]");
while($row = mysql_fetch_row($result)){
echo $row[0] .": ";
echo $row[1] ." (Zeit: ";
echo $row[2] ."; Zimmer: ";
echo $row[3] .")<br>";
}
?>

und hier das HTML-Sript:
<html>
<body>
<h1>Planung</h1>
Ausgabe einer <a href="dozenten.php">Dozentenliste</a> mit Link zur
jeweiligen
email adresse

<form name="Faecher" method="get" action="/lv-liste.php">Welche <br>
<select name="Fachauswahl">
<option value="Fach1" selected="selected">Fach1</option>
<option value="Fach2">Fach2</option>
<option value="Fach3">Fach3</option>
</select>
-Veranstaltungen
finden im&nbsp;
<select name="Semester">
<option value="SS" selected="selected">SS</option>
<option value="WS">WS</option>
</select>
statt? <input type="submit" name="Anfragen" value="Anfragen!"> <br>
</form>
</body>
</html>

xabbuh
20.12.2003, 16:05:44
Formular können entweder mit method="POST" oder mit method="GET" übergeben werden. Bei der Get-Methode werden alle Werte als Parameter an die URL angehänt, bei der Post-Methode werden die Daten vom Webserver über den Standardeingabekanal zur Verfügung gestellt (s.selfhtml (http://selfhtml.teamone.de/html/formulare/definieren.htm#bereich)).

Wird das Formular mittels Get übergeben, müssen sie bei der Verarbeitung mit $_GET['var'], bei Post mit $_POST['var'] angesprochen werden.

xabbuh
20.12.2003, 16:17:08
Original geschrieben von TomSP
<?
$_GET['Fachauswahl'];
$_GET['Semester'];


Was willst du mit dem Teil bewirken?

Original geschrieben von TomSP ]
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$result = mysql_db_query("datenbank","SELECT fach, thema, zeit, zimmer FROM Kurs where fach=$_GET[Fachauswahl] and Semester=$_GET[Semester]");
?>

Versuch es mal so:


$fachauswahl=$_GET['Fachauswahl'];
$semester=$_GET['Semester'];

$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$result=mysql_db_query("datenbank", "SELECT fach, thema, zeit, zimmer FROM Kurs where fach='$fachauswahl' and Semester='$semester'");

TomSP
21.12.2003, 13:25:38
Hallo Xabbuh,

also, bezwecken möchte ich folgendes:

Auf der HTML-Seite soll das Fach und das Semester eingegeben werden. Nach drücken des "Anfragen!" Buttons sollen die Werte an ein PHP-Script übergeben werden. Mit diesen Werten soll dann die Abfrage an die Datenbank gesendet werden. Die Ausgabe soll dann anzeigen Welche Themen zu welcher Zeit und in welchem Zimmer behandelt werden. Z.B: Alle Themen des Fachs Informatik im Sommer Semester.

Wenn ich in die Datenbankabfrage die Werte fest eintrage funktioniert es wunderbar, aber sobald ich die Werte über Variablen haben möchte bekomme ich nichts angezeigt.
Irgendwie klappt es mit der Wertübergabe nicht so richtig.

xabbuh
21.12.2003, 14:17:57
Hast du es mal so ausprobiert wie von mir oben beschrieben?

TomSP
21.12.2003, 14:24:19
Ja, hab ich und immer noch das selbe Phänomen. Ich habe so langsam den Verdacht, dass ein Problem mit meinem System vorliegt, da ich schon alles mögliche ausprobiert habe!

xabbuh
21.12.2003, 16:16:08
Poste mal nochmal den aktuellen Code der beiden Seiten.

TomSP
21.12.2003, 19:22:38
Hallo Xabbuh,

hier nochmal der Code:

HTML:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EsAufgabe.html</title>
</head>
<body>
<h1>Studienplanung</h1>
<h2>
Teilaufgabe (a):</h2>
Ausgabe einer <a href="dozenten.php">Dozentenliste</a> mit Link zur
jeweiligen
email adresse
<h2>Teilaufgabe (b):</h2><br>
Welche <br>
<form action="/lv-liste.php" method="get">
<p>
<select name="lv">
<option value="Informatik" selected="selected">Informatik</option>
<option value="Mathematik">Mathematik</option>
<option value="Physik">Physik</option>
</select>
-Veranstaltungen
finden im
<select name="semester">
<option value="SS" selected="selected">SS</option>
<option value="WS">WS</option>
</select>
statt? <input type="submit" value="Anfragen!"> </p>
</form>


PHP:

<?
$lv=$_GET['lv'];
$semester=$_GET['semester'];
/* Datenbankserver */
$db_server = "localhost";
/* Datenbankname */
$db_name = "studienplanung";
/* Datenbankuser */
$db_user = "root";
/* Datenbankpasswort */
/*$db_passwort = "behappy";*/

/* Stellt Connect zu Datenbank her */
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$result = mysql_db_query("studienplanung","select fach, thema, zeit, zimmer FROM Kurs
where fach ='$lv' and semester ='$semester'");
while($row = mysql_fetch_row($result)){
echo $row[0] .": ";
echo $row[1] ." (Zeit: ";
echo $row[2] ."; Zimmer: ";
echo $row[3] .")<br>";
}
?>

xabbuh
21.12.2003, 20:43:41
Ich habe keinen Fehler gefunden. Normalerweise sollte der Code so funktionieren.

TomSP
22.12.2003, 09:24:07
Hallo Xabbuh,

hab ich mir fast gedacht, na dann muss ich wohl mal mein System kontrollieren.
Vielen Dank, frohe Weihnachten und ein gesundes Jahr 2004

Gruß
TomSp

meikel (†)
22.12.2003, 10:03:49
Original geschrieben von TomSP

<?
$_GET['Fachauswahl']; # <-- was soll das?
$_GET['Semester']; # <-- was soll das?

$result = mysql_db_query("datenbank","SELECT fach, thema, zeit, zimmer FROM Kurs where fach=$_GET[Fachauswahl] and Semester=$_GET[Semester]");

Abgesehen mal davon, daß mysql_db_query() alt wie die Steinkohle ist: Dein Query kann so nicht funktionieren.
WHERE fach=$_GET[Fachauswahl]
Das verursacht einen SQL Fehler, weil Du Strings als Strings übergeben mußt:
WHERE fach='$_GET[Fachauswahl]'
MySQL erwartet hier Hochkommas und keine Gänsefüße!

xabbuh
22.12.2003, 12:06:05
Original geschrieben von meikel

<?
$_GET['Fachauswahl']; # <-- was soll das?
$_GET['Semester']; # <-- was soll das?

$result = mysql_db_query("datenbank","SELECT fach, thema, zeit, zimmer FROM Kurs where fach=$_GET[Fachauswahl] and Semester=$_GET[Semester]");

Abgesehen mal davon, daß mysql_db_query() alt wie die Steinkohle ist: Dein Query kann so nicht funktionieren.
WHERE fach=$_GET[Fachauswahl]
Das verursacht einen SQL Fehler, weil Du Strings als Strings übergeben mußt:
WHERE fach='$_GET[Fachauswahl]'
MySQL erwartet hier Hochkommas und keine Gänsefüße!

Diese Sachen hat er bereits behoben (s. sein Post vom 21.12.2003 um 19:22).

meikel (†)
22.12.2003, 12:19:03
Original geschrieben von xabbuh
Diese Sachen hat er bereits behoben (s. sein Post vom 21.12.2003 um 19:22).
Gelesen.

chris17
22.12.2003, 13:06:16
Hallo zusammen,

@TomSP, was mir aufgefallen ist, dass Du die Gross-/Kleinschreibung von Tabellennamen und Feldern nicht konsequent beachtest: Bsp. WHERE semester.., oder WHERE Semester...

Die Datenbank reagiert da bissl pingelig, überprüfe doch mal im phpMyAdmin die exakte Schreibweise der Tabellen und Felder.

Schöne Feiertage

Christian

TomSP
23.12.2003, 16:12:45
Hallo Chris,

die Gross- und Kleinschreibung war nur ein Test. Es funktioniert aber weder so noch so.


Ebenfalls schöne Feiertage

TomSP
29.12.2003, 11:44:40
Hallo alle zusammen,

ich habe das Problem in den Griff bekommen.

Der Get-Befehl im PHP-Script musste so aussehen:

$_GET ['Variable'];

und nicht

$Variable=$_GET ['Variable'];


Gruß

TomSP

NanoCyte
02.01.2004, 11:12:45
hm... mich würd jetzt mal der code interessieren, wie er jetzt aussieht, weil dem letzten post von TomSP nach sind wir wieder in der mitte des threads gelandet *wunder*