PHP / Mysql Auswertungen mit Formular Elementen

bgauch

Mitglied
Hi zusammen

Ich habe ein Dutzend Probleme. Fange mal mit dem ersten an...

Ausgangslage: Habe auf meiner Page eine umfangreiche Mysql DB, die ich via PHP auswerten möchte.
Jetzt habe ich auf einer Seite eine Drop Down Liste die generiert wird, mit allen Namen aus einer Tabelle. In dieser Liste soll man einen Namen auswählen können, auf den submit Button klicken, der Name soll als Variable an ein anderes PHP Script übergeben werden, dass alle Infos zu dem Namen aus der DB holt. Schlussendlich sollen diese Informationen auf der gleichen Page angezeigt werden.

Das mit der Liste mit den Namen habe ich ohne Probleme hingekriegt. Folgende Sachen kriege ich aber nicht hin:

- Wie bringe ich dem Submit Button bei dass er kein Eingabefeld hat, sondern den selektierten Wert aus der generierten Liste nehmen soll ?
- Das zusätzliche Script dass die DB Abfrage macht wird gar nicht beachtet. Mache ich zum testen beim Submitter ein Eingabefeld und gebe einen Wert ein, wird in der Ausgabe statt die DB Abfrage einfach wieder der Wert der Variable ( meine Eingabe ) ausgegeben. Was mache ich dort falsch.

Bin froh um Rat, und wenn möglich auch entsprechende Beispiel in Code.

Thanks !

bgauch
 
Hi

Der Code für die Drop Down Liste, die ja funktioniert, ist folgender:


<?php

// Parameter
$servername = "www.xxxxx.de";
$benutzer = "xxxxx";
$passwort = "xxxxx";
$datenbank = "xxxxx";

// DB-Verbindung herstellen
if ($verbindung = mysql_connect($servername, $benutzer, $passwort));

// Die Datenbank auswählen
(!mysql_query("USE $datenbank;"));

// DB Abfrage
$anfrage = "SELECT name FROM driver order by name";

$ergebnis = mysql_query($anfrage);


printf("<br><form><select size=\"10\">
");
while($datensatz = mysql_fetch_assoc($ergebnis))
{
printf("<option> %s </option>


", $datensatz["name"]);
}

// Die Verbindung zur Datenbank schließen
mysql_close($verbindung);

?>


Der Code für den Submitter, der aus obiger Liste den selektierten Wert übernehmen soll und an das select_driver.php übergeben soll: = mein Problem....


<form action="select_driver.php" method="post">
<input type="?" name="drivername">
<input type="submit">
</form>


Der Code vom select_driver.php: ( hier nur als count * )

<?php

// Parameter
$servername = "www.xxxxx.de";
$benutzer = "xxxxx";
$passwort = "xxxxx";
$datenbank = "xxxxx";

// DB-Verbindung herstellen
if ($verbindung = mysql_connect($servername, $benutzer, $passwort));

// Die Datenbank auswählen
(!mysql_query("USE $datenbank;"));

// DB Abfrage
$anfrage = "SELECT count (*) FROM drivers WHERE name = $drivername";

if (!($ergebnis = mysql_query($anfrage)));


// Den Kopf der HTML-Tabelle generieren
echo "<TABLE BORDER=\"1\">";
echo "<TR>";
echo "<TD BGCOLOR=\"#BBBBBB\"><B>Anzahl Rows</B></TD>";
echo "</TR>";

// Alle Zeilen aus der DB holen
// und in die HTML-Tabelle einfügen
while ($zeile = mysql_fetch_object($ergebnis)) {
echo "<TR>";
echo "<TD>$zeile->total</TD>";
echo "</TR>";
}

// Das Ende der HTML-Tabelle generieren
echo "</TABLE>";

// Die Verbindung zur Datenbank schließen
mysql_close($verbindung);

?>


Und dieser Output soll dann nicht in einem neuen Fenster, sondern im gleichen Fenster wie die Abfrage erscheinen....

Na dann, amüsiert euch mal drüber......
 
Erst einmal willkommen im Forum.


Probier mal Folgendes:
PHP:
<?php

	// Parameter
	$servername = 'www.xxxxx.de';
	$benutzer = 'xxxxx';
	$passwort = 'xxxxx';
	$datenbank = 'xxxxx';

	// DB-Verbindung herstellen
	$verbindung = mysql_connect($servername, $benutzer, $passwort);
	// Die Datenbank auswählen
	mysql_select_db($datenbank);


	if( isset($_POST['submit:treiberauswahl']) ) {

/**
	 *  Verarbeitung der Treiberauswahl
	 */
		// DB Abfrage
		$anfrage = "
			SELECT
			        COUNT(*)
			  FROM
			        `drivers`
			  WHERE
			        `name` = '".mysql_real_escape_string($_POST['drivername'])."'
			";
		if( $ergebnis = mysql_query($anfrage) ) {
			echo mysql_result($ergebnis, 0);
		}

	} else {

	/**
	 *  Formular zur Treiberauswahl
	 */
		// DB Abfrage
		$anfrage = "SELECT name FROM driver order by name";
		$ergebnis = mysql_query($anfrage);

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select name="drivername">
<?php

		while( $datensatz = mysql_fetch_assoc($ergebnis) ) {
			echo '<option value="'.$datensatz['name'].'">'.$datensatz['name'].'</option>';
		}

?>
</select>
<input type="submit" name="submit:treiberauswahl">
</form>
<?php

	}

	// Die Verbindung zur Datenbank schließen
	mysql_close($verbindung);

?>

PS: Versuche doch das nächste Mal die foreneigenen Formatierungsauszeichnungen zu verwenden: [mono?]<Inhalt>[?/mono] für nichtproportionalen Fließtext, [html?]<Inhalt>[?/html] für HTML-Quellcode, [php?]<Inhalt>[?/php] für PHP-Quellcode und [code?]<Inhalt>[?/code] für übrige Quellcode oder präformatierte Texte. (Bitte kopiere die obigen Beispiele nicht, da diese durch „WORD JOINER“-Zeichen an der Formatierungsfunktion vorbeigeschleust werden.
 
Zuletzt bearbeitet:
Hi Gumbo

Danke für das Script. Verstehe ich das richtig dass alles ins gleiche php.File kommt ?
Habe es jedenfalls mal so gemacht. Das Drop Down Formular samt Inhalt wird richtig geliefert, daneben der Submit Button. Selektiere ich einen Namen und drücke submit, dann verschwinden das Formular und der Button, das wars. Seufz.
 
Hi Gumbo. Thanks, es funktioniert.

Sehe wieder einmal dass man mit 08/15 PHP aus diversen Büchern nicht weiterkommt. Kann demnach deinen Code nicht ganz nachvollziehen ( $_SERVER['PHP_SELF'] zum Beispiel ).
Gibt es auch eine Möglichkeit dass nach dem submitten das Formularfeld samt Button stehen bleibt, und nicht dem Output Platz macht ? Damit man ohne die Seite zu wechseln, bzw. ohne auf die erste Seite zurückzukehren, mit Abfragen weiterfahren kann.

Würde wieder eines von meinen ausstehenden ( dutzenden ) Problemen lösen.....
 
Gibt es auch eine Möglichkeit dass nach dem submitten das Formularfeld samt Button stehen bleibt, und nicht dem Output Platz macht ?
Sicher, entferne einfach die Klammern des Alternativzweiges der if-Kontrollstruktur.

Was die Variable _SERVER angeht, handelt es sich dabei um eine von PHP vordefinierte Variable, in dem Informationen über HTTP-Header, Pfade oder den Speicherort des Skripts gespeichert sind. Schau einfach mal ins PHP-Handbuch.
 
seufz, habe es jetzt mit allen Klammern in den if Statements versucht, aber ausser Fehlermeldungen oder dem gleichen Stand wie vor der Änderung habe ich nichts erhalten.
Sorry.....
 
Der Alternativzweig einer „if“-Kontrollstruktur ist der „else“-Block. Wenn du dort die Klammern und den Begriff „else“ entfernst, sollte es funktionieren.

Falls du's jetzt immer noch nicht hinbekommst, ändere ich meinen vorherigen Beitrag entsprechend.
 
Zurück