Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

<?php

/*

* Einfuegen von Datensaetze in eine Datenbank

*

*/

// Zugangsdaten zur Datenbank

$conn = @mysql_connect("localhost","benjamin","********");

// Wechsel der Datenbank

mysql_select_db(test);

$sql = "insert into addresse(fname, sname, email)";

$sql .= "Values ('Gaus', 'Florian', 'florian@dfbl.org')";

$result = mysql_query($sql, $conn);

if($result)

{

$nummer = mysql_insert_id();

echo "<p> Es wurde Datensatz Nr. $nummer erzeugt!";

}

else

{

echo "<p>" .mysql_error($conn);

}

// MySQL-Verbindung wird beendet!

mysql_close($conn);

?>

die Datenbankstruktur sieht so aus:

Spalte A Spalte B Spalte C

fname sname email

1. Frage:

ich arbeite in dem Programm mit der ID muss ich auch dafür eine Spalte deklarieren oder, wie geht das mit dem auto_increment?

weil wenn ich jetzt das Programm ausführe, dann kommt als Ausgabe Nr. 0! Das kann ja irgendwie nicht stimmen, oder?

2. Frage:

$sql = "insert into addresse(fname, sname, email)";

$sql .= "Values ('Gaus', 'Florian', 'florian@dfbl.org')";

was hat der Punkt für eine Bedeutung? das die nächste Zeile dazu gehört? was anderes könnte ich mir jetzt da nicht vorstellen!

ich hoffe, einer von euch kann mir helfen!

danke für die Hilfe!

  • Antworten 57
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Geschrieben

zu 1: waere praktisch. eine spalte id_wasweissichwas ... datentyp integer mit ca. 5 - 10 stellen. auto_increment und primary key.

zu 2: .= ist ne stringfuntkion zum anhaengen.

statt

$string = "hallo "

$string .= "dies ist ein test"

koenntest du auch

$string = "hallo dies ist ein test"

schreiben ...

Geschrieben
$sql = "insert into addresse(fname, sname, email)";

$sql .= "Values ('Gaus', 'Florian', 'florian@dfbl.org')";

weiss ja nicht, aber probiere mal entweder nach der ersten schliessenden Klammer ein leerzeichen hinzuzufügen oder vor dem Values...

Geschrieben

es ist gegangen, ohne den Tipp von dir, mit dem Leerzeichen.

aber wahrscheinlich ist es besser, das auch zu machen.

ich kann mir vorstellen, das es wegen der vorgehenden Klammer ")" geht, sonst würde es wahrscheinlich auch nicht gehen!

Geschrieben

das mit dem punkt brauchst du eh nur in buechern oder in komplexen schleifen mit stringfunktionen ...

ansonsten kannst das auch zusammenschreiben.

ist uebersichtlicher und die moeglichkeit den punkt falsch zu setzen ist kleiner. :D

Geschrieben

klar, so oft Du willst... limit wär nur die maximale Größe des Strings :)

ginge z.B. auch so:

$bsp = "huhu "

."hallo "

."warum";

ob das dann so sinnvol und übersichtlich ist steht auf nem anderen Blatt ;)

gruß

Christian

Geschrieben

als alternative gibt es noch:


$string = ("Hallo
dies
ist
ein
test
strin");
[/php]

gerne verwendet bei sql statements:

$sql = ("SELECT *

FROM table

WHERE a = b");

normal kommen dann noch tabs rein, dass es schoen uebersichtlich ist.

so long

Geschrieben
Originally posted by -leliel-

das mit dem punkt brauchst du eh nur in buechern oder in komplexen schleifen mit stringfunktionen ...

und zum Beispiel bei Optionen.


$sql = "SELECT * FROM test";

if($order){

  $sql .= " ORDER BY name";

}

Gruß Jaraz

Geschrieben

danke für die Antworten!

jetzt habe ich schon wieder eine Frage.

ich möchte jetzt Daten eingeben und diese sollen dann in der Datenbank gespeichert werden. wie muss ich das Realisieren?

mein Vorschlag, was ich bis jetzt versucht habe, aber es möchte mir nichts ausgeben:


<html>
<head>
<title>Eintrag der Daten in die Datenbank</titl>
</head>
<body>
<?php
$conn = mysql_connect("localhost","benjamin","******");
mysql_select_db(test);
?>

[b]<input type="Text" name="<?php $fname ?>" value="Nachname" size="10" maxlength="20">
<input type="Text" name="<?php $sname ?>" value="Vorname" size="10" maxlength="20">
<input type="Text" name="<?php $email ?>" value="email" size="10" maxlength="20">[/b]

<?php
$sql = "insert into adresse(fname, sname, email) ";
$sql .= "Values ('$fname', '$sname', '$email')";
$result = mysql_query($sql, $conn);
if($result)
{
$nummer = mysql_insert_id();
echo "<p> Es wurde Datensatz Nr. $nummer erzeugt!";
}
else
{
echo "<p>" .mysql_error($conn);
}

mysql_close($conn);
?>
</body>
</html>
[/PHP]

was ist an dem Programm noch falsch? besonders die mit Fett hervorgehobenen Zeilen?

Geschrieben

Du gibst deinen Feldern den Inhalt der Variablen, anstatt den Variablennamen...

<input type="Text" name="<?php $fname ?>" value="Nachname" size="10" maxlength="20">

Da würde dann z.B. ....name="Meier"..... drinstehen, bzw in dem Fall gar nichts, da die Variable keinen Wert enthält. Richtig muß das so heißen:

<input type="Text" name="fname" value="Nachname" size="10" maxlength="20">

Außerdem wird das ganze so nicht funktionieren. Du mußt ein komplettes HTML-Formular erstellen, inkl. Submit Button. Im Form-Tag rufst du durch den action= Eintrag eine php-Seite auf, die dann die übergebenen Variablen in die DB schreibt. Das kann auch die selbe Seite sein, allerdings mußt du dann sicherstellen, das der Eintrag in die DB nur passiert, wenn das Formular über den Submit-Button abgesendet wurde. Ansonsten bekommst du bei jedem Aufruf der Seite einen falschen Datensatz.

Da der ganze Thread immer mehr Richtung PHP-Programmierung läuft, schieb ich den Thread mal in die Webserverprogrammierung....

Geschrieben

Wenn du eine ein Formularfeld mit dem Namen "fname" hast und über den Submit Button eine php Seite aufrufst wird der Inhalt des Feldes in der Variablen "fname" weitergegeben.

Um an den Wert wieder ranzukommen benutzt du dann "$fname" auf der PHP Seite.

Bye

Geschrieben

das habe ich jetzt auch schon rausgefunden!

das Formular funktioniert und bin fast zu frieden!

jetzt habe ich den Inhalt gesehen, aber da steht jetzt nichts in der Datenbank drin, aber einen Eintrag wurde gemacht!

an was kann das liegen?

meine Programme:

formular.php


<html>
<head>
<title>Eintrag der Daten in die Datenbank</title>
</head>
<body>
<form action="eintragen.php" method="get">
<p align="center">
<input type="Text" name="fname" value="Nachname" size="10" maxlength="20"><br>
<input type="Text" name="sname" value="Vorname" size="10" maxlength="20"><br>
<input type="Text" name="email" value="email" size="10" maxlength="20"><br>
<br>
<input type="Submit" name="button_versenden" value="Versenden">
<input type="reset"><br>
</p>
</form>
</body>
</html>
[/PHP]

eintragen.php

[PHP]
<?php
/*
* Eintragen des Datensatzes in die Datenbank
*
*/

// Zugangsdaten zur Datenbank
$conn = mysql_connect("localhost","benjamin","******");

// Wechsel der Datenbank
mysql_select_db(test);

$sql = "insert into adresse(fname, sname, email) ";
$sql .= "Values ('$fname', '$sname', '$email')";
$result = mysql_query($sql, $conn);
if($result)
{
$nummer = mysql_insert_id();
echo "<p> Es wurde Datensatz Nr. $nummer erzeugt!";
}
else
{
echo "<p>" .mysql_error($conn);
}

// MySQL-Verbindung wird beendet!
mysql_close($conn);
?>

ich hoffe, ihr könnt mir den Fehler sagen, warum die Daten jetzt nicht eingetragen werden. Aber es wird eine Zeile angelegt. Die ID ist ausgefüllt und die anderen 3 Spalten leider nicht!

Geschrieben
Originally posted by DFBL-Benjamin

da bringt er immer einen Fehler, das irgend etwas falsch ist!

Und was ist "irgendwas"?? :confused:

Poste doch mal die Fehlermeldung, damit es wenigstens einen Anhaltspunkt gibt...

Geschrieben

Hi,

wenn in der Fehlermeldung schon ne Zeilennummer steht, kann es doch wohl nicht so schwer sein, die entsprechende Zeile ebenfalls zu posten.

Auf alle Fälle stimmt was nicht mit den Anführungsstrichen.

Gruß Jaraz

Geschrieben

hier die Stelle wo der Fehler ist!


$sql .= "Values ($HTTP_GET_VARS["fname"], $HTTP_GET_VARS["sname"], $HTTP_GET_VARS["email"])";
[/PHP]

nach eurer Meinung müsste das dann so aussehen?

[PHP]
$sql .= "Values ($HTTP_GET_VARS['fname'], $HTTP_GET_VARS['sname'], $HTTP_GET_VARS['email'])";

stimmt das so?

Geschrieben

Sieht auf jedenfall besser aus, denn wenn Du für beides die gleichen Anführungszeichen nimmst, denkt er das der String unterbrochen ist und versucht fname als Befehl zu interpretieren...

Problem könnte dann noch sein, das er dann bei Deiner Variante die Variablen Inhalte ohne Anführungszeichen in den String schreibt, es würde bei:

$sql .= "Values ($HTTP_GET_VARS['fname'], $HTTP_GET_VARS['sname'], $HTTP_GET_VARS['email'])";

dann z.B.

"Values (Rappel, Zappel, RappelZappel@bla.blub)"

in dem String drinstehen.

Da SQL aber bei Zeichenketten auf Anführungszeichen besteht, müsstest Du die auch noch einbauen..

Mein Vorschlag wäre:

$sql .= 'Values ("'.$HTTP_GET_VARS["fname"].'", "'.$HTTP_GET_VARS["sname"].'", "'.$HTTP_GET_VARS["email"].'")';

gruß

Christian

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...