Ankündigung

Einklappen
Keine Ankündigung bisher.

Textdatei aus while befüllen

Einklappen

Neue Werbung 2019

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

  • Textdatei aus while befüllen

    Hallo
    Ich habe da ein Problem.
    Ich versuche gerade mit einem PHP- Script Daten aus einer Datenbank zu holen und diese in einer Datei aufzulisten.
    Das funktioniert auch sehr gut, bis auf den Punkt das nur eine Wert ausgegeben wird.
    In der Datenbanktabelle stehen vier Werte untereinander.
    In der Textdatei dann immer nur der letzte Wert.

    PHP-Code:
    $server ="localhost";
            
    $username ="xxxx";
            
    $password ="xxxx";
            
    $datenbankname "xxxx";
            
    $tb "xxxx";

            
    $verbindung mysqli_connect($server,$username,$password,$datenbankname);
            
    $sql "SELECT * FROM  {$tb}";
            
    $db_erg mysqli_query($verbindung$sql);
            while(
    $zeile mysqli_fetch_array$db_ergMYSQLI_ASSOC)){
             
    // echo $zeile['http'];
            // echo '<br />';
            
    $inhalt $zeile['http'];

            
    $handle fopen ("blacklist_test.txt",'w+');
            }
    fwrite ($handle$inhalt);
            
    fclose ($handle); 

  • #2
    Du überschreibst $inhalt immer wieder. Du musst das verketten.

    http://php.net/manual/de/language.operators.string.php

    Kommentar


    • #3
      Statt
      PHP-Code:
      $handle fopen ("blacklist_test.txt",'w+');
      fwrite ($handle$inhalt);
      fclose ($handle); 
      würde ich folgendes empfehlen:
      PHP-Code:
      file_put_contents('blacklist_test.txt'$inhaltFILE_APPEND); 

      Kommentar


      • #4
        PHP-Code:
        sql "SELECT * FROM  {$tb}";
        // ...
        $inhalt $zeile['http']; 
        Anmerkung:
        Wenn du nur http brauchst, dann hole im SELECT auch nur http aus der DB. SELECT * ist pfui und sollte generell vermieden werden! Du bestellst bei McDonalds auch nicht einmal alles und isst dann nur den Big Mäc
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Vielen Dank.
          @MrChangelog

          Das funktioniert schon mal. Jetzt schreibt er nur hintereinander und überschreibt nicht.
          Die Datei wird Monatlich neu gemacht ....

          Kommentar


          • #6
            marv85 wenn die Einträge in der Datei untereinander (sprich: jeder Eintrag eine Zeile) sein sollen geht das auch:

            PHP-Code:
            file_put_contents('blacklist_test.txt'$inhalt."\r\n"FILE_APPEND); 
            Edit: wenn du auf Linux arbeitest reicht "\n".

            Kommentar


            • #7
              Ok stimmt .... mein Fehler das kannte ich schon das /n .

              Wie kann ich jetzt noch das überschreiben des alten texte umsetzen? 'w+'?

              Kommentar


              • #8
                FILE_APPEND weglassen, dann wir ersetzt. Ein Blick in die Doku hätte dir das auch gesagt.

                Dein Fehler ist aber das du das Schreiben in der Schleife hast dh du willst einerseits die DB Daten anhängen, aber die alten dann doch ersetzen.

                Du kannst die Datei vorher leeren und dann die DB Daten reinschreiben oder du gibts den Schreibprozess aus der Schleife raus, dh du bufferst das Zeug in der Schleife in eine Var und machst zum Schluss dann einmal den Schreibprozess in die Datei statt in der Schleife immer wieder, das ist nicht gut.

                Von wie vielen Werten reden wir hier in etwa? 50? 5.000? 500.000?
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Zitat von marv85 Beitrag anzeigen
                  Wie kann ich jetzt noch das überschreiben des alten texte umsetzen? 'w+'?
                  Wenn du den Dateiinhalt überschreiben willst, musst du den Parameter FILE_APPEND weglassen. Liest du eigentlich auch im PHP-Handbuch nach, was du verwendest, oder kopierst du nur blind Code aus dem Forum und hoffst, dass der irgendwie funktioniert?

                  Kommentar


                  • #10
                    Immer das letztere hellbringer.
                    Ach und das funktioniert nicht, habe ich schon probiert. Es überschreibt alles bis der letzte Wert steht. Da wäre ich wieder am Anfang.

                    Kommentar


                    • #11
                      Zitat von marv85 Beitrag anzeigen
                      Immer das letztere hellbringer.
                      Ach und das funktioniert nicht, habe ich schon probiert. Es überschreibt alles bis der letzte Wert steht. Da wäre ich wieder am Anfang.
                      Tja, dann musst du deine Arbeitsweise überdenken oder dir ein anderes Hobby suchen.

                      Wenn du alles auf einmal in die Datei schreibst, musst du den gesamten Inhalt auch erstmal in eine Variable schreiben. Ein wenig logisches Denkvermögen gehört zum Programmieren schon dazu.

                      Kommentar


                      • #12
                        Zitat von marv85 Beitrag anzeigen
                        Ach und das funktioniert nicht, habe ich schon probiert. Es überschreibt alles bis der letzte Wert steht. Da wäre ich wieder am Anfang.
                        "Funktioniert nicht" ... Na und warum nicht? Zeig bitte mal deinen aktuellen Code, wir können ja nicht hellsehen
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          PHP-Code:
                                  $server ="localhost";
                                  
                          $username ="xxxx";
                                  
                          $password ="xxxx";
                                  
                          $datenbankname "xxxx";
                                  
                          $tb "xxxx";

                                  
                          $verbindung mysqli_connect($server,$username,$password,$datenbankname);
                                  
                          $sql "SELECT * FROM  {$tb}";
                                  
                          $db_erg mysqli_query($verbindung$sql);
                                  while(
                          $zeile mysqli_fetch_array$db_ergMYSQLI_ASSOC))
                                  {
                                          
                          $inhalt =$zeile['http'];

                                          
                          file_put_contents('blacklist_test.txt' $inhalt."\r\n");

                                  } 

                          Kommentar


                          • #14
                            Du schreibst immer noch in der Schleife. Du hast immer noch SELECT *. Hast du die Beiträge gelesen?

                            Und:
                            Zitat von hausl Beitrag anzeigen
                            Von wie vielen Werten reden wir hier in etwa? 50? 5.000? 500.000?
                            ?

                            Beispiel (hier geitppt):
                            PHP-Code:
                            // ...
                            $sql "SELECT `http` FROM " $tb;
                            $db_erg mysqli_query($verbindung$sql);

                            $buf "";
                            while (
                            $zeile mysqli_fetch_array($db_ergMYSQLI_ASSOC)) {
                                
                            $buf .= $zeile['http'] . "\n";
                            }  

                            file_put_contents('blacklist_test.txt'$buf); 
                            The string "()()" is not palindrom but the String "())(" is.

                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              Das habe ich gelesen.
                              Es sind nur 4 werte im Moment es werden aber an die 200 werden.
                              Das SELECT * ist richtig da ich alle Werte aus der Tabelle haben möchte.

                              Ich entschuldige mich das ich zu spät antworte aber ich probiere und teste nebenbei.

                              Kommentar

                              Lädt...
                              X