Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

MySQL und PHP - Newsscript

Hi,

ich hab jetzt mit PHP & MySQL etwas angefangen.. und hab auch angefangen einen "Newsscript" zu schreiben.. nur jetzt kommt kein eindeutiger fehler.. !

hier mal der quellcode:


<?php

include "inc/config.php";

mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

$read "SELECT                    
             titel,                
             inhalt,               
             datum                 
         FROM                      
             News                  
         ORDER BY                  
             datum DESC"
;          

$read_id "SELECT
               ID
           FROM
               News;
           "
;

$create "CREATE TABLE News 
          (
             ID INT  AUTO_INCREMENT PRIMARY KEY, 
             titel   VARCHAR(100),               
             inhalt  TEXT,                       
             datum   DATETIME                    
          );"
;

//Die ID Lesen
$result mysql_query($read_id);
if(
$result)
{
    while(
$row mysql_fetch_assoc($result))
    {
        echo 
$row[&#39;ID&#39;];
    
}
}
else
{
    echo 
"Can&#39;t read ID !";
    
mysql_error();
}

$row[&#39;ID&#39;] += 1;

$news_id $row[&#39;ID&#39;];
$autor $_POST[&#39;autor&#39;];
$titel $_POST[&#39;titel&#39;];
$inhalt $_POST[&#39;inhalt&#39;];

$write "INSERT INTO News                 
            (ID,autor,titel,inhalt,datum)  
          VALUES                           
            (
             
$news_id,
             
$autor,
             
$titel,
             
$inhalt,              
             NOW());"
;

//Tabelle machen
$success mysql_query($create);
if(!
$success)
{
    echo 
"Can&#39;t create Table";
}

//In Tabelle schreiben
$success mysql_query($write);
if(!
$success)
{
     echo 
"Can&#39;t write Table";
}

echo 
"Your news:<br/>\n";

//Tabelle lesen
$success mysql_query($read);
if(!
$success)
{
    echo 
"Can&#39;t read ID from the Database!";
    echo 
"MYSQL: ".mysql_error();
}

while(
$row2 mysql_fetch_assoc($success)) 
{
   echo 
"News ID: ".$row2[&#39;ID&#39;];
   
echo "<br/>\nAutor: ".$row2[&#39;autor&#39;];
   
echo "<br/>\nTitel: ".$row2[&#39;titel&#39;];
   
echo "<br/>\nInhalt:<br/>\n".$row2[&#39;inhalt&#39;];
   
echo "<br />\n";
}

?>


Nur jetzt zeigt er "meine" fehlermeldungen an ! so wie "Can't write Table" !

danke im vorraus...

MFG
TOMEK


Antworten zu MySQL und PHP - Newsscript:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Scheint so als mag er nicht jedesmal die Tabelle "News" neu anlegen. Verständlich ;)

Lass dir doch anstatt deiner eigenen Meldung mal mit mysql_error() die Fehlermeldung vom DBMS ausgeben.

Kleiner Tipp noch: Jedesmal die Tabelle neu schreiben ist zwar sinnlos, aber du kannst den Fehler vermeiden duch Angabe von IF NOT EXISTS.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

aha ok.. jetzt zeigt er mir schon das:

Zitat
Table 'News' already existsUnknown column 'autor' in 'field list'

wie soll ich "prüfen" ob die tabelle "News" schon eksistiert !?

Oder (eine ander idee) könnte ich irgendwo z.B. eine 1 (als "true") in die datenbank einsetzen so das es signalisiert das News schon vorhanden sind.. Alsoo wenn ich die Tabelle das erste mal erstelle schreibe ich an einer prüfstelle eine 1. Würde das so gut sein !?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
wie soll ich "prüfen" ob die tabelle "News" schon eksistiert !?

Wie gesagt mit IF NOT EXISTS. Schau mal hier: http://dev.mysql.com/doc/refman/5.1/de/create-table.html

Oder (eine ander idee) könnte ich irgendwo z.B. eine 1 (als "true") in die datenbank einsetzen so das es signalisiert das News schon vorhanden sind.. Alsoo wenn ich die Tabelle das erste mal erstelle schreibe ich an einer prüfstelle eine 1. Würde das so gut sein !?

Ganz schlechte Idee. Um's kurz zu machen: In einem Skript, welches Datensätze schreibt uns liest, hat ein CREATE TABLE im Normalfall nichts zu suchen. Die Datenstruktur erstellt man entweder manuell, oder man packt den ganzen Senf in ein Setup-Skript.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ahaa ^^

ok dann sieht die Syntax von dieser jezigen Create Table so aus:


$create 
"CREATE TABLE IF NOT EXISTS News 
          (
             ID INT  AUTO_INCREMENT PRIMARY KEY, 
             titel   VARCHAR(100),               
             inhalt  TEXT,                       
             datum   DATETIME                    
          );"
;


ok und der fehler ist schonmal weg. danke. Nur hez kommt das:

Zitat
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 'NOW())' at line 9

MFG
TOMEK

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Die Fehlermeldung bezieht sich jetzt aber auf eine andere Query. Das dürfte daran liegen, dass du die Werte der Textfelder nicht in Hochkommata gesetzt hast.

Übrigens würde ich nebenbei empfehlen, Spalten- und Tabellennamen in Backticks zu setzen.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ok.. es hat so geklapt:


$write 
"INSERT INTO News                 
            (ID,autor,titel,inhalt,datum)  
          VALUES                           
            (
             &#39;
$news_id&#39;,
             &#39;
$autor&#39;,
             &#39;
$titel&#39;,
             &#39;
$inhalt&#39;,              
             &#39;NOW()&#39;);"
;


Ok es funktioniert schonmal das lesen von "Titel" und "Inhalt".. aber der rest funktioniert nich...


$create 
"CREATE TABLE IF NOT EXISTS News 
           (
             ID INT  AUTO_INCREMENT PRIMARY KEY, 
             autor,  VARCHAR(20),
             titel   VARCHAR(100),               
             inhalt  TEXT,                       
             datum   DATETIME                    
           );"
;
?>

Diesen Codeabschnitt hab ich jez auch geupdatet.. weil hier "autor" fehlte !
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

"Funktioniert nich" ist keine Fehlermeldung. Es dürfte aber an dem Komma nach "autor" liegen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
Es dürfte aber an dem Komma nach "autor" liegen.
ohh.. ok.. war aba net tragisch..

und jetze dazu.. das was ausgegeben wird:
Zitat
Table 'sniperhawk.News' doesn't exist
Your news:
News ID:
Autor:
Titel: hier ist der titel
Inhalt:
der inhalt!

Alsoo.. "titel" und "inhalt" wird ja ausgegeben ! Aber der rest nicht. Und wieso zeigt er mir auf einmal meinen Username mit der News als "tabelle" ?

MFG
TOMEK

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Die ausgegebenen Daten stammen keinesfalls aus der Datenbank. Es dürfte sich um POST-Daten handeln.

"sniperhawk" ist übrigens der Name der Datenbank. 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nur jetzt verstehe ich nicht wieso das nicht in die datenbank geschrieben bzw aus der datenbank gelesen wird.. es gibt keine fehlermeldungen auser:

Zitat
Table 'sniperhawk.News' doesn't exist
.. was ich wiederum auch nicht verstehe.. wenn ich ja CREATE TABEL ... gemacht habe !

MFG
TOMEK

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Es deutet alles darauf, dass deine CREATE TABLE Aktion nicht erfolgreich war. "News" existiert nicht, also kann auch nicht gelesen oder geschrieben werden.

Check das doch einfach mal mit phpMyAdmin ab. Damit kannst du auch gleich deine Queries testen.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ok.. ich hab den Fehler voll gefunden.. ^^

Ich hab erst nach dem query das er die daten speichern soll eine tabelle gemacht.. mit anderen worten.. er sollte in eine noch nicht eksisitierende tabelle etwas schreiben.. was keinen sinn ergibt ^^

der jezige quellcode im nicht zu verwirren:

<?php

include "inc/config.php";

mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

$read "SELECT                    
             titel,                
             inhalt,               
             datum                 
         FROM                      
             News                  
         ORDER BY                  
             datum DESC"
;          

$read_id "SELECT
               ID
           FROM
               News;
           "
;

$create "CREATE TABLE IF NOT EXISTS News 
          (
             ID INT  PRIMARY KEY, 
             autor   VARCHAR(20),
             titel   VARCHAR(100),               
             inhalt  TEXT,                       
             datum   DATETIME                    
          );"
;
//Tabelle machen
$success mysql_query($create);
if(!
$success)
{
    echo 
mysql_error();
}

//Die ID Lesen
$result mysql_query($read_id);
if(
$result)
{
    while(
$row mysql_fetch_assoc($result))
    {
        echo 
$row[&#39;ID&#39;];
    
}
}
else
{
    echo 
mysql_error();
}

$row[&#39;ID&#39;] += 1;

$news_id $row[&#39;ID&#39;];
$autor $_POST[&#39;autor&#39;];
$titel $_POST[&#39;titel&#39;];
$inhalt $_POST[&#39;inhalt&#39;];

$write "INSERT INTO News                 
            (ID,autor,titel,inhalt,datum)  
          VALUES                           
            (
             &#39;
$news_id&#39;,
             &#39;
$autor&#39;,
             &#39;
$titel&#39;,
             &#39;
$inhalt&#39;,              
             &#39;NOW()&#39;);"
;


//In Tabelle schreiben
$success mysql_query($write);
if(!
$success)
{
     echo 
mysql_error();
}

echo 
"Your news:<br/>\n";

//Tabelle lesen
$success mysql_query($read);
if(!
$success)
{
    echo 
mysql_error();
}

while(
$row2 mysql_fetch_assoc($success)) 
{
   echo 
"News ID: ".$row2[&#39;ID&#39;];
   
echo "<br/>\nAutor: ".$row2[&#39;autor&#39;];
   
echo "<br/>\nTitel: ".$row2[&#39;titel&#39;];
   
echo "<br/>\nInhalt:<br/>\n".$row2[&#39;inhalt&#39;];
   
echo "<br />\n";
}

?>


Doch es kommt wieder ein fehler...

Zitat
1Duplicate entry '1' for key 1

Woran kann das liegen !?

MFG
TOMEK
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ich hab erst nach dem query das er die daten speichern soll eine tabelle gemacht.. mit anderen worten.. er sollte in eine noch nicht eksisitierende tabelle etwas schreiben.. was keinen sinn ergibt ^^

Bravo ;) Nach solch primitiven Sachen hatte ich ehrlich gesagt gar nicht Ausschau gehalten ;D


Doch es kommt wieder ein fehler...
Woran kann das liegen !?

Man schreibt NIEMALS in ID-Felder mit auto_increment. Das regelt die DB allein, und dann kommt es auch nicht zu solchen Duplikaten, die du in deinem Programm zu erzeugen versuchst.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ok..alsoo.. das regelt die DB alleine ? hmm..

Alsoo muss ich alsoo ID nicht bei jedem "post" incrementieren ? sprich $ID++; ?
 


« Flash Problem "GetURL"PHP & MySQL Buch/ Internetseite »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

Tablet PC
Der Begriff Tablet-PC wurde 2001 von Microsoft eingeführt und bezeichnet einen tragbaren (Windows-)Computer mit Touch-Bildschirm. Eingaben lassen sich per Tastatur u...

Newsgroup
Newsgroup (Englischer Begriff für "Nachrichtengruppe") und meint eine Diskussionsforum im Internet, das wie ein "schwarzes Brett" funktioniert, an dem Nachrichten ve...