1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Problem bei PHP und Mysql

Discussion in 'Programmieren' started by computernarr, Oct 18, 2003.

Thread Status:
Not open for further replies.
  1. computernarr

    computernarr Kbyte

    Ich bin dabei ein Gästebuch mit PHP und Mysql zuschreiben!
    Mysql ist soweit fertig das man Beiträge hinzufügen kann!
    Ich habe auf meinen Rechner OmniHTTPd(lokaler Webserver) installiert um das Gästebuch zu testen!
    Immer wenn ich das Gästebuch starten will kommt bei mir der Fehler:
    Ich weiß aber nicht wo der Fehler liegt!
    Ich Poste mal den Quellcode:
    eintrag.php4

    <?php

    $server= "localhost";
    $user= "";
    $passwort= "";
    $datenbank= "user";

    MYSQL_CONNECT($server, $user, $passwort) or die ( '<H3>Datenbankserver nicht erreichbar</H3>');
    MYSQL_SELECT_DB($datenbank) or die ( '<H3>Datenbank nicht vorhanden</H3>');

    if ($submit){
    // Der Submit - Button wurde gedrückt
    // -> die Werte müssen überprüft
    // und bei Gültigkeit in die DB eingefügt werden

    // wir gehen von der Gültigkeit der Daten aus
    $DatenOK = 1;

    // es gab noch keine Fehlermeldung
    $error = "";

    if ($name == ""){
    // es wurde kein Name eingegeben
    $DatenOK = 0;
    $error .= "Es muß ein Name eingegeben werden<br>\n";
    }

    if ($eintrag == ""){
    // es wurde kein Komementar eingegeben
    $DatenOK = 0;
    $error .= "Ein Eintrag ohne Komemntar mach nicht viel";
    $error .= " Sinn, oder?<br>\n";
    }

    if ($DatenOK){
    // Daten waren OK -> also in DB eintragen
    mysql_query(sprintf('insert into meldung
    (datum,name,eintrag)
    VALUES (now(),"%s","%s")',
    addslashes($name),
    addslashes($eintrag)));
    echo mysql_error();

    // Alles eingetragen -> zurück zur Übersicht
    header('Location: http://'.$HTTP_HOST.
    substr($PHP_SELF,0,strrpos($PHP_SELF,'/')).'/');
    // und fertig...
    die();
    }

    }
    ?>

    <html>
    <head>
    <title>Neuer Eintrag in unser GB</title>
    </head>
    <body>
    <?php
    if ($submit && !$DatenOK){
    // Das Formular wurde schon abgeschickt aber die Daten
    // waren nicht OK
    // -> Fehlermeldung ausgeben
    echo "<h2>Fehler:</h2>\n";
    echo $error;
    }

    // Formular anzeigen
    ?>
    <form action="<?php echo $PHP_SELF; ?>" method="GET">
    Name:
    <input type="text" name="name" size="30" maxlength="200"
    value="<?php echo $name; ?>">
    <br>
    Text:<br>
    <textarea rows="10" cols="50" wrap="virtual" name="eintrag">
    <?php echo $eintrag; ?>
    </textarea>
    <br>
    <input type="submit" name="submit" value="Absenden">

    </body>
    </html>

    und ausgabe.php4
    <?php

    $server= "localhost";
    $user= "";
    $passwort= "";
    $datenbank= "user";

    MYSQL_CONNECT($server, $user, $passwort) or die ( '<H3>Datenbankserver nicht erreichbar</H3>');
    MYSQL_SELECT_DB($datenbank) or die ( '<H3>Datenbank nicht vorhanden</H3>');

    ?>

    <html>
    <head>
    <title>Die Eintr&auml;ge in unserem GB</title>
    </head>
    <body>
    <?php

    $res = mysql_query('select datum, name, eintrag
    from meldung
    order by datum desc');
    echo mysql_error();

    while ($row = mysql_fetch_array($res)){
    echo "<table border=\"1\" width=\"600\">\n";
    printf("<tr><td>Name:</td><td>%s</td></tr>\n",
    htmlentities($row["name"]));
    printf("<tr><td>Datum:</td><td>%s</td></tr>\n",
    $row["datum"]);
    printf("<tr><td>Eintrag:</td></tr>\n");
    printf("<tr><td colspan=\"2\">%s</td></tr>\n",
    nl2br(htmlentities($row["eintrag"])));
    echo "</table>\n";
    }
    ?>
    <hr>
    <a href="eintrag.php4">neuen Eintrag hinzufügen</a>
    </body>
    </html>
     
  2. computernarr

    computernarr Kbyte

    Läuft jetzt alles!:D :D :D
     
  3. computernarr

    computernarr Kbyte

    Hab jetzt mal die Datei auf einen Tripodserver geladen da kommt dann die Fehlermeldung:
    Parse error: parse error, expecting `',' or `';' in /data/members/free/tripod/de/t/o/p/top100fighter/htdocs/gästebuch2/eintrag.php on line 13


    Das ist der eintrag:
    if ($submit){
    ...
    edit
    Der Fehler hat sich erledigt!
    Aber wenn ich es ausprobieren möchte dann komme ich auf die Startseite von Tripod!
     
  4. computernarr

    computernarr Kbyte

    Zu dem obrigen Problem kann ich noch hinzufügen das es ohne
    form action funktioniert!
    Also wenn ich die variablen vorher belege!

    Ich habe jetzt mal eine neue Funktion geschrieben!
    Hier besteht das Problem das ich die Tabelle nicht auf dem Monitor erscheinlassen kann!
    Aber im Prinzip das Gleiche wie oben!

    Ich habe es schon mal etwas anderes probiert!
    Da habe ich fast alles weggelassen, das nur der Befehl Insert into... steht!
    Der hat noch funktioniert!
    Aber wie kann ich dann die Tablle in PHP auf dem Monitor zeigen lassen?
    Quellcode:
    <?php

    $server= "localhost";
    $user= "";
    $passwort= "";
    $datenbank= "user";

    MYSQL_CONNECT($server, $user, $passwort) or die ( '<H3>Datenbankserver nicht erreichbar</H3>');
    MYSQL_SELECT_DB($datenbank) or die ( '<H3>Datenbank nicht vorhanden</H3>');

    $sql= "CREATE TABLE aa (
    id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(50) NOT NULL,
    Passwort VARCHAR(50) NOT NULL
    );";

    $result = mysql_query("$sql");

    $sql = "
    INSERT INTO aa (id,Name,Passwort)VALUES(','Detlef',
    'Karsten');";

    $result = mysql_query("$sql");

    $sql="SELECT * FROM aa WHERE Name = 'Detlef'";(Ich weiß das er jetzt nur Detlef wieder gibt!)

    $result=mysql_query("$sql");

    while($row=mysql_fetch_array($result, MYSQL_ASSOC) ){
    print "Name:$row[Name]";


    //print ?
    //echo ?
     
  5. kalweit

    kalweit Hüter der Glaskugel

    Der Fehler kann laut der Fehlermeldung eigentlich nur aus dieser Zeile kommen:

    header('Location: http://'.$HTTP_HOST.
    substr($PHP_SELF,0,strrpos($PHP_SELF,'/')).'/');

    Mit den $PHP_SELF's habe ich öfter die Erfahrung gemacht, dass die Referenzen nicht bei jeder Funktion auf dem Ursprungsscript bleiben, sondern entsprechend dem Speicherort der Funktion oder Include verbogen werden.

    Versuch $PHP_SELF zu Beginn der Datei in eine separate Variable zu überführen und mit dieser weiter zu arbeiten. Zudem solltest du kontrollieren, welches Ergebnis $HTTP_HOST liefert.

    Gruss, Matthias
     
Thread Status:
Not open for further replies.

Share This Page