problem mit textdatei

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

  • problem mit textdatei

    hallo,
    ich bin neu in diesem forum und habe auch gleich ein problem!!
    ich habe mir ein kleines gästebuch erstellt (funktioniert auch alles
    so wie ich es mir vorgestellt habe)! allerdings habe ich große probleme damit ein vorhandenen eintrag zu verändern!!!
    was ich sehr komisch finde ist,
    das ich keine fehlermeldung erhalte,
    jedoch ändert sich der eintrag auch nicht!!!
    hier ist mein script:
    PHP-Code:
    <?php 

    <?php 

    echo"
    <form src='<?php 
    $PHP_SELF?>' method='post' name='neu'>
    Beschreibung:<br>
    <input type=text name='besch' size='30'><br>
    Text:<br>
    <textarea rows='8' name='tx' cols='59'></textarea><br>
    <input type=submit value='senden' name='send'>
    &nbsp;&nbsp;&nbsp;link einf&uuml;gen, bsp.:
    [url] [url]www.paisone.rockt.de[/url][/url]
    </form>"
    ;

    /* ************************* */
    /* hier den script anpassen */
    /* **************************/
    /* seiten-name angeben */
    $seite="eingabe.php";
    /* dateinamen angeben */
    $textfile="news1.dat";
    /* ***************************** */
    /* *******************************/
    /* ab hier nichts mehr &auml;ndern */

    /* datum */
    $datum date("d-m-y");
    /* eintr&auml;ge z&auml;hlen */
    $dateifile ($textfile); //angabe der textdatei
    $zahl=count ($datei); //zaehlt die eintraege(zeilen)
    $zahl1=$zahl+1//zaehler wird um 1 erhoeht, da es ja mit null anf&auml;ngt
    /* link einf&uuml;gen */
    $tx str_replace("[url]","<a href='http://",$tx);
    $tx str_replace("[/url]","'target='_blank'>link</a>",$tx);


     
    /* operationen */
      
    if ($_POST['send'])
      {
        if ((!
    $besch) or (!$tx))
        {
          echo 
    "<B>fehlerhafte eingabe (bitte alle textfelder ausf&uuml;llen)</B><br>";
          }
          
          else
          {
         
          echo 
    "<b>ok</B><br>";
          
    /* ersetzt \n durch <br> */
          
    $tx ereg_replace("\n""<br>"$tx);
          
    /* nachricht &ouml;ffnen und lesen */ 
          
    if ($fp fopen ($textfile"r"))
          
    /* alte eintr&auml;ge lesen und speichern */
          
    $oldnews fread($fp,filesize($textfile));
          
    /* schliessen */
          
    @fclose($fp);
          
          
    /* oeffnen der textdatei */
          
    $aktion fopen ($textfile"w");
          
    /* neue nachricht schreiben*/
          
    fputs($aktion"#$zahl1&&|$datum&&|$besch&& $tx \n$oldnews");
          
    /* schliessen */
          
    fclose($aktion);
          
    /* seite neu laden */
          
    echo "<meta http-equiv='refresh' content='0; URL=$seite'>";
          break;
             
        }
      }


    /* auswahl des zu editierenden eintrag */
    echo
      
    "<b> Eintrag editieren </b><br>
      
      <form src='
    $PHP_SELF' method='post' name='neu1'>
      Beitragsnummer angeben (ohne #):<br>
      <input type=text name='angabe' size='3'>&nbsp;
      <input type=submit value='editieren' name='send1'>
      </form>"
    ;


      if (
    $_POST['angabe'])
        {
          
    /* textdatei &ouml;ffnen */
          
    $inhalt file($textfile);
          
    /* zeile suchen */
          
    $edit_zeile $inhalt[count($inhalt) -$angabe];
          
    /* zeile anpassen */
          
    $neue_zeile =explode ("&&"$edit_zeile);
          
    /* anzeige der textarea mit der ausgesuchten zeile als inhalt*/
          
    echo
          
    "<form src='$PHP_SELF' method='post' name='erhalten1'>
          Hier kann der Text editiert werden:<br>
          <textarea name='editierter_eintrag' cols='58' rows='8' id='id'>
    $neue_zeile[3]</textarea><br>
          <input type=submit value='abschicken' name='edit_e'>
          </form>"
    ;
         
         
    /* editierten eintrag in die textdatei schreiben */
            
    if ($_POST[edit_e])
              {
               
              
    $lesen fopen ($textfile"r");
              
    $lesen1fread($lesen,filesize($textfile));
              
    $lesen2str_replace($neue_zeile[3],$editierter_eintrag,$lesen1);
              
    fclose($lesen);
              echo
    "<br>";
              echo
    "$neue_zeile[3]";
              echo
    "<br>";
              
    $fp1 fopen ($textfile"w");
              
              
    fputs($fp1,$lesen1,1024);
              
    fclose($fp1);
              } 
              
              }
          
          
          
    /* falls keine auswahl stattfindet,bzw beitragsnummer nicht eingetippt wurde */
          
            
    if (!$_POST['angabe'])
              { 
              echo
    "<b>Status:</b>&nbsp;keine Eingabe<br><br>";
              }
            else
            {
            echo
    "Es wurde Eintrag <b>#&nbsp;$angabe&nbsp;</b>zum editieren gew&auml;hlt!<br><br>";
            }

     
    /* eintr&auml;ge anzeigen */
     
    $anzeigenfile ($textfile);
        foreach (
    $anzeigen as $zeig)
        {
          
    $teilen =explode ("&&"$zeig);
          echo
    "
          
    $teilen[0] $teilen[1] $teilen[2]<br> $teilen[3]
          <hr>"
    ;
        }     
        
    ?>
    bin schon 2tage dabei irgendwie den fehler herauszufinden, allerdings ohne erfolg!!
    über jede kritik+lösungsvorschläge würde ich mich sehr freuen!!
    ich hoffe mir kann jemand helfen!!
    lg pais-one

    ich habe diesen eintrag jetzt nochmal überarbeitet,
    da er zu unübersichtlich war, allerdings habe ich im vorfeld schon änderungen vorgenommen!! habe aber immernoch das
    selbe problem
    Zuletzt geändert von paisone; 04.08.2005, 22:43.

  • #2
    Hab nur kurz drüber geguckt, weil ich gleich schlafen gehe, aber der Fehler kann hierdran liegen (bzw. das ist die verbesserung):
    PHP-Code:
    echo
      
    "<b> Eintrag editieren </b><br>
      
      <form src='
    $PHP_SELF' method='post' name='neu1'>
      Beitragsnummer angeben (ohne #):<br>
      <input type=text name='angabe' size='3'>&nbsp;
      <input type=submit value='editieren' name='send1'>
      </form>"

    arrays sind klasse

    Kommentar


    • #3
      nützliches findest du hier:
      http://www.php-resource.de/forum/sho...threadid=50454

      Kommentar


      • #4
        Ich würde mal sagen escape da die paar Double Quotes und alles wird gut
        PHP Code Schnipsel

        Kommentar


        • #5
          $zahl1=$zahl+1; //zaehler wird um 1 erhoeht, da es ja mit null anf&auml;ngt
          Dann müsstest du die Anzahl aber um 1 reduzieren, damit dies mit den Indecies im Array noch stimmt.
          <input type=text name='angabe' size='3'>&nbsp;
          if($angabe){...}
          Du scheinst auf register_globals zu setzen. Würde ich ändern.
          Nicht $PHP_SELF sondern $_SERVER['PHP_SELF'] und nicht $angabe sondern $_POST['angabe'].

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            oh danke für eure antworten, ich werd das gleich mal testen!!

            ist echt n tolles forum im vergleich zu anderen!!!

            lg paisone

            Kommentar


            • #7
              hab leider immernoch das gleiche problem,
              hat nicht noch irgendwer n tip für mich??

              Kommentar


              • #8
                - setz der error_reporting auf E_ALL
                - poste nur relevante code-bereiche
                - was geht nicht? was genau?
                - wie weit wird der code so ausgeführt, wie du das willst
                - was geht nicht? das ist die frage aller fragen. wenn du die genau beantwortest, hast du die fehlerursache, die du dann auch beheben kannst.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  hallo nochmal,

                  - setz der error_reporting auf E_ALL
                  hab ich jetzt gemacht und folgende fehlermeldungen erhalten:

                  Warning: Undefined variable: tx in
                  c:\apache\htdocs\news\eingabe.php on line 30

                  Warning: Undefined index: send in
                  c:\apache\htdocs\news\eingabe.php on line 35
                  Eintrag editieren

                  Warning: Undefined index: angabe in
                  c:\apache\htdocs\news\eingabe.php on line 80

                  Warning: Undefined index: angabe in
                  c:\apache\htdocs\news\eingabe.php on line 118
                  Status: keine Eingabe

                  [COLOR=red]was ja auch nachzuvollziehen ist[/COLOR]

                  das script funktioniert soweit auch, ich kann einträge machen und
                  sie werden in der textdatei gespeichert!!

                  wenn ich jetzt einen eintrag auswähle (durch eingabe der beitrags-
                  zahl) kommt noch folgende fehlermeldung:

                  Warning: Undefined index: edit_e in
                  c:\apache\htdocs\news\eingabe.php on line 97

                  der ausgewählte text wird aber in der textarea angezeigt, die sich
                  daraufhin öffnet!

                  änder ich den eintrag jetzt und schicke ihn ab, passiert einfach
                  gar nichts
                  es kommt keine neue fehlermeldung
                  und der eintrag wird auch nicht verändert

                  also wird der fehler irgendwo hier liegen, denke ich:

                  PHP-Code:
                  if ($_POST['edit_e'])
                            {
                             
                            
                  $lesen fopen ($textfile"r");
                            
                  $lesen1fread($lesen,filesize($textfile));
                            
                  $lesen2=
                  str_replace($neue_zeile[3],$editierter_eintrag,$lesen1);
                            
                  fclose($lesen);
                            echo
                  "<br>";
                            echo
                  "$neue_zeile[3]";
                            echo
                  "<br>";
                            
                  $fp1 fopen ($textfile"w+");
                            
                            
                  fputs($fp1,$lesen2,1024);
                            
                  fclose($fp1);
                            } 
                  aber für mich sieht das ok aus, oder???

                  lg paisone

                  Kommentar


                  • #10
                    Um die Notice vom undefined Index 'edit_e' nicht mehr zu erhalten solltest du das ganze mit isset() oder empty() prüfen.


                    und schau dir mal den Inhalt von $lesen2 an, bevor du den versucht in die Datei zu kloppen....

                    Achso, noch als Tipp - versuch deine Variablen so sinngemäß wie möglich zu benennen. Für jemanden der den Code nicht kennt, machst du es damit um längen einfacher.

                    Kommentar


                    • #11
                      danke prego,

                      und schau dir mal den Inhalt von $lesen2 an, bevor du den
                      versucht in die Datei zu kloppen....
                      ups, ja das habe ich gemacht!! und festgestellt das $lesen1 und
                      $lesen2 identisch sind!!! kein wunder das sich nichts ändert!!

                      hm, aber woran kann es jetzt liegen??

                      liegt bestimmt an $neue_zeile[3], wenn ich die anschließend ausgeben
                      will zeigt er mir gar nichts an!!!

                      komisch

                      Kommentar


                      • #12
                        was steht denn in $lesen1 und $neuezeil[3] drin?

                        Kommentar


                        • #13
                          hi,


                          das ist $lesen1:
                          #1&&|08-08-05&&|hallo&&das ist ein test

                          und das ist $lesen2
                          #1&&|08-08-05&&|hallo&&das ist ein test

                          hier ist der alte eintrag:
                          [COLOR=red]nichts erscheint[/COLOR]

                          und hier ist der editierte eintrag:
                          das ist kein test

                          hier ist der teil des scripts:

                          PHP-Code:
                          if ($_POST['angabe'])
                              {
                                
                          /* textdatei &ouml;ffnen */
                                
                          $inhalt file($textfile);
                                
                          /* zeile suchen */
                                
                          $edit_zeile $inhalt[count($inhalt) -$angabe];
                                
                          /* zeile anpassen */
                                
                          $neue_zeile =explode ("&&"$edit_zeile);
                                
                          /* anzeige der textarea mit der ausgesuchten zeile als inhalt*/
                                
                          echo
                                
                          "<form src='$PHP_SELF' method='post' name='erhalten1'>
                                Hier kann der Text editiert werden:<br>
                                <textarea name='editierter_eintrag' cols='58' rows='8'
                          id='id'>
                          $neue_zeile[3]</textarea><br>
                                <input type=submit value='abschicken' name='edit_e'>
                                </form>"
                          ;
                                }
                               
                               
                          /* editierten eintrag in die textdatei schreiben */
                                  
                          if (isset($_POST['edit_e']))
                                    {
                                     
                                    
                          $lesen fopen ($textfile"r");
                                    
                          $lesen1fread($lesen,filesize($textfile));
                                    
                          $lesen2str_replace($neue_zeile[3],$editierter_eintrag,$lesen1);
                                    
                                    
                          fclose($lesen);
                                    
                          $fp1 fopen ($textfile"w");
                                    
                                    
                          fputs($fp1,$lesen2,1024);
                                    
                          fclose($fp1);
                                    } 
                                    
                                    
                                
                                echo
                          "das ist lesen1:<br>
                                
                          $lesen1 <br>
                                und das ist lesen2 <br>
                                
                          $lesen2";
                                echo
                          "hier ist der alte eintrag:<br>$neue_zeile[3]";
                                echo
                          "<br> und hier ist der editierte eintrag: <br>$editierter_eintrag"
                          ich find das komisch

                          Kommentar

                          Lädt...
                          X