Zur Navigation

Formularausgabe in Mysql über tragen

1 Basti5340

Hi leute,
ich hab auf meine seite ein formularauf der seite IGNIS_Alarmierung.html
Formular:
<form action="text.php" method="post">
    AS:<input class="yellow" type="text" size="60" maxlength="60" name="AS" id="AS"> US<br/><br/>
    Ort:<input class="gray" type="text" size="5"   maxlength="5" name="PLZ" id="PLZ">&nbsp;<input class="gray" type="text" size="30" maxlength="30" name="Ort" id="Ort"><br/><br/>
    Str:<input class="yellow" type="text" size="30" maxlength="30" name="Str" id="Str"> SV Hnr &nbsp;&nbsp;<input class="yellow" type="text" size="10" maxlength="10" name="Hnr" id="Hnr"> Ob<br/><br/> 
	<input type="submit" value="Alarmieren">

  </form>
das gegenstück dazu ist eine php datei unzwar text.php
PHP-Datei:

<?php

$servername = "localhost";
$benutzer = "benutzername";
$passwort = "pss";


if ($verbindung = mysql_connect ($servername, $benutzer, $passwort)) {
echo "Die Verbindung mit der Datenbank auf <B>$servername</B> wurde aufgebaut.<P>";
} else {
echo "Der Verbindungsversuch zur DB ist fehlgeschlagen! " . mysql_error();
exit();
}

$datenbank = "funkspiel-berlin";
$tabellenname = "Alarm";

if (!mysql_select_db ($datenbank)) {
echo "Die Datenbank konnte nicht ausgewählt werden: " . mysql_error();
exit();
} else {
echo "Die Datenbank <B>$datenbank</B> wurde ausgewählt.<P>";
}



$sql = "INSERT INTO `$tabellenname` (`AS`, `PLZ`, `Ort`, `Str`, `Hnr`) VALUES ('$AS', '$PLZ', '$Ort', '$Str', '$Hnr')";

mysql_db_query ($datenbank, $sql);

$AS=$_poste['AS'];
echo "$AS<br>\n";

$result = mysql_db_query ($datenbank, $sql);


mysql_close ($verbindung);
?>
mein problem ist wen ick das formular ausfülle legt er auch eine neue spalte an aber da steht nücht drin

27.12.2010 20:02

2 Jörg

Was für eine Spalte wird in welcher Tabelle angelegt?

Ist für die Tabelle vielleicht ein entsprechender Trigger definiert?

27.12.2010 20:23

3 Basti5340

also in meiner Mysql datenbank wirt eine neue spalte aufgemacht (mit neuer ID)

27.12.2010 21:51

4 Jörg

"mit neuer ID" - das hört sich aber eher nach einem neuen Datensatz an, also gewissermaßen einer neuen Zeile? Das geschieht ja mit dieser INSERT-Abfrage:

$sql = "INSERT INTO `$tabellenname` (`AS`, `PLZ`, `Ort`, `Str`, `Hnr`) VALUES ('$AS', '$PLZ', '$Ort', '$Str', '$Hnr')";

Übrigens: ist das Formular öffentlich? dann sollte es noch gegen SQL-Injections abgesichert werden.

27.12.2010 22:16

5 Basti5340

ja genau so meine ick das aber in meiner datenbank zeigt er mir keinen inhalt also quasi einen neuen datensatz nur mit ID und nicht mehr an

27.12.2010 23:41 | geändert: 27.12.2010 23:42

6 Jörg

In deiner PHP-Konfiguration sind vermutlich register_globals auf off gestellt, so dass $AS etc. leer sind. Diese Einstellung ist allerdings auch sicherer und sollte beibehalten werden.

Du kannst die vom Formular übergebenen Parameter folgendermaßen aufnehmen:

$AS = mysql_real_escape_string($_POST['AS']);

Mit mysql_real_escape_string() sind diese dann auch abgesichert gegen die bereits oben angesprochene SQL-Injection.

28.12.2010 00:29

7 Basti5340

Ok, dan Probiere ick das mal aus ick berichte dan obs klapt

28.12.2010 00:32

8 Basti5340

Ich habe das jetz geändert es sieht so aus
php-Datei:

<?php

$servername = "localhost";
$benutzer = "benutzername";
$passwort = "passwort";


if ($verbindung = mysql_connect ($servername, $benutzer, $passwort)) {
echo "Die Verbindung mit der Datenbank auf <B>$servername</B> wurde aufgebaut.<P>";
} else {
echo "Der Verbindungsversuch zur DB ist fehlgeschlagen! " . mysql_error();
exit();
}

$datenbank = "funkspiel-berlin";
$tabellenname = "Alarm";

if (!mysql_select_db ($datenbank)) {
echo "Die Datenbank konnte nicht ausgewählt werden: " . mysql_error();
exit();
} else {
echo "Die Datenbank <B>$datenbank</B> wurde ausgewählt.<P>";
}


$AS = mysql_real_escape_string($_POST['AS']);
$PLZ = mysql_real_escape_string($_POST['PLZ']);
$Ort = mysql_real_escape_string($_POST['Ort']);
$Str = mysql_real_escape_string($_POST['Str']);
$Hnr = mysql_real_escape_string($_POST['Hnr']);

mysql_db_query ($datenbank, $sql);

$AS=$_poste['AS'];
echo "$AS<br>\n";

$result = mysql_db_query ($datenbank, $sql);


mysql_close ($verbindung);
?>
aber es funktioniert immer noch nicht... jetz sendet er noch nicht mal einen datensatz

28.12.2010 00:42 | geändert: 28.12.2010 00:46

9 Jörg

jetz sendet er noch nicht mal einen datensatz

Ja, weil du die SQL-Abfrage rausgenommen hast - die muss natürlich drin bleiben. Die Zuweisungen fügst du oberhalb ein, so dass die Variablen in der Abfrage die notwendigen Werte beinhalten.

28.12.2010 01:06

10 Basti5340

So jetz macht er es aber jetz ist mir der nächste fehler aufgefallen er schreibt es 2 mal in die datenbank

28.12.2010 01:18