myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   PHP-Formular zum Füllen einer Datenbank (https://mygully.com/showthread.php?t=2630880)

kaddo 27.05.12 23:21

PHP-Formular zum Füllen einer Datenbank
 
Hallo.
Ich versuche schon seit knapp 2 Stunden, mit einem Formular eine Datenbank zu füllen. Nur leider gelingt mir das nicht. Ich weiß nicht warum. Wenn ich das Formular ausfülle, werde ich auf eine weiße Seite verbunden und nichts weiter passiert - die Datenbank bleibt leer. Gleich vorweg: Es geht hier nicht um eine Seite zum Passwortklau! Es geht um eine schulische Angelegenheit.

Findet jemand dort einen Fehler?

Seite mit Formular..
Code:

<html>
  <head>
    <title>index</title>
  </head>
  <body>
    <form method="post" action="action.php">
    Name: <input name="Name" type="text"><br>
Klasse: <input name="Klasse" type="text"><br>
    <input type="submit" value="Login">
    </form>
  </body>
  </html>

...verbindet auf...
Code:

<?php
if (isset($Send))
{
mysql_connect("#","#","#") or die ("Keine Verbindung"); 
 

$ID = $_POST["Name"]; 
$Geraet = $_POST["Klasse"]; 
 

$eintragen = "INSERT INTO Inventar VALUES ('$Name', '$Klasse')"; 

$eintragen = mysql_query($eintragen) or die (mysql_error()); 
}
?>

...die wiederum die Datenbank befüllen soll.

Nur wie gesagt, wird die Datenbank nicht befüllt, ich verde auf eine leere Seite verbunden. Den farblich markierte Teil habe ich mit dem Link zur Datenbank, dem Nutzernamen und dem Passwort versehen.

Your_Conscience 28.05.12 04:22

Also ich bin jetzt kein Profi, aber ich "musste" mir auch mal eine php-Datei basteln, um Einträge in eine Datenbank vorzunehmen.

Zitat:

mysql_connect("#","#","#") or die ("Keine Verbindung");
Da muss die URL des Servers rein, der Datenbankname, Benutzername und das Passwort.
Zitat:

$eintragen = "INSERT INTO Inventar VALUES ('$Name', '$Klasse')";
Hier sagst du ihm zwar, was du eintragen möchtest, aber nicht wo genau.

Am besten, ich poste mal ein Beispiel:
Code:

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title></title>
</head>

<body>
        <?php       
                $names=mysql_query('set names utf8');       
                $benutzer = $_POST["benutzer"];
                $h = date("G");
                $m = date("i");
                $s = date("s");
                $d = date("z");
                $y = date("Y");
                $ip = $_SERVER['REMOTE_ADDR'];
                $sql = "INSERT INTO Tabellenname (name, h, m, s, d, y, ip) VALUES ('$benutzer', $h, $m, $s, $d, $y, '$ip')";               
                $db = mysqli_connect("Servername", "Datenbank-Benutzername", "Datenbank-Passwort", "Datenbank-Name") or die ("Keine Verbindung moeglich: " . mysql_error());
                //Datenbank-Benutzername und Datenbank-Name könnte auch vertauscht gewesen sein
                mysqli_query($db, $sql);
        ?>
</body>

</html>

Ich hoffe, ich konnte dir weiterhelfen. :)

ProgMaster 28.05.12 07:57

Du scheinst offensichtlich nicht wirklich Ahnung von der Materie zu haben. Ich hoffe es ist nichts wichtiges für die schule, das mal zum Einsatz kommen soll. Davon solltest du die Finger lassen.

mosnyy 30.05.12 20:00

bei deinem Insert syntax ist Klasse und Name natürlich nicht definiert wenn du ID und Geraet definierst.
VERGESS BITTE NICHT DEINE STRINGS ZU ESCAPEN!!!
das hier ist nur ein snippet dessen was ich als falsch erachtet habe:

Code:



$ID = $_POST["Name"]; 
$Geraet = $_POST["Klasse"]; 
 

$eintragen = "INSERT INTO Inventar VALUES ('$ID', '$Geraet')"; 

QUERY and escape here!


urga 31.05.12 19:48

Zitat:

Wenn ich das Formular ausfülle, werde ich auf eine weiße Seite verbunden und nichts weiter passiert - die Datenbank bleibt leer.
-> [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] einschalten. das hilft ungemein.
PHP-Code:

error_reporting (E_ALL); 

wie nähert man sich sonst an sowas an:

1) ein s***** schreiben welches ein sql absetzt ohne formulareingaben:
PHP-Code:

msql_connect(...);
$sql "insert .....";
echo 
"$sql<br>\n";

mysql_query ($sql); 

wenn damit das gewuenschte in der datenbank steht
2) das s***** per formular ansprechen:
PHP-Code:

error_reporting (E_ALL);
if (isset(
$Send)) 

mysql_connect("#","#","#") or die ("Keine Verbindung");  
  

$ID $_POST["Name"];  
$Geraet $_POST["Klasse"];  
 

$sql"INSERT INTO Inventar VALUES ('$Name', '$Klasse')";  

echo 
"$sql<br>\n";

$result mysql_query($sql) or die (mysql_error());  


hehe, und beim copy&paste habe ich auch deine fehler gefunden :)
da hilft auch kein error_reporting ;)

probier doch mal die version aus, die ich erstellt habe und frage dich dann, warum das s***** weder fehler meldet, noch sonstige ausgaben macht... geschweige denn was in die DB schreibt. :) kleiner tipp: "if".
und wenn dann was in der DB steht aber nicht das gewuenschte ... dann meditiere nochmal ueber deine variablen ;)

ProgMaster 31.05.12 20:27

@urga...

Vorgehensweise gut erläutert, dennoch überflüssig meiner Meinung nach.
Wenn man es selbst nicht schafft ohne fremde Hilfe, dann fehlen einem einfach die benötigten Analysefähigkeiten um jemals etwas ordentliches programmieren zu können.

Wenn man zwei Linke Beine hat, dann wird's auch nichts mit Fußball!

urga 31.05.12 20:33

mann'o'mann,

lass das nen 8 klaessler sein, der sein erstes programm schreibt...
jeder hat mal klein angefangen.

abgesehen davon scheint mir die nicht akademische lehre der informatik in deutschland auf ziemlich miesem niveau.
na klar: die guten sind in der wirtschaft; die freaks in der forschung.

die 0815 lehrkraft ist weder gut, noch freak. leider ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.