Probleme mit schreiben in eine MySQL Tabelle

Moin!

Was ist hier falsch?
[php]

<?php error_reporting(E_ALL); // Config include"config.php"; @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Die Verbindung kann nicht aufgebaut werden"); mysql_select_db(MYSQL_DATABASE) OR die(mysql_error()); $eintrag = mysql_query("INSERT INTO `News` ( (`Titel`,`Inhalt`,`Datum`,`Autor`) VALUES ('Mein erster Versuch, Tabellen zu füllen ueber PHP', 'Mein erster Testversuch,Tabellen einer MySQL Datenbank zu füllen', NOW(), 'matibaski')) "); if($eintrag) { echo"Geschrieben"; } else { echo"Nicht geschrieben!"; } ?>[/php]

Die config.php sieht so aus:
[php]

<?php error_reporting(E_ALL); define('MYSQL_HOST', 'localhost'); define('MYSQL_USER', 'geheim'); define('MYSQL_PASS', 'geheimer'); define('MYSQL_DATABASE', 'testbank'); ?>[/php]

Also die verbindung istja hergestellt. Sonst würde die die() Meldung kommen, und die Datenbank wurde auch gewählt.

Doch wo ist der Fehler?
Es kommt immer die else {} Meldung, dass es nicht geschrieben wurde.

Nach $eintrag musst du noch schreiben
[php]
mysql_query($eintrag) OR die(mysql_error());
[/php]

Erscheint folgendes:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚(Titel,Inhalt,Datum,Autor) VALUES (Meine erste News, `Dies ist‘ at line 2

Den Code habe ich umgeschrieben.
[php]

<?php error_reporting(E_ALL); // Config include"config.php"; // Verbindung wird hergestellt @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Die Verbindung kann nicht aufgebaut werden"); // Die Datenbank wird ausgewählt mysql_select_db(MYSQL_DATABASE) OR die(mysql_error()); // Der Eintrag wird bestimmt $eintrag = "INSERT INTO `News` ( (`Titel`,`Inhalt`,`Datum`,`Autor`) VALUES (`Mein erster Versuch`, `Mein erster Versuch Tabellen zu füllen.`, NOW(), `matibaski`)) "; // Prüfen ob der Eintrag gemacht wurde mysql_query($eintrag) OR die(mysql_error()); ?>[/php]

Es kommt mit diesem Code der Fehler.

Es stimmt ja etwas bei $eintrag nicht.
Nur was?

[php]
$eintrag = "INSERT INTO News (
(Titel,Inhalt,Datum,Autor)
VALUES
(Mein erster Versuch,
Mein erster Versuch Tabellen zu füllen.,
NOW(),
matibaski))
";
[/php]

Ne. Geht nicht.
Es kommt folgender Error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‚(Titel,Inhalt,Datum,Autor) VALUES (Mein erster Versuch, Mein erster Vers‘ at line 2

Der Fehler besteht immernoch.

[php]

<?php $eintrag = "INSERT INTO News ( VALUES ("Mein erster Versuch", "Mein erster Versuch Tabellen zu füllen.", ".NOW().", "matibaski")) "; ?>

[/php]

Nils aka XraYSoLo

Mein Gott ich glaub mein Server spinnt.
Er gibt den Fehler aus. Unexpected T_STRING auf Linie 16

Das ist auf Linie 16:
[php]
(‚Mein erster Versuch‘,[/php]

Doch hier ist gar kein Fehler vorhanden.

Mannoman…:expressionless:

Kann das daran liegen, dass ich die Spalte ID ausgelassen habe?
Ich habe dort einfach bei CREATE TABLE den auto. Wert zugewiesen, dass es immer eins höher machen soll.

[php]
$eintrag = „INSERT INTO News (Titel, Inhalt, Datum, Autor) VALUES (‚Mein erster Versuch‘, ‚Hallo‘, ‚.now().‘, ‚matibaski‘)“;
[/php]
Wenn du die Spalte ID auf auto_increment hast musst du die Spalte nicht selbst füllen.
Dafür gibt es ja die Eigenschaft auto_increment.

Ok danke.
Da mein Newssystem auch Sachen schreiben kann, die jemand geschrieben hat, dachte ich ich mache es so:
[php]
if($_POST[‚submit‘]) // Wenn etwas geschrieben wurde
{
// Übernehmen
$eintrag = „INSERT INTO News
(Titel,
Inhalt,
Datum,
Autor)
VALUES
(‚.$_POST[‚titel‘].‘,
‚.$_POST[‚text‘].‘,
‚.now().‘,
‚.$_POST[‚autor‘].‘)“;

mysql_query($eintrag) OR die(mysql_error());
echo’News gespeichert


';
}[/php]Doch es erscheint diese Nachricht:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/httpd/vhosts/paradoxe.de/subdomains/habboville/httpdocs/mysql/index.php on line [B]15

[/B]Diese Version ging auch nicht:
[php]
if($_POST[‚submit‘]) // Wenn etwas geschrieben wurde
{
// Übernehmen
$eintrag = „INSERT INTO News
(Titel,
Inhalt,
Datum,
Autor)
VALUES
($_POST[‚titel‘],
$_POST[‚text‘],
now(),
$_POST[‚autor‘])“;

mysql_query($eintrag) OR die(mysql_error());
echo’News gespeichert


';
}[/php]

Doch was ist hier falsch?

MfG, matibaski

[php]

<?php if($_POST['submit']) // Wenn etwas geschrieben wurde { // Übernehmen $eintrag = "INSERT INTO News (Titel, Inhalt, Datum, Autor) VALUES ('".$_POST['titel']."', '".$_POST['text']."', '".now()."', '".$_POST['autor']."' )"; } ?>

[/php]

Nils aka XraYSoLo

Danke.
Wieso kommst du auf
[php]„‚…‘“[/php]??

Ich habe es soweit gebracht, dass es die News schreibt. Aber nun ist mein Problem, dass das Datum auf 00-00-00 Kommt. Also kein Datum

Hier:
http://habboville.paradoxe.de/mysql/index.php

Dies hier ist zum eine News schreiben:
http://habboville.paradoxe.de/mysql/schreiben.php

MfG, matibaski

du musst
‚„.now().“‘,

in

‚„.time().“‘,

ändern

das ist eben so ^^.

das datum machst du dann mit date().

Nils aka XraYSoLo

Was jetzt?
time() oder date() ??
Ich denke dass Time die Uhrzeit angibt, und date() das Datum.

Dan etwa so vielleicht?
[php]
„‚.date.‘-‚.time.‘“[/php]So würde es beides anzeigwn.
Es kann auch sein, dass meine Vermutung bei date() und time() falsch ist.

MfG, matibaski

edit:
Hab’s ausprobiert mit date() und mit time().
Doch es kommt immernoch folgendes:
0000-00-00 00:00:00

Hier ist der Teil des Scriptes. Hab’s umgeändert auf eine einfachere Art. So gehts ohne „‚…‘“
[php]
$eintrag = „INSERT INTO News (Titel,Inhalt,Datum,Autor) VALUES (‚$titel‘, ‚$text‘, ‚date()‘, ‚$autor‘)“;

Die Variablen $titel, $text und $autor wurden hier bestimmt:
$titel = $_POST[‚titel‘];
$text = $_POST[‚text‘];
$autor = $_POST[‚autor‘]
[/php]

MfG, matibaski

nein du musst [PHP]time() [/PHP]nehmen

[PHP]time()[/PHP] gibt dir einen Timestamp zurück. Das sind die Sekunden die seit dem 1.1.1970 vergangen sind. Die speicherst du in deiner Datenbank.

Wenn du das Jetzt aber ausgibst, versteht das kein mensch, denn jetzt wäre es zum beispiel 1173004030.

Damit jetzt jemand damit zurecht kommt, nimmst du die funktion [PHP]date()[/PHP] bei der ausgabe. z.b. so
[PHP]
$timestamp = time() //du bekommst den dann aus der DB
echo date(„d.m.y“,$timestamp);
[/PHP]
Das würde dir nun ein Datum im Format DD.MM.JJ geben.
Was du sonst noch in der funktion date() benutzen kannst findest du im manual