Gästebuch Tutorial

  • Super das klappt toll.


    jetzt brauch nicht nur die freischalten.php zum laufen bringen ich habe noch ein Feld in der der Tabelle erstellt
    Feld aktiviert
    Typ char
    Kollation latin1-swedish
    not null
    ich weiß nur nicht ob die Kollation stimmt. Aber ohne geht es nicht.
    Die Anweisung hieß
    Wir fügen also ein weiteres Feld in der Datenbank ein, das wir „aktiviert“ nennen. Das geht am schnellsten über phpMyAdmin im Punkt „Stuktur“ unten „Feld hinzufügen“.Das Feld hat die Länge von "1" und ist ein Char. Sobald der Eintrag angezeigt werden darf, wird hier eine 1 gesetzt.


    und dann die freischalten php mit der Mail. So wie ich gelesen habe kann ich über localhost keine emails versenden, muss mir also erste einen webspace besorgen um es zu testen.
    freischalten.php lautet


    Wie kann man denn dieses ganze Wissen so toll wie du es kannst lernen. Ich finde das echt super. :D

  • Hi,


    Zitat

    So wie ich gelesen habe kann ich über localhost keine emails versenden, muss mir also erste einen webspace besorgen um es zu testen.


    theoretisch kann man einen Mail-Server installieren und dann auch mails von localhost verschicken, allerdings ist es recht schwierig.


    Zitat

    Wie kann man denn dieses ganze Wissen so toll wie du es kannst lernen. Ich finde das echt super.


    Ich bin eine typische Autodidaktin und habe fast alles von Büchern und Tutorials gelernt und auch viel durch "trial and error". Der Kurs den Du erwähnt hast ist ein sehr guter Anfang.


    LG

  • Ich hab irgendwie das selbe Problem...Also der Eintrag wird direkt ausgegeben, nur wird nichts an die Datenbank gesendet -.-


    Gaestebuch


  • Folgende Fehlermeldung bekomme ich:


    Warning: mysql_query() [function.mysql-query]: Access denied for user ''@'localhost' (using password: NO) in /users/dirtysanchezcrew/www/Projekt Nr. 2/gaestebuch-eintrag.php on line 44


    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /users/dirtysanchezcrew/www/Projekt Nr. 2/gaestebuch-eintrag.php on line 44
    Ungültige Abfrage: Access denied for user ''@'localhost' (using password: NO)


    Jetztiger Code


  • Zitat von "Sarkkan"

    ..wie wäre es wenn wir irgendwo unseren SQL-Befehl an den Server senden?^^ Versuch mal nach dem auswählen der Datenbank mysql_query ( string $Anfrage [, resource $Verbindungs-Kennung ] ) :wink:


    Auswählen der Datenbank = mysql_select_db (mal frei übersetzt: MySQL wähle Datenbank)


    Ergo:

    PHP
    <span class="syntaxhtml">    <span class="syntaxdefault"><?php<br />        </span><span class="syntaxcomment">// SQL-Befehl für den Zugriff<br />        </span><span class="syntaxkeyword">if ( </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'eintrag'</span><span class="syntaxkeyword">] != </span><span class="syntaxstring">"" </span><span class="syntaxkeyword">)<br />            {<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxstring">" INSERT INTO gaestebuch "</span><span class="syntaxkeyword">;<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">" id "</span><span class="syntaxkeyword">;<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">" name   ='"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">"', "</span><span class="syntaxkeyword">;<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">" email  ='"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'email'</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">"', "</span><span class="syntaxkeyword">;<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">" url    ='"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'url'</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">"', "</span><span class="syntaxkeyword">;<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">" datum  ='"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">date</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Y-m-d H:i:s"</span><span class="syntaxkeyword">) .</span><span class="syntaxstring">"', "</span><span class="syntaxkeyword">;<br />                </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">.= </span><span class="syntaxstring">" eintrag='"</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'eintrag'</span><span class="syntaxkeyword">] .</span><span class="syntaxstring">"' "</span><span class="syntaxkeyword">;<br /><br />                echo </span><span class="syntaxstring">"<hr />SQL: $sql<hr />"</span><span class="syntaxkeyword">;<br /><br />                </span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_HOST'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'localhost' </span><span class="syntaxkeyword">);<br />                </span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_BENUTZER'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'dirtysanchezcrew' </span><span class="syntaxkeyword">);<br />                </span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_KENNWORT'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'berry18' </span><span class="syntaxkeyword">);<br />                </span><span class="syntaxdefault">define </span><span class="syntaxkeyword">( </span><span class="syntaxstring">'MYSQL_DATENBANK'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'dirtysanchezcrew' </span><span class="syntaxkeyword">);<br /><br />                if ( ! </span><span class="syntaxdefault">$db_erg </span><span class="syntaxkeyword">)<br />                    {<br />                        die(</span><span class="syntaxstring">'Ungültige Abfrage: ' </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">mysql_error</span><span class="syntaxkeyword">());<br />                    }<br /><br /><br />                </span><span class="syntaxdefault">$db_link </span><span class="syntaxkeyword">= @</span><span class="syntaxdefault">mysql_connect </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">MYSQL_HOST</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">MYSQL_BENUTZER</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">MYSQL_KENNWORT</span><span class="syntaxkeyword">);<br />                if ( ! </span><span class="syntaxdefault">$db_link </span><span class="syntaxkeyword">)<br />                        {<br />                            </span><span class="syntaxcomment">// hier sollte dann später dem Programmierer eine<br /><br />                            // E-Mail mit dem Problem zukommen gelassen werden<br /><br />                            // die Fehlermeldung für den Programmierer sollte<br /><br />                            // das Problem ausgeben mit: mysql_error()<br /><br />                            </span><span class="syntaxkeyword">die(</span><span class="syntaxstring">'keine Verbindung zur Zeit möglich - später probieren '</span><span class="syntaxkeyword">);<br />                        }<br />                </span><span class="syntaxdefault">$db_sel </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">( </span><span class="syntaxdefault">MYSQL_DATENBANK </span><span class="syntaxkeyword">)<br />                or die(</span><span class="syntaxstring">"Auswahl der Datenbank fehlgeschlagen"</span><span class="syntaxkeyword">);<br /><br />                </span><span class="syntaxcomment">// ausführen des mysql-Befehls<br />                </span><span class="syntaxdefault">$db_erg </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">( </span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">);<br />            }<br />    </span><span class="syntaxdefault">?></span></span>


    Schließlich müssen wir zuerst zu dem Server eine Verbindung aufbauen.. dann die Datenbank auswählen.. und dann erst können wir schließlich irgendetwas mit der Datenbank anstellen^^

  • Ok...die 2 Fehlermeldungen sind weg..Danke schonmal.


    Nun bleibt er bei dem hengen. Jedenfalls kommt dieser Error


    Code
    if ( ! $db_erg )
                        {
                            die('Ungültige Abfrage: ' . mysql_error());
                        }
  • Achja.. theoretisch wird er bei mysql_error() aber " " ausgeben^^
    !$db_erg kann auch ähnlich wie $db_erg == "" o.Ä. gedeutet werden :/
    Und da die Variabel nicht existiert.. kommt der Fehler =/

  • Neee, mach diese if-Abfrage mit dem $db_erg weg^^


    Und lass dir mal das Ergebnis von der query ausgeben^^
    Achja und mach das ID aus der SQL weg :/ Das könnte glaube ich evtl. n Fehler verursachen :/

  • Ich hoffe das das richtig ist


    Code
    echo "mysql_query( $sql)" ;


    Denn dann kommt eigentlich nur


    mysql_query( INSERT INTO gaestebuch name ='eresr', email ='erer', url ='erere', datum ='2011-03-08 22:29:38', eintrag='erere' )

  • Also ich habs hinbekommen....es lag am SET in...das musste dahin


    Code
    $sql = " INSERT INTO gaestebuch ";
                    $sql .= " SET ";
                    $sql .= " name   ='". $_POST['name'] ."', ";
                    $sql .= " email  ='". $_POST['email'] ."', ";
                    $sql .= " url    ='". $_POST['url'] ."', ";
                    $sql .= " datum  ='". date("Y-m-d H:i:s") ."', ";
                    $sql .= " eintrag='". $_POST['eintrag'] ."' ";
  • Tatsache o.o
    Ich hab mir den SQL-Befehl garnet richtig angeschaut.. Naja, SET verwendet man, wenn man Werte ändern will.. ansonsten mach bitte lieber dies:

    SQL
    INSERT INTO gaestebuch
    (`name`, `email`, `url`, `datum`, `eintrag`)
        VALUES
    ('eresr', 'erer', 'erere', '2011-03-08 22:29:38', 'erere' );
  • Soe?


    Code
    $sql = " INSERT INTO gaestebuch (`name`, `email`, `url`, `datum`, `eintrag`) ";
                    $sql .= " SET ";
                    $sql .= " name   ='". $_POST['name'] ."', ";
                    $sql .= " email  ='". $_POST['email'] ."', ";
                    $sql .= " url    ='". $_POST['url'] ."', ";
                    $sql .= " datum  ='". date("Y-m-d H:i:s") ."', ";
                    $sql .= " eintrag='". $_POST['eintrag'] ."' ";' );
  • Ich habs dir doch genau aufgezeigt O.o

    PHP
    <span class="syntaxdefault">$sql </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"INSERT INTO gaestebuch<br />    (`name`, `email`, `url`, `datum`, `eintrag`)<br />        VALUES<br />    ('"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"', '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'email'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"', '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'url'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"', '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">date</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Y-m-d H:i:s"</span><span class="syntaxkeyword">).</span><span class="syntaxstring">"', '"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'eintrag'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"' );" </span><span class="syntaxdefault"></span>


    Außerdem solltest du die Eingaben eines Benutzers immer überprüfen und so!

  • Die Überprüfung der Einträge bekomm ich nicht so richtig hin...Was genau muss ich in der gaestebuch-eintrag.php ändern, damit der Eintrag erst zu mir kommt und ich ihn dann freischalte?


    Das ist die gaestebuch-freischalten.php


    und das die gaestebuch-eintrag.php

  • Achja.. // sometimes I believe compiler ignores all my comments...
    Woher soll der Server den bitte wissen, was er machen soll, wenn du es ihm nicht sagst? :D
    Du musst erst via SELECT Datensätze auswählen.. Schau dir dazu mal die Seite im PHP-Kurs an. Hier fragst du entweder direkt nach einer ID, oder fragst einfach welche Einträge noch kein aktiviert haben (aktiviert != '1')
    Anschließend brauchst du ein Formular in dem du halt z.B. via 2 Verschiedenen Submit-Buttons die Aktion auswählen kannst..
    Kannst du theoretisch dann ungefähr so anlegen:

    Code
    <form methode="post">
        Kommentar von BlaBliBlub:
        Lorem Ipsum...
        <input type="hidden" name="id" value="[ID DER GERADE AUSGEWÄHLTEN REIHE]" />
        <input type="submit" name="action" value="Freigeben" />
        <input type="submit" name="action" value="Löschen" />
    </form>
    <!-- Für jeden weiteren noch nicht freigeschalteten Kommentar noch so ein Forum -->


    Du überprüfst dann mit einer if-Abfrage welcher Button gedrückt wurde ( if($_POST['action'] == "Freigeben"){ ... } elseif($_POST['action'] == "Löschen") { ... } ).
    Fertig .__.


    Arbeitest du eigentlich am PHP-Kurs?^^

  • Wenn du das so mit mehreren submit-Buttons machst, gib den Buttons besser unterschiedliche Namen und überprüfe auf den Namen (ob die Post-Variable gesetzt ist), statt auf den Wert.


    Solltest du nämlich im Value-Attribut Entitys benutzen, werden diese als normaler Text zurück gesendet (&auml; -> ä, usw. Bei value="L&ouml;schen" wird als Wert der Variablen "Löschen" gesendet).
    Wenn du Entitys im value-Tag nutzen solltest, müsstest du aufpassen, dass du beim Vergleichen der Werte darauf achtest. Vergleichst du aber die Namen, passiert dir das nicht.
    Das ist eine gute Fehlerquelle, wenn mans nicht weiß.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!