Datenbank Daten hinzufügen per formular/php

rolli123

Mitglied
Hallo,

also wie einfach kann doch manchmal die Lösung sein. Ich hab glaube ich das ganze Internet nach einen Formular zum hochladen von Datenbankeinträgen abgesucht. Ich habs jetzt gerade eben so gelöst:

Das Formular:

<form action="http://www.rolfbeckers.de/eintrag.php" method="post">
<input type="submit" value="Absenden">
</form>

Das php-script:

if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
if(@mysql_select_db($mysql_db))
{
echo "es wurde erfolgreich die Datenbank ausgew&auml;hlt.<br>";
}
else
{
die('Fehler! Tabelle gibt es nicht');
}
$eintrag = "INSERT INTO lexikon
(schluessel, erklaerung)
VALUES
('ursel', 'ich liebe ursel')";

$eintragen = mysql_query($eintrag);
if($eintragen == true)
{
echo "Eintrag war erfolgreich";
}
else
{
echo "Fehler beim speichern";
}

Ich habe immer den Fehler gemacht, das ich in dem Formular 2 Felder haben wollte, in denen ich die Eintragungen machen wollte.

So, jetzt zu meiner Frage, wie muss den eigentlich das Formular aussehen, wenn ein Besucher die Möglichkeit haben soll, Einträge zu machen? Was muss dann in dem php-script anstelle der Einträge in "VALUES" sein?

Die Daten gehen ja dann direkt in die Tabelle, irgendwie hab ich ein klitzekleines Problem mit der Sicherheit, wie wird das gelöst, das die Einträge erst nach Prüfung durch mich dort auftauchen?

Danke im voraus für Eure Hilfe
gruss aus Bremen
Rolf

ps. Mal vorsichtig nachgefragt, ich jubel jetzt hier so über mein kleines script, ist das überhaupt so korrekt? (mal abgesehen davon, das es funktioniert)
 
Hallo und guten Abend,

was willst du denn genau wissen?

Verwende bitte um PHP Code dazustellen auch die Funktion dafür.

[ P H P ] [ / P H P ]

die Leerzeichen musst du natürlich draußen lassen, dann ist das auch sehr viel besser zu lesen.

Gruß jaylibII
 
jaylibII hat gesagt.:
Hallo und guten Abend,

was willst du denn genau wissen?



Gruß jaylibII

Hallo,

ich möchte wissen wie das Formular auszusehen hat, wenn der Besucher der Website selber etwas eintragen kann. Ausserdem, wie wird das geregelt, das der Eintrag des Besuchers geprüft werden kann, es gibt ja viele Websiten die so etwas anbieten, ich glaube kaum das die Einträge ungeprüft in die Datenbank kommen. Oder irre ich mich da?

Dann war meine Frage noch, ob mein jetztiges script so in Ordnung ist, von der syntax her meine ich.

gruss und Danke im voraus
Rolf
 
Hallo,

hmm du kannst eigentlich alles in eine DB eintragen lassen. Nur du musst drauf achten wenn du das wieder ausgeben lassen willst.

z.B. ich kann dir ein Javaskript in die DB eintragen. Du lässt es aber nicht prüfen bei der Ausgabe, so kann man sehr großen Schade mit anrichten.

Aber es kommt auch immer druf an was du vor hast. Wenn du eine Community machst da musst du dann viel mehr auf passen wie wenn du z.B. nur was privates auf deiner WebSeite machen willst.

Gruß jaylibII
 
Hallo,

hier bekommst du mal ein Beispiel wie du was in eine DB eintragen kannst. Natürlich musst du noch eine Verbindung zur Datenbank herstellen.

PHP:
<?php
if(!empty($_POST))
{
		$sql = "INSERT INTO MEINE TABELLE IN DER DB 
				(
					name,
					vorname,
					mail,
					url,
					text,
				)
				VALUES
				(
					'" . addslashes($_POST["name"]) . "',
					'" . addslashes($_POST["vorname"]) . "',
					'" . addslashes($_POST["mail"]) . "',
					'" . addslashes($_POST["url"]) . "',
					'" . addslashes($_POST["text"]) . "',
				)
				";
		mysql_query($sql) OR die(mysql_error());
		
		header("Location: http://meine_WebSeite.de");
exit;
}
?>


<form name="form1" method="post" action="meine_seite.php">
  <table width="80%" border="0">
    <tr>
      <td width="15%" height="29"><strong>Name:</strong></td>
      <td width="85%"><input name="name" type="text" id="name"></td>
    </tr>
    <tr>
      <td height="29"><strong>Vorname:</strong></td>
      <td><input name="vorname" type="text" id="vorname"></td>
    </tr>
    <tr>
      <td height="31"><strong>e-Mail:</strong></td>
      <td><input name="mail" type="text" id="mail"></td>
    </tr>
    <tr>
      <td height="29"><strong>URL:</strong></td>
      <td><input name="url" type="text" id="url"></td>
    </tr>
    <tr>
      <td height="196"><strong>Nachricht:</strong></td>
      <td><textarea name="text" cols="50" rows="10" id="text"></textarea></td>
    </tr>
    <tr>
      <td height="34">&nbsp;</td>
      <td><input type="submit" name="Submit" value="&gt;&gt;&gt; Senden"></td>
    </tr>
  </table>
</form>

Gruß jaylibIl
 
Hallo,

jepp das meinte ich ja aber bei der Eingabe kann man alles annemhen wurde ich mal sagen :)

Gruß und einen schönen Abend noch,
jaylibII
 
Danke, aber bei mir klappt das nicht. Ich hab das Skript wie folgt abgeändert und bekomme diese Fehlermeldung: Duplicate entry '' for key 1


Erst dachte ich das liegt am HEADER, aber nachdem ich gegoogelt habe, da stand was von doppelten Einträgen, aber ich weiss nicht wo? Vielleicht doch der HAEDER oder die Adresse im "form"?

Seht Ihr es?


PHP:
<?php
$mysql_user = ' ';
$mysql_pw   = ' ';
$mysql_host = ' ';
$mysql_db   = ' ';

if($res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pw))
if(@mysql_select_db($mysql_db))
{
echo "es wurde erfolgreich die Datenbank ausgew&auml;hlt.<br>";
}
else
{
	die('Fehler! Tabelle gibt es nicht');
} 
if(!empty($_POST)) 
{ 
        $sql = "INSERT INTO lexikon 
                ( 
                    schluessel, 
                    erklaerung                     
                ) 
                VALUES 
                ( 
                    '" . addslashes($_POST["schluessel"]) . "',                     
                    '" . addslashes($_POST["erklaerung"]) . "' 
                ) 
                "; 
        mysql_query($sql) OR die(mysql_error()); 
         
        header('Location: http://www.rolfbeckers.de'); 
exit; 
} 
?>
<form name="form1" method="post" action="http://www.rolfbeckers.de/lexikoneintrag.php"> 
  <table width="80%" border="0"> 
    <tr> 
      <td width="15%" height="29"><strong>Name:</strong></td> 
      <td width="85%"><input name="schluessel" type="text" id="schluessel"></td> 
    </tr>      
    <tr> 
      <td height="196"><strong>Nachricht:</strong></td> 
      <td><textarea name="erklaerung" cols="50" rows="10" id="erklaerung"></textarea></td> 
    </tr> 
    <tr> 
      <td height="34">&nbsp;</td> 
      <td><input type="submit" name="Submit" value="&gt;&gt;&gt; Senden"></td> 
    </tr> 
  </table> 
</form>

gruss und danke im voraus
rolf
 
Hallo,

hmm ich kenne diese Meldung nicht die gerade bei dir kommt. Aber ich frage mich warum du bei action eine HTTP Pfad eingibst?

PHP:
action="http://www.rolfbeckers.de/lexikoneintrag.php">

es reicht wenn du das so machst:

PHP:
action="lexikoneintrag.php">

Gruß jaylibII


EDIT: Kann es sein, dass man "Schluessel" nicht als Spaltenname verwenden darf? Versuch das mal zu ändern?
 
Also ich habe jetzt so einiges probiert, klappt leider immer noch nicht.

Er meckert immer über den HEADER.

Habt Ihr noch Ideen?

gruss
rolf
 

Neue Beiträge

Zurück