Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL zeile auslesen und in txt datei umwandeln

Einklappen

Neue Werbung 2019

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

  • SQL zeile auslesen und in txt datei umwandeln

    Hallo,

    ich habe etwas für mich wohl unlösbares vor und komme leider selber nicht weiter.

    Was ich bis Dato Habe:

    Ich habe 2 PHP seiten die zu folgendem dienen. Seite Nummer eins:

    PHP-Code:
    <?php
    $verbindung 
    mysql_connect("******""********" "********"
    or die(
    "Verbindung zur Datenbank konnte nicht hergestellt werden"); 
    mysql_select_db("test") or die ("Datenbank konnte nicht ausgewählt werden"); 

    $izahl $_POST["id"];

    $date date("Y.m.d");
    $time date("H:i");
    $ipadresse getenv ("REMOTE_ADDR");

    if(
    $izahl == ""
        { 
            echo 
    "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"id.php\">Zurück</a>"
            exit; 
        }
    else
    {
        
    $eintrag "INSERT INTO id (ipadresse, izahl, date, time) VALUES ('$ipadresse', '$izahl', '$date', '$time')"
        
    $eintragen mysql_query($eintrag); 

        if(
    $eintragen == true
        {
            echo 
    $ipadresse;
            echo 
    "    GUUUUTTTTTT!!! <a href=\idhome.php\>Zur&uuml;ck</a>";  
            
    //header("location:id.php");  
        
    }
        else 
        { 
            echo 
    $ipadresse;
            echo 
    "Fehler!!! <a href=\idhome.php\>Zur&uuml;ck</a>"
        } 
    }    
    ?>
    Dies dient dazu eine zahl und die IP sowie das eintragungsdatum des einträgers in eine SQL tabelle zu schreiben.

    Seite nummer 2:

    PHP-Code:
    <HTML>
    <head>
        <title>Sev ID &Uuml;bersicht</title>
    </head>
    <body>
        <a href="***********">ID Home</a> <br />
        <a href="***********">ID einlesen</a> <br />
        <br />
        <?php
            $verbindung 
    mysql_connect("********""********" "********");
            
    mysql_select_db("test");
     
            
    $ipadresse getenv ("REMOTE_ADDR");
            
    $abfrage "SELECT COUNT(*) FROM acc WHERE ip='".$ipadresse."'";
            
    $result mysql_query($abfrage);
            
    $count mysql_result($result,0);

            if ( 
    $count )
            {
                
    $ueber "SELECT * FROM id";
            }
            else
            {
                
    $ueber "SELECT * FROM id WHERE ipadresse='".$ipadresse."'";
            }
            
            
    $uebersicht mysql_query($ueber);
    ?>
    <table border="1">
        <tr>
            <td>IP-Adresse</td>
            <td>Eingegebene Zahl</td>
            <td>Datum</td>
            <td>Zeit</td>
        </tr>
            <?php
            
    while ($row mysql_fetch_array($uebersichtMYSQL_BOTH))
            {
            
    ?>
                    <tr>
                        <td>
                        <?php
                        
    echo $row["ipadresse"];
                        
    ?>
                        </td>
                        <td>
                        <?php
                        
    echo $row["izahl"];
                        
    ?>
                        </td>
                        <td>
                        <?php
                        
    echo $row["date"]
                        
    ?>
                        </td>
                        <td>
                        <?php
                        
    echo $row["time"]
                        
    ?>
                        </td>
                    </tr>
                
            <?php
            
    }
        
    ?>
        </table>
        
    </body>
    </html>
    Hier kann ich die ganze tabelle abrufen als einträger nur das was ich selber eingetragen habe und als admin dementsprechend alle einträge.

    So das soweit zu dem was ich habe.

    Jetzt kommt das wo ich nicht weiterkomme.

    Undzwar habe ich vor das neben jeder spale die in der tabelle ist ein knopf sozusagen bzw link sich befindet womit ich eine TXT datei runterladen kann. Diese TXT datei soll daten aus 3 Weitren SQL tabellen enthalten ( auser man kann sagen das nach spalte 4 z.B. in der nächsten spalte weitergeschrieben werden soll, dann kann ich auch alls in eine sql tabelle bringen) die wie folgt aussehen müssen.

    FREQUENCEDATAHDR;ABC;2010/05/25;2010/05/25
    FREQUENCEDATAPOS;ABC;2010/05/25;1;09:00:00;09:15:00;10;9
    FREQUENCEDATAPOS;ABC;2010/05/25;1;09:15:00;09:20:00;15;13

    nur scheitere ich jetzt schon an dem ansatz wie ich das bewerkstelligen kann / könnte.

    ich hoffe jemand von euch kann mir dabei weiterhelfen

    MFG, Sev


  • #2
    Wo genau ist denn nun dein Problem?

    Du willst Daten aus 3 oder 4 Tabellen abfragen und diese in eine .txt schreiben.

    Also machst du nacheinander deine 3-4 Abfragen, packst die Daten, die du
    haben möchtest so wie du sie brauchst in einen String und wenn du mit der
    letzten fertig bist speicherst du diesen String per file_put_contents() in eine .txt.
    Diese Datei kannst du dann ganz normal verlinken (natürlich in einem öffentlich
    zugänglichen Verzeichnis speichern).

    Alternativ, falls du die Datei nicht als .txt auf dem Server gespeichert brauchst / willst,
    sondern sie nur vom User geladen werden soll, kannst du sie dem User auch
    direkt schicken per

    PHP-Code:
    <?php
        
    /**
         * Hier deine Abfragen etc
         * Was in der .txt gespeichert werden soll steht in der Variablen $txt
         * Also dieses "FREQUENCEDATAHDR;ABC;2010/05/25;2010/05/25" etc halt
         */

        
    header("Content-Type: text/plain");
        
    header("Expires: " gmdate("D, d M Y H:i:s") . " GMT"); 
        
    header("Content-Disposition: attachment; filename=datei.txt"); 
        
    header("Pragma: no-cache"); 
        echo 
    $txt;
        exit;

    Kommentar


    • #3
      Danke für die schnelle antwort,

      ich habe mich wohl ein wenig falsch ausgedrückt

      mein problem ist das ich quasi hinter jeder zeile der tabelle die auf meiner einen seite erstellt wird den dazugehörigen download link brauche. und da die tabelle sehr zahlreiche einträge bekommt kan man das nicht per hand nachschreiben deswegen brauche ich quasi einen automatisierten code der sagt das hinter jeder tabellenspalte ein knopf ist der die dazugehörige txt datei erstellt und dem benuzer zuschickt dennoch nicht auf dem server speichert.

      auch wenn das unten ausschaut als wenn ich php ein bissel verstehe habe ich mich zu diesen beiden seiten eher durch stupides googeln erkämpft xD das heist ich brauch quasi eine volltrottel erklärung zu dem ganzen :/

      tut mir echt leid

      Kommentar


      • #4
        die dazugehörige txt datei erstellt und dem benuzer zuschickt dennoch nicht auf dem server speichert.
        Diesen Teil z.B. erfüllt das von mir gepostete Snippet.

        Nun müsstest du halt nur noch deine Ausgabe erstellen und jeweils einen Link
        für jeden Datensatz generieren.

        Ich gehe mal davon aus, dass jede deiner Tabellen eine Unique ID besitzt, also
        könntest du in deiner Ausgabe den Link ja folgendermassen generieren:

        Code:
            <a href="download.php?id=<?php echo $deine_unique_id; ?>">Download</a>
        Dann erstellst du eine "download.php" in der du dann die Daten ausliest, die zu
        der betreffenden ID gehören, baust die dir so zusammen, wie es nachher in der .txt
        aussehen soll und gibst das dann aus.

        Die download.php könnte also ungefähr so aussehen, wie das von mir gepostete
        Snippet, nur vor der Ausgabe müsste noch etwas kommen wie:

        PHP-Code:
        <?php
           $id 
        = (INT)$_GET['id']; // Davon ausgehend dass die ID eine Ziffernfolge ist, ggf sonst halt prüfen, ob auch das drin steht, was drin stehen soll => SQL Injection

            
        $sql "SELECT a, b, c FROM tabelle WHERE id = "$id ."";
            
        // ... usw, hier halt die abgefragten Daten dann in $txt speichern, entsprechend so formatiert, wie die .txt nachher aussehen soll

        Kommentar


        • #5
          Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
          Choosing an API
          Warum man mysql* generell nicht (mehr) nutzen sollte.
          Wie man von mysql* auf PDO umsteigt
          Wissenswertes zum Thema SQL-Injection
          Standards - Best Practices - AwesomePHP - Guideline für WebApps

          Kommentar

          Lädt...
          X