• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

"ID" wird nicht hochgezählt

Xeno

Mitglied
Hallo Community

Ich programmiere gerade eine Kommentarfunktion für einen (meinen) Blog. Ich möchte, dass jedem Kommentar eine ID zugeordnet wird, die weiter keine Aufgaben hat, als eine ID zu sein (d. h. den Beitrag / DB-Eintrag mit einer eindeutigen Nummer zu identifizieren). Soweit so gut. Jetzt bin ich auf ein merkwürdiges Problem gestossen: Entweder funktioniert das Hochzählen nicht (d. h. jeder Eintrag erhält dieselbe ID, was sinnlos ist), oder aber, wenn ich in der DB die ID-Spalte wie mancherorts empfohlen als Key und mit auto-increment belege, dann macht gleich der ganze Skript den Handtstand, d. h. es funktioniert nicht einmal mehr das Erstellen eines neuen DB-Eintrags [interessantes Subphänomen: Beim ersten Eintrag funktioniert alles]). Komisch ist, dass bei einem Gästebuchskript, den ich verwende (Eigenentwicklung nach Tutorial) alles mit praktisch (?) demselben Code funktioniert.

Soweit die hoffentlich halbwegs verständliche Problemschilderung, jetzt Code (der hoffentlich relevante Teil, sonst mehr oder anderes verlangen):

blog-kommentare-senden.php

PHP:
        include ("mysql_connect.php");
        $id =0;        
        $abfrage = "SELECT Comment_ID FROM kommentare ORDER BY Comment_ID DESC";
        $ergebnis = mysql_query($abfrage);
        
        while($row = mysql_fetch_object($ergebnis)) 
        
        {
        $id = $row->id;
        }
        
        $id++;
        $timestamp = time();
        $datum = date("d.m.Y H:i:s", $timestamp);
        $nachricht = str_replace("<", "&nbsp;", $nachricht);
        $nachricht = str_replace(">", "&nbsp;", $nachricht);
        $nachricht = str_replace("\r\n", "<br>", $nachricht);
        $name = str_replace("<", "&nbsp;", $name);
        $name = str_replace(">", "&nbsp;", $name);
        $eintrag = "INSERT INTO kommentare (Comment_ID, Blog_ID, name, mail, text, timestamp) VALUES ('$id', '$Blog_ID', '$name', '$mail', '$nachricht', '$datum')";
        $eintragen = mysql_query($eintrag);
        
        if($eintragen == TRUE)
        
            {
            ?>
                        
            <p>Dein Eintrag wurde abgeschickt.</p>
            <p><a href="blog.php">Zurück zum Blog</a></p>
            <?php
            }
        
        else 
        
            {
            echo "Die Kommentarfunktion des Blogs funktioniert zur Zeit nicht. Entschuldigung!";
            }
        }
            ?>


Zum Vergleich der erwähnte, funktionierende Codeausschnitt aus dem Gästebuch-Sende-Script:

senden1.php

PHP:
        include ("mysql_connect.php");
        $id =0;        
        $abfrage = "SELECT id FROM guestbook ORDER BY id DESC LIMIT 1";
        $ergebnis = mysql_query($abfrage);
        
        while($row = mysql_fetch_object($ergebnis)) 
        
        {
        $id = $row->id;
        }
    
        $id++;
        $timestamp = time();
        $zeit = date("H:i",$timestamp);
        $datum = date("d.m.Y", $timestamp);
        $nachricht = str_replace("<", "&nbsp;", $nachricht);
        $nachricht = str_replace(">", "&nbsp;", $nachricht);
        $nachricht = str_replace("\r\n", "<br>", $nachricht);
        $name = str_replace("<", "&nbsp;", $name);
        $name = str_replace(">", "&nbsp;", $name);
        $eintrag = "INSERT INTO guestbook (id, name, mail, nachricht, datum, zeit) VALUES ('$id', '$name', '$mail', '$nachricht', '$datum', '$zeit')";
        $eintragen = mysql_query($eintrag);
        
        if($eintragen == TRUE)
        
            {
            ?>
            <p>Dein Eintrag wurde abgeschickt.</p>
            <p><a href="gaestebuch.php">Zurück zum Gästebuch</a></p>
            <?php
            }
        
        else 
        
            {
            echo "Das Gästebuch funktioniert zur Zeit nicht. Entschuldigung!";
            }
        }
            ?>


Was könnte da faul sein?

Noch zwei Bemerkungen: 1) *mysql wird bei nächstbester Gelegenheit durch das modernere *mysqli ersetzt; 2) Ich bin Anfänger mit gewissen selbst erworbenen Grundkenntnissen in PHP und MySQL.

Bin für alle Ratschläge dankbar!

Lg Xeno
 
Werbung:
Eine ID selbst zu berechnen ist unsinnig. Die Spalte id auf auto_incrememt setzen und beim Insert keine ID angeben und gut ist.
 
Herzlichen Dank!! Funktioniert hervorragend.

Manchmal kommt man aufgrund von Tutorials auf sagenhaft komplizierte Ideen...!

Lg Xeno
 
Werbung:
Tja, das ist das Problem von (online) Tutorials. Man weis nie, wie viel Ahnung der Autor von der Materie wirklich hat und oftmals kommt es auch vor, dass man sogar wirkliche Fehler und "No goes" aus Tutorials mitnimmt.
Besorg dir stattdessen lieber ein anstaendiges Buch.

Ich sehe bei deinem Code zum Beispiel schonmal kein Escaping der Werte die du in die Datenbankschreiben willst.
Auch diese str_replace() Aufrufe sind nicht gerade optimal....

Meine Meinung ;)
 
Ich habe auch schon fehlerhafte Bücher gesehen
W4EQ+WAawKSlZ4zqAwMpieFcGU9Cb7fp04zGPwACpmKVSa43bNMxUA3DDMsC20SAQA7

Jo das kann durchaus vorkommen, aber wenn man nach den Autoren sucht, was die fuer nen Ruf haben etc und auch Userkommantare zu den Buechern (kritisch) liest, kann man sich doch ein Bild davon machen, wie die Qualitaet sein wird.

Immerhin besser als auf irgendwelche Tutorials im Web zu gehen, die dann teilweise auch noch auf irgendwelchen privten Blogging Seiten stehen.
 
Werbung:
Ich sehe bei deinem Code zum Beispiel schonmal kein Escaping der Werte die du in die Datenbankschreiben willst.
Auch diese str_replace() Aufrufe sind nicht gerade optimal....

Meine Meinung ;)

Du hast bestimmt Recht. Ich quetsche diese Probleme aber jetzt nicht in diesen Fred. Ich weiss, dass es noch vieles zu tun gibt. Danke aber auf jeden Fall!

Lg Xeno
 
Zurück
Oben