Newsscript - Probleme

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Newsscript - Probleme

    Ich hab folgendes Problem. Ich hab ein Newsscript auf .txt-Basis. So bei jedem eintrag soll vorher und nachher ein Strich, zur optischen Abtrennung gemacht werden. Weiters soll vor und nach jedem Eintrag eine Leerzeile sein.

    Funktioniert auch soweit. Nur hin und wieder lasst es einfach einen Strich weg oder macht einmal zwei, oder es fehlt die Leerzeile oder ist zu viel. Da ich noch Anfänger bin bitte ich euch das mal anzuschauen.

    thx

    GoDLiKe

    Das ist die news.php

    PHP-Code:
    <html>
    <body background="../img/left.jpg">
    <font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="white">
    <br>
    <?php
    if($action == "add")
    {
    $fp fopen("news.txt""r+");
    $inhaltfread($fp,filesize("news.txt"));
    fclose($fp);
    if(
    $action == "add")
    {
    $eintrag "$inhalt <center><hr><br>$datum <b>$titel</b><br>$news<hr><br><br></center>";}
    $datei fopen("news.txt","w+");
    $ok fputs($datei,$eintrag);
    }
    if (!
    ok)
    {
    echo 
    "fehler bei der dateierstellung";
    }
    else
    {
    echo 
    " datei erfolgreich geschrieben";
    }
    @
    fclose($datei);
    ?>
    <center>
    <b>News eingeben<b>
    <br>
    <form method="post" action="news.php?action=add"><center>
    <textarea name="datum" rows="1" cols="40">Datum</textarea><br>
    <textarea name="titel" rows="1" cols="40">Titel</textarea><br>
    <textarea name="news" rows="10" cols="40">News</textarea><br>
    <input type="submit" value="Speichern" name="add">
    </center>
    </form>
    </font>
    </body>
    </html>

    Hier das Formular für den Eintrag

    <html>
    <body background="../img/left.jpg">
    <font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="white">
    <?php
    $daten
    ="$datum <b>$titel</b><br>$news<hr>";
    $datenbank "news.txt";
    $datei fopen($datenbank,"a+");
    fwrite($datei,$daten."\n");
    fclose($datei);
    ?>
    <center>
    <b>News eingeben<b>
    <br>
    <form method="post" action="newsud.php?action=add"><center>
    <textarea name="datum" rows="1" cols="40">Datum</textarea><br>
    <textarea name="titel" rows="1" cols="40">Titel</textarea><br>
    <textarea name="news" rows="10" cols="40">News</textarea><br>
    <input type="submit" value="Speichern" name="add">
    </center>
    </form>
    </font>
    </body>
    </html>
    Bitte, bitte helft mir.


    EDIT:
    [php]-tags by Abraxax
    Zuletzt geändert von Abraxax; 07.12.2003, 14:33.

  • #2
    benutze dohc bitte in zukunft php-tags...
    weswegen machst du deine "stiche" nicht bei der ausgabe (ist doch wesentlich dynamischer)

    Kommentar


    • #3
      Mhn, irgendwie blick ich bei deinem Script nicht ganz durch

      Die Logik Fehlt, oder ich versteh das nicht..



      Falsch:

      PHP-Code:
      if (!ok

      Richtig:

      PHP-Code:
      if (!$ok

      - Wieso prüft du 2X ob $action == "add" ist?
      - Bitte mach ein paar Zeilenübrüche mehr
      - Variablen, die du über method="post" bekommst, sollte man mit $_POST['titel'], $_POST['name'], usw. aufrufen.
      - Ist es Zweck des Scriptes das jeder Mensch da News schreiben kann, oder gibt es noch eine Sperre?
      - Bei Sachen wie Titelfeldern benutzt mit <input type="text" name="titel"> usw...
      - Wieso schreibst du in jeder Datei die News da hinein?


      MfG Floriam
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar


      • #4
        Sorry aber wie gesagt ich bin Anfänger(und für jeden rat dankbar). Aber mein Problem habt ihr nicht wirklich gelöst.

        Es geht nach wie vor um die Formatierung der ganzen Sache. Es soll mit <hr> ein Strich vor und nach dem Text ausgegeben werden und mittles <br> dafür gesorgt werden, das auch ein Absatz vor und nach dem Text kommt.

        Bezüglich das ganze bei der Ausgabe durchführen. Ich bin Anfänger und habe keine Ahnung wie ich das machen soll.

        Villeicht könnt ihr mir ja doch noch helfen.

        thx

        GoDLiKe

        Kommentar


        • #5
          machs bei der ausgabe, wie es sich gehört.

          angenomen, du machst echo $zeile; und gibst damit die Zeile aus, dann kannst du auch

          echo '<hr>';
          echo $zeile;

          machen, dann gibst du halt eine Linie aus.

          Kommentar


          • #6
            Hallo,


            Das ich dir nicht bei deinem Problem geholfen hab war mir durchaus klar, allerdings schau ich mir den Code erstmal an, damit ich weiß worums geht.

            Da ich beim Code nicht so recht durchgeschaut hab, hab ich dir erstmal ein paar Tipps gegeben, wo etwas nicht sinnvoll ist, usw.


            Ah, ich habs glaub ich verstanden wo der Fehler ist

            Wenn man die Seite mit dem Formular öffnet, wird gleich ein neuer Datensatz in die Datei geschrieben.

            Also schreibt er wenn du die Seite öffnest erst mal "<b></b><br><hr>" in die Datei.

            Du musst vorher erst mal überprüfen, ob der Benutzer schon was eingegeben hat.

            Schau dir im PHP Manual die Funktion empty mal an

            Ich hoffe du weißt schon wie du was überprüfen kannst, ansonsten kannst du ja mal bei http://www.schattenbaum.net vorbeischauen, dort ist ein ganz gutes Einsteiger Tutorial.



            MfG Floriam
            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

            Kommentar


            • #7
              Danke für die Tipps.

              Hab mir die funktion empty bei php.net mal angeschaut, blick aber leider nicht ganz durch.

              villeicht kannst du mir das noch genauer erklären.


              thx

              GoDLiKe

              Kommentar


              • #8
                ähm, ist nicht dein ernst?


                empty($test);

                prüft, ob $test leer ist. wenn ja, gibbet n true, wenn nein, dann gibbet n false zurück.

                Wenn das schon schwer ist, wird das mit dem PHP aber nichts...

                Kommentar


                • #9
                  das ist nicht das problem.

                  es müsste meiner meinung ja etwa so aussehen.

                  if (empty($eintrag)) dann kommt was???

                  mein problem ist das ich nicht genau weiß wo der fehler liegt. das heißt wo mein skript dazu veranlaßt wird das es gleich beim öffnen des formulars mal zu schreiben beginnt.

                  ich weiß das newbies anstrengend sind. habt doch erbarmen mit mir.

                  Kommentar


                  • #10
                    wurde aber schon gesagt:
                    Ah, ich habs glaub ich verstanden wo der Fehler ist

                    Wenn man die Seite mit dem Formular öffnet, wird gleich ein neuer Datensatz in die Datei geschrieben.

                    Also schreibt er wenn du die Seite öffnest erst mal "<b></b><br><hr>" in die Datei.

                    Du musst vorher erst mal überprüfen, ob der Benutzer schon was eingegeben hat.
                    Du solltest dir aber erst noch mal die Punkte von Floriam ansehen. und das script mal struckturieren, dann wirds auch für dich einfacher zu verstehen...

                    Kommentar


                    • #11
                      Hallo,


                      1. Sind Newbies nicht nervig, wenn wir alle Top ausgebildet sein würden, wäre die Welt sehr Langweilig

                      2. Fehler wurde schon gefunden...

                      3. Das mit if(empty($eintrag)) ist fast richtig (oder ganz richtig wenn ich wüsste wie du das einsetzen willst), allerdings beideutet das "Wenn der Eintrag leer ist mach das und das..., ich würde das ganze eher in den Gegenteil machen, also if(!empty($eintrag)), da so geprüft wird, ob was eingegeben wurde.
                      Aber wie gesagt wusste ich nicht, was du mit if(empty($eintrag)) machen wolltest..



                      Floriam
                      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                      Kommentar


                      • #12
                        ok alles klar hab mir das jetzt nochmal angeschaut und eigentlich is es eh klar das er das skript sofort beim seitenaufruf ausführt.

                        so nun aber zu überprüfung. wie realisiere ich das jetzt. villeicht kannst du dir ja das untere der 2 skripte nochmal anschauen. mein gedankenansatz dazu ist folgender. ich muss mittel empty schauen ob die variable $daten leer ist. ist diese leer soll das skript nicht ausgeführt werden???!!! aber wie mach ich das dann mit der add funktion wenn ich auf den button drücke.
                        muss ja dann so sein das erst wenn man auf den button drückt das skript ausgeführt wird oder??!!

                        bitte noch einmal um hilfe.

                        thx

                        GoDLiKe

                        Kommentar


                        • #13
                          Woher kommt die variable $daten. Vorsicht!

                          programmier lieber sauber und beachte die genannten punkte. Schließlich geht es nicht in erster linie das ding jetzt schnell zum laufen zu bringen, sonst würd ichs dir in 5 munuten geben, sondern das DU das ding richtig programmiert bekommst.

                          Kommentar


                          • #14
                            Das mit dem $eintrag ist zwar unsauber, allerdings muss er das selbst irgendwo noch definieren, wir können ihm das nur raten ihn aber nicht dazu zwingen! Schlussfolgerung: Wir haben ihn darauf hingewiesen, der Rest ist seine Sache


                            Zu dem Script:

                            Erst wenn der Button gedrückt wurde setzen sich die Variablen $_POST['eintrag'], usw. folglich müssen wir einfach nur prüfen, ob diese Leer sind.

                            Das macht man (wie schon gesagt) mit if(!empty($_POST['eintrag'])), also so in etwa:

                            PHP-Code:
                            if(!empty($_POST['eintrag'])) {
                            //Hier das einfügen der News in die Datei
                            } else {
                            //Eventuell kann man nur hier das Formular anzeigen (ist schöner), allerdings kann man das auch einfach weglassen


                            MfG Floriam
                            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                            Kommentar


                            • #15
                              $eintrag wird ja definiert. und ist (danach) auch nie leer

                              $eintrag = "$inhalt <center><hr><br>$datum <b>$titel</b><br>$news<hr><br><br></center>";}

                              außer halt, wenn $add (übrigens auch falsch - ich sach es jetzt mal so) nicht true ist.

                              wegen diesem ganzen gehackstückel weise ich darauf hin , dass er sich das ganze nochmal ansehen möge und die genannten punkte berücksichtige.

                              Thema Zwingen: Ich verweigere die Hilfe...

                              Kommentar

                              Lädt...
                              X