PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Mein GB funktioniert nicht einwandfrei. (http://www.selfphp.de/forum/showthread.php?t=13546)

SirBlack 22.05.2006 14:27:58

Mein GB funktioniert nicht einwandfrei.
 
Hallo,
ich habe folgendes Gästebuch gefertigt.

Code:

<?php        $action = isset($_REQUEST['action']) ? trim($_REQUEST['action']) : "show";
                        $hidden = isset($_REQUEST['hidden']) ? trim($_REQUEST['hidden']) : "";
                        $name = isset($_REQUEST['name']) ? trim($_REQUEST['name']) : "";
                        $nname = isset($_REQUEST['nname']) ? trim($_REQUEST['nname']) : "";
                        $email = isset($_REQUEST['email']) ? trim($_REQUEST['email']) : "";
                        $text = isset($_REQUEST['text']) ? trim($_REQUEST['text']) : "";
                        $page = isset($_REQUEST['page']) ? trim($_REQUEST['page']) : "";
                        $datei = "gb.txt";
                        $file = file($datei);
                                               
                        if(!isset($rev))
                        {
                                $rev = count($file);
                                $rev--;
                        }
                        $rev = isset($_REQUEST['rev']) ? trim($_REQUEST['rev']) : "$rev";                       
                       
                        if($action == "eintragen")
                        {
                                echo"&nbsp<h1>Neuer G&auml;stebucheintrag</h1>";                               
                                echo "
                                                <form name=\"eintragen\" action=\"gaste.php\" method=\"get\">
                                                        <table align=\"center\">
                                                                <tr><td></td><td><input name=\"hidden\" type=\"hidden\" value=\"senden\"></td></tr>
                                                                <tr><td>Name:</td><td><input name=\"name\" type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\"></td></tr>
                                                                <tr><td>Nachname:</td><td><input name=\"nname\" type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\"></td></tr>
                                                                <tr><td>E-Mail:</td><td><input name=\"email\"type=\"text\" class=\"input\" size=\"40\" maxlenght=\"40\"></td></tr>
                                                                <tr><td>Kommentar:</td><td><textarea name=\"text\" cols=\"30\" rows=\"8\" wrap=\"physical\"></textarea></td></tr>
                       
                                                                <tr><td><input type=\"submit\" value=\"Absenden\"></td><td><input type=\"reset\" value=\"Zur&uuml;cksetzen\"></td></tr>
                                                        </table>
                                                </form>";
                        }

                        if($hidden == "senden")
                        {
                                                               
                                        $db = fopen("gb.txt","a+");
                                        $time = date("H:i");

                                        $date = date("d.m.Y");
                                        $nl = chr(13) . chr(10);
                                       
                                        $eintrag = ereg_replace("<","&lt;",$eintrag);
                                        $eintrag = ereg_replace(">","&gt;",$eintrag);
                                        $eintrag = preg_replace("/\r\n|\r|\n/", "<br>", $text);
                                        $ein = "$time|$date|$eintrag|$email|$name|$nname$nl";
                                        $schreib = fwrite($db,$ein);
                                        fclose($db);
                                        $action = "show";
                                        !$page;
                                        echo" Falls Ihr Eintrag nicht angezeigt wird, gehts <a href=\"gaste.php\"><b>HIER</b></a> weiter";
                                                                       
                        }


                        if( $action == "show")
                        {
                                echo "        &nbsp<h1>G&auml;stebuch</h1>
                                        <div align=\"center\">
                                        <a href=\"gaste.php?action=eintragen\">EINTRAGEN</a>
                                        </div>";


                        $datei = "gb.txt";
                        $file = file($datei);
                       
                        $num = count($file);
                       
                        if(!$page)
                        {
                                $start = 0;
                                $ende = 25;
                        }
                        else
                        {
                                $start = $page * 25;
                                $ende = $start + 25;
                        }

                       
                        for($i = $start; $i < $ende; $i++)
                        {
                                $data = $file[$rev];
                                $data = explode("|",$data);

                                if($i > $num or $data[0] < "0")
                                {
                                        echo "";
                                }
                                else
                                {
                                        echo "<center><table width=\"80%\">
                                                <tr>
                                                        <td height=\"10px\" colspan=\"2\">Eintrag Nr.:";
                                        $rev++;
                                        echo "$rev </td></tr>";
                                        $rev--;
                                        echo "<tr>
                                                        <td style=\"border: 1px solid #999999;\"><b>$data[4] $data[5]</b><br>schrieb am $data[1] um $data[0] Uhr<br>";
                                                        echo "<a href=\"mailto:$data[3]\">$data[3]</a>&nbsp";
                                                        echo "</td>
                                                                <td width=\"55%\" style=\"border: 1px solid #999999;empty-cells: show;\">&nbsp $data[2]</td></tr>
                                                                <tr><td height=\"20px\" style=\"empty-cells: show;\"></td></tr>
                                                </table>";
                                        $rev--;
                                }
                        }
                       
                        $total = count($file);
                        $seiten = ceil($total / 25);
                       
                        echo "Seite:";
                        for($j=0;$j<$seiten;$j++)
                        {
                                $rev =($total - ($j * 25)) - 1;
                                echo " <a href=\"gaste.php?action=show&page=$j&rev=$rev\">$j</a>";
                        }
                        echo"</center>";
                        }

                ?>

wenn ich nun die seite lade wird einfach das Gästebuch angezeigt. Wenn jemand einen neuen eintrag macht wird dieser jedoch nicht sofort angezeigt. Die Seite muss erst neu geladen werden. Dies geschieht unter der if-Schleife bei "hidden = senden". Ihr könnt euch ansehen wie ich das Problem jetzt gelöst habe, aber irgendwie ist das ja nicht so elegant. Wie kann ich mir das sparen und dafür sorgen das automatishc neugeladen wird?

mfg Erik

KTB 22.05.2006 15:46:09

AW: Mein GB funktioniert nicht einwandfrei.
 
Automatisch neu laden geht mit dem Befehl:
PHP-Code:

<meta http-equiv="refresh" content="0;url=<? echo $PHP_SELF ?>">
//oder besser:
<?
header('Location: $PHP_SELF');
?>

Das ist aber nicht die Lösung des Problems, warum er die aktuelle Version nicht anzeigt.

SirBlack 23.05.2006 12:49:22

AW: Mein GB funktioniert nicht einwandfrei.
 
Und woran liegt es? war schon schwer genug das das Script überhaupt mal das Richtige ausgibt. So ging es dann jedoch sollte ja nach einem Eintrag nicht neu geladen werden müssen???

KTB 24.05.2006 09:40:26

AW: Mein GB funktioniert nicht einwandfrei.
 
Ich weiß nicht wirklich, da ich normalerweise nicht mit Dateien arbeite. Versuche mal folgendes:
Pack das senden so weit wie möglich nach oben, am besten an erste Position und bring das Script nach dem Absenden zum warten:
PHP-Code:

flush();
sleep(5); 

Damit wartet er 5 Sekunden und macht erst dann weiter.
Meine Vermutung ist, dass er nicht so schnell aus den Dateien lesen und schreiben kann oder sonst etwas in der Richtung.
Wenn das nix bringt, müssen wir an anderer stelle schauen.

SirBlack 24.05.2006 09:58:46

AW: Mein GB funktioniert nicht einwandfrei.
 
Hm hat leider nicht geklappt. Der zeigt dann erst den neuen Eintrag an nach dem ich auf aktualisieren geklickt habe.

KTB 24.05.2006 10:16:57

AW: Mein GB funktioniert nicht einwandfrei.
 
Hui, ich bin momentan überfragt. Was hat das !$page zu bedeuten?

Vielleicht geht das auch überhaupt nicht. Vielleicht muss die Seite neu geladen werden nachdem was eingetragen wurde um das neue zu lesen.

Baguvix 24.05.2006 11:40:01

AW: Mein GB funktioniert nicht einwandfrei.
 
Also ich hatte das problem auch ich habs gelöst in dem ich die gb.txt Datei einmal zum schreiben geöffnet also fopen("gb.txt","w") dann alles mit fwrite() eingetragen und dann nochmal schließen fclose() und dann extra nochmal zum auslesen geöffnet hab. weil dann die gb.txt Datei ja Aktualiesiert wird.

SirBlack 24.05.2006 18:39:42

AW: Mein GB funktioniert nicht einwandfrei.
 
das hab ich ja auch so. unter dem hidden senden wird dort geöffnet, geschrieben und geschlossen. ???

Blade1965 24.05.2006 23:09:58

AW: Mein GB funktioniert nicht einwandfrei.
 
Also ich übergebe die Daten immer an eine bearbeiten.php.
Die macht den insert und leitet auf die Anzeigenseite wieder um.
So ist diese dann immer wieder aktuell.

SirBlack 28.05.2006 21:13:14

AW: Mein GB funktioniert nicht einwandfrei.
 
Und wie würde ich eine solche umleitung machen?


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:53:03 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.