tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
27
ZUGRIFFE
1606
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    imokcan imokcan ist offline Mitglied
    Registriert seit
    Jan 2006
    Beiträge
    12
    Hallo,

    ich schreibe zur Zeit an einer Shoutbox mit Datenbankanbindung.

    Hierbei tritt o.g. Fehler auf, betreffend die Zeile 52.

    Ich danke für Hilfe,

    Markus

    PHP-Code:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Shoutbox</title>
    <?php
    $name 
    $_POST["name"];
    $schrei $_POST["schrei"];
    $name str_replace ("\n"," "$name);
    $name str_replace ("<"" "$name);
    $name str_replace (">"" "$name);
    $name stripslashes ($name);
    ?>
    <?php
        
        
    if( isset($_POST['submit']) ) {

            
    $db mysql_connect('localhost''db''pw');
            
    mysql_select_db('tab, $db);
            $sql = "SELECT * FROM shoutbox
    ORDER BY time ASC
    LIMIT 0 , 30";
            $ausgabe = mysql_query($sql);
            $query = '
                
    INSERT INTO
                        
    `shoutbox`
                  
    SET
                        
    `time` = "'.time().'"
                        
    `name`  = "'.mysql_real_escape_string($_POST['name']).'",
                        `
    schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
                
    ';
                }
                ?>
            
        </head>
        <table>
            <tr>
                <td>
        <form name="shoutbox" action="shoutbox.php" method="post">
    <p>Name:&nbsp;
    <input type="text" name="name" class=textfeld size="15" maxlength="20" value="<? echo $name; ?>" />
    Schrei:&nbsp;
    <input type="text" name="message" class=textfeld size="50" maxlength="255" />
    <input type="submit" value="Schrei!" class="button" />
    </form>
                </td>
            </tr>
            <tr>
                <td>
                <table width="100%" border="0" cellspacing="1" cellpadding="1">
                <?php
                while($zeile = mysql_fetch_array($ausgabe)){
                  print("<tr><td><i>".$zeile["name"]."</i>&nbsp;schrie am");
                  print($zeile["time"]);
                  print($zeile["schrei"]."</td></tr>");
                  }
              ?>
                </table>
        </td>
    </tr>
    </table>
    </body>
    </html>
     

  2. #2
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Hi, hier mal eine Liste mit Dingen die mir aufgefallen sind:
    1. bei mysql_select_db() fehlt ein '
    2. die Datenbankverbindung wird nur aufgebaut wenn $_POST['submit'] gesetzt ist, das gleiche gilt fuer mysql_query() welches die Grundlage fuer Dein mysql_fetch_array() bildet
    3. Dein mysql_fetch_array() wird immer ausgefuehrt, was zur Folge hat, dass es zum Fehler kommt wenn $_POST['submit'] nicht gesetzt ist

    Ich wuerde Dir uebrigens empfehlen mit mysql_fetch_assoc() anstatt mit mysql_fetch_array() zu arbeiten.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  3. #3
    Registriert seit
    Oct 2003
    Ort
    Berlin
    Beiträge
    1.423
    Zitat Zitat von Dennis Wronka
    Ich wuerde Dir uebrigens empfehlen mit mysql_fetch_assoc() anstatt mit mysql_fetch_array() zu arbeiten.
    Ich würde dir das auch empfehlen wenn Dennis das sagt, ich habe auch irgendwann angefangen die Funktion zu nutzen, allerdings weiß ich nicht mehr wieso. Könntest du, lieber Dennis, mir das nocheinmal erläutern?

    Vielen Dank!

    BSA
     

    [:.drumba.:] - Wordpress Entwicklung Berlin
    _______________________________________
    Staatlich anerkanntes Experiment:
    Kohlkopf | Angela | Merkel| Angela Merkel

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    mysql_fetch_array() ist quasi eine Kombination aus mysql_fetch_row() und mysql_fetch_assoc()
    mysql_fetch_row() bietet einen numerischen Index, mysql_fetch_assoc() einen assoziativen Index und mysql_fetch_array() bietet beide. In den meisten Faellen ist es Unsinn beide Indizes zu haben, da man in der Regel eh mit dem assoziativen Index arbeitet. Und mir faellt auch grad kein Beispiel ein wo es Sinn macht beide Indizes zu haben.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    Registriert seit
    Oct 2003
    Ort
    Berlin
    Beiträge
    1.423
    Also würde das nur heißen das das ganze ein wenig Speicherplatz spart?
     

    [:.drumba.:] - Wordpress Entwicklung Berlin
    _______________________________________
    Staatlich anerkanntes Experiment:
    Kohlkopf | Angela | Merkel| Angela Merkel

  6. #6
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Ja, koennte man so sagen.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  7. #7
    imokcan imokcan ist offline Mitglied
    Registriert seit
    Jan 2006
    Beiträge
    12
    Ich bin ein kleines Stückchen weiter. Ich habe gerade etwas rumgefiddelt (eher aufs Geratewohl denn aus Überzeugung) und die Fehlermeldung ist schonmal weg. Die Einträge, die ich vorher mit phpmyadmin eingefügt habe, werden auch angezeigt.

    Jedoch werden keine Daten in die Datenbank eingefügt.


    PHP-Code:
    <?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Shoutbox</title>
    <?
    $name 
    $_POST["name"];
    $schrei $_POST["schrei"];
    $name str_replace ("\n"," "$name);
    $name str_replace ("<"" "$name);
    $name str_replace (">"" "$name);
    $name stripslashes ($name);
    ?>
    <?php
            $db 
    mysql_connect('localhost''db''pw');
            
    mysql_select_db('tab'$db);
            
    $sql "SELECT * FROM shoutbox
    ORDER BY time ASC
    LIMIT 0 , 30"
    ;
            
    $ausgabe mysql_query($sql);
            
    $query '
                INSERT INTO
                        `shoutbox`
                  SET
                        `time` = "'
    .time().'"
                        `name`  = "'
    .mysql_real_escape_string($_POST['name']).'",
                        `schrei` = "'
    .mysql_real_escape_string($_POST['schrei']).'",
                '
    ;
                
    ?>
            
        </head>
        <table>
            <tr>
                <td>
        <form name="shoutbox" action="shoutbox.php" method="post">
    <p>Name:&nbsp;
    <input type="text" name="name" class=textfeld size="15" maxlength="20" value="<? echo $name?>" />
    Schrei:&nbsp;
    <input type="text" name="message" class=textfeld size="50" maxlength="255" />
    <input type="submit" value="Schrei!" class="button" />
    </form>
                </td>
            </tr>
            <tr>
                <td>
                <table width="100%" border="0" cellspacing="1" cellpadding="1">
                <?php
                
    while($zeile mysql_fetch_assoc($ausgabe)){
                  print(
    "<tr><td><i>".$zeile["name"]."</i>&nbsp;schrie am");
                  print(
    $zeile["time"]);
                  print(
    $zeile["schrei"]."</td></tr>");
                  }
              
    ?>
                </table>
                
        </td>
    </tr>
    </table>
    </body>
    </html>
    P.S:: Danke für die schnellen Antworten
     

  8. #8
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Das wiederum liegt daran, dass diese Query
    PHP-Code:
           $query '
                INSERT INTO
                        `shoutbox`
                  SET
                        `time` = "'
    .time().'"
                        `name`  = "'
    .mysql_real_escape_string($_POST['name']).'",
                        `schrei` = "'
    .mysql_real_escape_string($_POST['schrei']).'",
                '

    nie ausgefuehrt wird.

    Bevor diese Query ausgefuehrt wird solltest Du dann aber wieder pruefen ob Daten geschickt wurden und die einzutragenden Felder (oder zumindest von Dir festgelegte Pflichtfelder) nicht leer sind.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  9. #9
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Die mysql_fetch_array()-Funktion erlaubt es übrigens als zweiten Parameter den Ergebnistyp festzulegen. Somit kann nicht pauschal gesagt werden, dass die mysql_fetch_num()- beziehungsweise die mysql_fetch_assoc()-Funktion der mysql_fetch_array()-Funktion vorzuziehen ist.

    Probier mal Folgendes:
    PHP-Code:
    <?php

        $db 
    mysql_connect('localhost''db''pw')
            or die(
    'Verbindung zum Datenbankserver schlug fehl!');
        
    mysql_select_db('tab'$db)
            or die(
    'Auswahl der Datenbank schlug fehl!');


        if( isset(
    $_POST['submit']) ) {
            
    $query '
                INSERT INTO
                        `shoutbox`
                  SET
                        `time`   = "'
    .time().'",
                        `name`   = "'
    .mysql_real_escape_string(strip_tags($_POST['name'])).'",
                        `schrei` = "'
    .mysql_real_escape_string($_POST['schrei']).'"
                '
    ;
            
    mysql_query($query)
                or die(
    'Datenbankabfrage schlug fehl!');
        }

        
    $query '
            SELECT
                    `time`,
                    `name`,
                    `schrei`
              FROM
                    `shoutbox`
              ORDER BY
                    `time` ASC
              LIMIT
                    0, 30
            '
    ;
        
    $result mysql_query($query)
            or die(
    'Datenbankabfrage schluf fehl!');

    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Shoutbox</title>
    </head>

    <body>
        <form name="shoutbox" action="shoutbox.php" method="post">
            <p>Name:&nbsp;
                <input type="text" name="name" class="textfeld" size="15" maxlength="20" value="<? echo htmlspecialchars(strip_tags($_POST['name'])); ?>" /></p>
            <p>Schrei:&nbsp;
                <input type="text" name="message" class="textfeld" size="50" maxlength="255" /></p>
            <p><input type="submit" value="Schrei!" class="button" /></p>
        </form>
        <table width="100%" border="0" cellspacing="1" cellpadding="1">
    <?php
        
    while( $row mysql_fetch_array($resultMYSQL_ASSOC) ) {
            echo 
    '<tr><td><p><i>'.$row['name'].'</i>&nbsp;schrie am '.$row['time'].':</p><p>'.$zeile['schrei'].'</p></td></tr>';
        }
    ?>
        </table>
    </body>
    </html>
     
    Markus Wulftange

  10. #10
    imokcan imokcan ist offline Mitglied
    Registriert seit
    Jan 2006
    Beiträge
    12
    Funktioniert leider nicht. Es wird nicht in die Datenbank geschrieben.
    Fehlermeldung kommt allerdings auch keine
     

  11. #11
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Erhöhe mal mit folgendem Code die Fehlersensibilität PHPs:
    PHP-Code:
    <?php

        ini_set
    ('display_errors'1);
        
    ini_set('error_reporting'E_ALL);

        


    ?>
     
    Markus Wulftange

  12. #12
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Ich denke anstelle dieses Aufrufes
    PHP-Code:
    ini_set('error_reporting'E_ALL); 
    waere der folgende besser:
    PHP-Code:
    error_reporting(E_ALL); 
    Der Grund: Ich denke nicht, dass viele Hoster ini_set() zulassen, es waere zu einfach radikale Eingriffe in die PHP-Konfiguration vorzunehmen und der Hoster koennte sich seine Arbeit PHP vernuenftig zu konfigurieren sparen.

    Zum Thema mysql_fetch_array(): Warum mit einem 2. Parameter arbeiten wenn man doch eine Funktion hat die das gleiche kann, aber keinen 2. Parameter benoetigt. Da darf man mal richtig faul sein.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  13. #13
    Registriert seit
    Mar 2002
    Ort
    BRD
    Beiträge
    489
    heißt es nicht ...
    PHP-Code:

    UPDATE tabelle SET spalte 
    wert

     
    &

     
    INSERT INTO tabelle (spalteVALUES (wert
     
    (\_/)
    (O.o) This is Bunny. Copy Bunny into your signature
    (> <) to help him on his way to world domination.

  14. #14
    Avatar von TwoFaze
    TwoFaze TwoFaze ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe (BW)
    Beiträge
    162
    heißt es nicht ...

    PHP-Code:
     UPDATE tabelle SET spalte wert 

     


     
    INSERT INTO tabelle (spalteVALUES (wert
    ..Doch, so heißt es!
     

  15. #15
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zitat Zitat von Sebastianus
    heißt es nicht ...
    PHP-Code:

    UPDATE tabelle SET spalte 
    wert

     
    &

     
    INSERT INTO tabelle (spalteVALUES (wert
    Wurde denn irgendwo das Gegenteil behauptet?
     
    Markus Wulftange

Ähnliche Themen

  1. Antworten: 30
    Letzter Beitrag: 29.07.10, 15:39
  2. Antworten: 11
    Letzter Beitrag: 05.08.09, 22:52
  3. Antworten: 4
    Letzter Beitrag: 11.10.06, 09:37
  4. Antworten: 5
    Letzter Beitrag: 30.07.05, 18:28
  5. Antworten: 9
    Letzter Beitrag: 02.01.05, 00:07