tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
179
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Johanni Johanni ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    54
    Guten Abend,
    Ich habe folgendes Problem:
    Ich habe eine Datei erstellt, mit der ich Daten aus einer Form an meine DB senden kann. Das klappt soweit auch gut. Nun möchte ich in dieser Form noch eine Dropdownliste haben mir die Dateien aus einem Ordner auf dem server ausliest und den entsprechenden wert mit an die bd sendet.
    D.h. auf dem Server sind folgende Dateien test.php, beispiel.zip und diese werte sollen in der dropdownliste stehen. Je nach dem welchen Wert ich auswähle, soll dieser mit an die Datenbank geschickt werden z.B. "test.php" soll an Tabelle testdb Deld file gesendet werden.
    Die Dropdownliste habe ich geschrieben und sie funktioniert auch, konkret kann ich
    a) nicht das dropdown script in das eigentliche Übergabescript einbinden und
    b) weiß ich nciht wie ich den wert mit übergebe

    hat jemand eine idee?

    Vielen Dank & Gruss

    hier die scripte:
    addentry.php
    PHP-Code:
    <?php
    include("include.php");
    if (!
    $_POST) {
        
    $display_block "
        <form method=\"post\" action=\""
    .$_SERVER["PHP_SELF"]. "\">
        <p><strong>Name</strong><br/>
        <input type=\"text\" name=\"name\" size=\"30\" maxlength=\"75\"><br/>
        <strong>Beschreibung</strong><br/>
        <textarea name=\"description\" cols=\"50\" rows=\"4\" wrap=\"virtual\"></textarea><br>
        <strong>Date</strong><br/>
        <input type=\"text\" name=\"date\" size=\"20\" maxlength=\"10\"><br/>
        </p>
        <input type=\"submit\" name=\"submit\" value=\"ok\">
        </form>"
    ;
        } else if (
    $_POST) {
        
    // insert data to tables
        
    if (($_POST["name"] == "") || ($_POST["description"] == "")) {
            
    header("Location: addentry.php");
            exit;
        }
        
    // connect to database
        
    doDB();
        
    //add to table
        
    $add_master_sql "INSERT INTO alben (date_added, name, description, date) VALUES (now(), '".$_POST["name"]."', '".$_POST["description"]."', '".$_POST["date"]."')";
        
    $add_master_res mysqli_query($mysqli$add_master_sql)
                            or die(
    mysqli_error($mysqli));
                            
        
    mysqli_close($mysqli);
        
    $display_block "<p> Der Datensatz wurde hinzugefügt! </p>";
        }
    ?>
    <html>
    <head>
    </head>
    <body>
    <?php echo $display_block?>
    </body>
    </html>
    und raeddir.php
    PHP-Code:
    <?php
    $dirname 
    "./";
    $dh opendir($dirname);

    while (!((
    $file readdir($dh)) === false)) {
        
        echo 
    "<select name=\"sel_file\"><option>$file</option>";
    }
    closedir($dh);
    ?>
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    erstmal Willkommen im Forum

    dann gleich mal zu deinem Problem:
    Den Wert von einem Dropdown-Feld übergibst du anhand des "value"-Attributs in HTML. In deinem Fall willst du den Dateinamen in die Dropdown schreiben und diesen ebenfalls als Wert mitgeben.
    Das kannst du mit folgender Änderung in deiner "readdir.php" machen:

    PHP-Code:
    $dirname "./";
    $dh opendir($dirname);

    echo 
    '<select name="sel_file">';
    while (!((
    $file readdir($dh)) === false)) { 
      echo 
    '<option value="' $file '">' $file '</option>';
    }
    echo 
    '</select>';

    closedir($dh); 
    Soweit mal das Problem mit dem Übergabewert. Wie diese Datei allerdings mit deiner "addentry.php" zusammenhängt, kann ich mit dem Codeschnipseln nicht sagen (wegen Punkt a: "nicht das dropdown script in das eigentliche Übergabescript einbinden")

    // Edit:
    Tip: Anstatt dass du dich mit den ewigen Backslashes (\) ärgerst, kannst du Strings oder echo-Ausgaben in PHP auch mit einfachen Anführungszeichen schreiben. Dann kannst du dort ganz einfach die normalen Anführungszeichen verwenden.

    Beispiel:
    PHP-Code:
    // Anstatt:
    $display_block "
        <form method=\"post\" action=\""
    .$_SERVER["PHP_SELF"]. "\">
        <p><strong>Name</strong><br/>
        <input type=\"text\" name=\"name\" size=\"30\" maxlength=\"75\"><br/>
        <strong>Beschreibung</strong><br/>
        <textarea name=\"description\" cols=\"50\" rows=\"4\" wrap=\"virtual\"></textarea><br>
        <strong>Date</strong><br/>
        <input type=\"text\" name=\"date\" size=\"20\" maxlength=\"10\"><br/>
        </p>
        <input type=\"submit\" name=\"submit\" value=\"ok\">
        </form>"


    // Vorschlag:
    $display_block '
        <form method="post" action="' 
    $_SERVER["PHP_SELF"] . '">
        <p><strong>Name</strong><br/>
        <input type="text" name="name" size="30" maxlength="75"><br/>
        <strong>Beschreibung</strong><br/>
        <textarea name="description" cols="50" rows="4" wrap="virtual"></textarea><br>
        <strong>Date</strong><br/>
        <input type="text" name="date" size="20" maxlength="10"><br/>
        </p>
        <input type="submit" name="submit" value="ok">
        </form>'

    Sieht doch gleich viel übersichtlicher aus, oder?

    PS: @Moderator: Bitte ins PHP-Forum verschieben, ich denke da passt das besser rein

    Gruß
    Bratkartoffel
    Geändert von Bratkartoffel (18.11.08 um 23:11 Uhr)
    Johanni bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    Johanni Johanni ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    54
    @Bratkartoffel

    Sauber, Vielen Dank für den Tipp, denke damit sollte ich weiterkommen. Zu dem Verbinden der beiden scripts. Das sind die kompletten scripst und keine code-schnipsel. Wie dem auch sei vielleicht hat sonst ncoh jemand eine Idee wie man das elegant lösen kann aus zwei mach eins!

    nochmals Danke Bratkartoffel
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Keine Ursache

    Also, du willst die "readdir.php" in deine "addentry.php" einbauen; Wenn ich das richtig deute, dann wahrscheinlich in den $display_block in das Formular, oder?

    Nun, in dem Falle gäbe es mehrere Möglichkeiten Zum Beispiel einfaches Copy-Paste-Verfahren oder per include und leicht modifizierter "readdir.php".
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    Johanni Johanni ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    54
    @ Bratkartoffel
    nochmals Danke dass du am Ball bleibst- also du hast recht, ich würde den code gerne in die addentry.php einfügen, jeodch ist das nicht so leicht. habe das schöne copy paste versucht, allerdings klappte das nicht.
    Kannst du mir vvielleicht zeigen wie du den code einbinden würdest?!
    wäre stark!
    meine idee wäre: über dem submit butten den code einzufügen, allerdings t das wie gesagt nicht.


    PHP-Code:
    <?php 
    include("include.php"); 
    if (!
    $_POST) { 
        
    $display_block 
        <form method=\"post\" action=\""
    .$_SERVER["PHP_SELF"]. "\"> 
        <p><strong>Name</strong><br/> 
        <input type=\"text\" name=\"name\" size=\"30\" maxlength=\"75\"><br/> 
        <strong>Beschreibung</strong><br/> 
        <textarea name=\"description\" cols=\"50\" rows=\"4\" wrap=\"virtual\"></textarea><br> 
        <strong>Date</strong><br/> 
        <input type=\"text\" name=\"date\" size=\"20\" maxlength=\"10\"><br/> 
        </p> 
    // readdir code
        <input type=\"submit\" name=\"submit\" value=\"ok\"> 
        </form>"

        } else if (
    $_POST) { 
        
    // insert data to tables 
        
    if (($_POST["name"] == "") || ($_POST["description"] == "")) { 
            
    header("Location: addentry.php"); 
            exit; 
        } 
        
    // connect to database 
        
    doDB(); 
        
    //add to table 
        
    $add_master_sql "INSERT INTO alben (date_added, name, description, date) VALUES (now(), '".$_POST["name"]."', '".$_POST["description"]."', '".$_POST["date"]."')"
        
    $add_master_res mysqli_query($mysqli$add_master_sql
                            or die(
    mysqli_error($mysqli)); 
                             
        
    mysqli_close($mysqli); 
        
    $display_block "<p> Der Datensatz wurde hinzugefügt! </p>"
        } 
    ?> 
    <html> 
    <head> 
    </head> 
    <body> 
    <?php echo $display_block?> 
    </body> 
    </html>
     

  6. #6
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Joa, bevor ich ins Bett gehe, mache ich hier noch fertig

    Dazu nehme ich einfach den Code den du gerade gepostet hast

    PHP-Code:
    <?php 
    include("include.php"); 
    if (!
    $_POST) { 
        
    $display_block 
        <form method=\"post\" action=\""
    .$_SERVER["PHP_SELF"]. "\"> 
        <p><strong>Name</strong><br/> 
        <input type=\"text\" name=\"name\" size=\"30\" maxlength=\"75\"><br/> 
        <strong>Beschreibung</strong><br/> 
        <textarea name=\"description\" cols=\"50\" rows=\"4\" wrap=\"virtual\"></textarea><br> 
        <strong>Date</strong><br/> 
        <input type=\"text\" name=\"date\" size=\"20\" maxlength=\"10\"><br/> 
        </p> 
    "
    ;
        
        
    // Ab hier jetzt den Code von der extra php-Datei, nur statt dem echo (Ausgabe) 
        // schreiben wirs in die Variable $display_block.
        
    $display_block .= '<select name="sel_file">';
        while (!((
    $file readdir($dh)) === false)) { 
          
    $display_block .= '<option value="' $file '">' $file '</option>';
        }
        
    $display_block .= '</select>';
        
        
    // Ab hier wieder den normalen Code :)
        
    $display_block .= "
        <input type=\"submit\" name=\"submit\" value=\"ok\"> 
        </form>"

        } else if (
    $_POST) { 
        
    // insert data to tables 
        
    if (($_POST["name"] == "") || ($_POST["description"] == "")) { 
            
    header("Location: addentry.php"); 
            exit; 
        } 
        
    // connect to database 
        
    doDB(); 
        
    //add to table 
        
    $add_master_sql "INSERT INTO alben (date_added, name, description, date) VALUES (now(), '".$_POST["name"]."', '".$_POST["description"]."', '".$_POST["date"]."')"
        
    $add_master_res mysqli_query($mysqli$add_master_sql
                            or die(
    mysqli_error($mysqli)); 
                             
        
    mysqli_close($mysqli); 
        
    $display_block "<p> Der Datensatz wurde hinzugefügt! </p>"
        } 
    ?> 
    <html> 
    <head> 
    </head> 
    <body> 
    <?php echo $display_block?> 
    </body> 
    </html>
    Der Operator ".=" dient zum Anhängen von Variablen an einen String. Das ist die Kurzform für
    $a = $a . $b;

    Bei deinem Beispiel schreibe also erst das Formular, so wei ich will in die Variable $display_block. Dann wird Stück für Stück in der While-Schleife das Dropdown angehängt. Am Ende der While Schleife mache ich den Dropdown noch fertig, und hänge den Rest noch hinten ran.

    Somit hast du am Ende dein $display_block mit dem Formular, welches dein Dropdown enthält.

    Bei Fragen bin ich dann morgen Abend wieder erreichbar

    Gruß & Gute Nacht
    Bratkartoffel
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  7. #7
    Johanni Johanni ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    54
    @Bratkartoffel

    Großartig! es klappt hervorragend!
    Hatte leider jetzt erst Zeit es auszuprobieren!

    Vielen Dank für deine Tolle Hilfe!

    Gruss
     

  8. #8
    Johanni Johanni ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    54
    @ Bratkartoffel

    Hätte da doch noch ein Problem.
    Das mit der Datei klappt wunderbar und nun möchte ich noch, dass die dateigröße der ausgewählten datei an die datenbank geschickt wird.
    das script zum filesizen habe ich wieder hinbekommen, doch hapert es mit der einbindung.
    eine idee?
    habe es hinter das readdir script gesteckt und eigentlich auch die werte zum übergeben an die db angeweißen.

    HILFE******?

    DANKE & GRUSS

    PHP-Code:
    <?php  
    include("include.php");  
    if (!
    $_POST) {  
        
    $display_block "  
        <form method=\"post\" action=\""
    .$_SERVER["PHP_SELF"]. "\">  
        <p><strong>Name</strong><br/>  
        <input type=\"text\" name=\"name\" size=\"30\" maxlength=\"75\"><br/>  
        <strong>Beschreibung</strong><br/>  
        <textarea name=\"description\" cols=\"50\" rows=\"4\" wrap=\"virtual\"></textarea><br>  
        <strong>Date</strong><br/>  
        <input type=\"text\" name=\"date\" size=\"20\" maxlength=\"10\"><br/>  
        </p>  
    "
    ;   
        
    // opt box to select file for download
           
    $dirname "./";
        
    $dh opendir($dirname);
        
    $display_block .= '<select name="sel_file">'
        while (!((
    $file readdir($dh)) === false)) {  
          
    $display_block .= '<option value="' $file '">' $file '</option>'
        } 
        
    $display_block .= '</select>'
        
    // select file end
        // size of file
        
    $file_size "test.zip";
        
    $seize filesize("$file_size");
        
    $size_kb $size/1024;
        
    $display_block .= 
        <input type=\"submit\" name=\"submit\" value=\"ok\">  
        </form>"
    ;  
        } else if (
    $_POST) {  
        
    // insert data to tables  
        
    if (($_POST["name"] == "") || ($_POST["description"] == "")) {  
            
    header("Location: addentry.php");  
            exit;  
        } 
         
        
    // connect to database  
        
    doDB();  
        
    //add to table  
        
    $add_master_sql "INSERT INTO alben (date_added, name, description, date, download, size) VALUES (now(), '".$_POST["name"]."', '".$_POST["description"]."', '".$_POST["date"]."', '".$_POST["sel_file"]."', '".$_POST["size_kb"]."')";  
        
    $add_master_res mysqli_query($mysqli$add_master_sql)  
                            or die(
    mysqli_error($mysqli));  
                              
        
    mysqli_close($mysqli);  
        
    $display_block "<p> Der Datensatz wurde hinzugefügt! </p>";  
        }  
    ?>  
    <html>  
    <head>  
    </head>  
    <body>  
    <?php echo $display_block?>  
    </body>  
    </html>
     

  9. #9
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    würde die Dateigröße nicht extra in das Formular rein schreiben und dann weiter an die Datenbank schicken. Da kann man den Wert zu einfach verändern / manipulieren.

    Rufe die Dateigröße lieber erst kurz vor dem abschicken der Query ab.
    Also in etwa so:

    PHP-Code:
    <?php  
    include("include.php");  
    if (!
    $_POST) {  
        
    $display_block "  
        <form method=\"post\" action=\""
    .$_SERVER["PHP_SELF"]. "\">  
        <p><strong>Name</strong><br/>  
        <input type=\"text\" name=\"name\" size=\"30\" maxlength=\"75\"><br/>  
        <strong>Beschreibung</strong><br/>  
        <textarea name=\"description\" cols=\"50\" rows=\"4\" wrap=\"virtual\"></textarea><br>  
        <strong>Date</strong><br/>  
        <input type=\"text\" name=\"date\" size=\"20\" maxlength=\"10\"><br/>  
        </p>  
    "
    ;   
        
    // opt box to select file for download
           
    $dirname "./";
        
    $dh opendir($dirname);
        
    $display_block .= '<select name="sel_file">'
        while (!((
    $file readdir($dh)) === false)) {  
          
    $display_block .= '<option value="' $file '">' $file '</option>'
        } 
        
    $display_block .= '</select>'
        
    // select file end
        
    $display_block .= 
        <input type=\"submit\" name=\"submit\" value=\"ok\">  
        </form>"
    ;  
        } else if (
    $_POST) {  
        
    // insert data to tables  
        
    if (($_POST["name"] == "") || ($_POST["description"] == "")) {  
            
    header("Location: addentry.php");  
            exit;  
        } 
         
        
    // size of file
        
    $size filesize($_POST['sel_file']);
        
    $size_kb $size/1024;
        
    // connect to database  
        
    doDB();  
        
    //add to table  
        
    $add_master_sql "INSERT INTO alben (date_added, name, description, date, download, size) VALUES (now(), '".$_POST["name"]."', '".$_POST["description"]."', '".$_POST["date"]."', '".$_POST["sel_file"]."', '".$size_kb."')";  
        
    $add_master_res mysqli_query($mysqli$add_master_sql)  
                            or die(
    mysqli_error($mysqli));  
                              
        
    mysqli_close($mysqli);  
        
    $display_block "<p> Der Datensatz wurde hinzugefügt! </p>";  
        }  
    ?>  
    <html>  
    <head>  
    </head>  
    <body>  
    <?php echo $display_block?>  
    </body>  
    </html>
    Gruß
    Bratkartoffel
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  10. #10
    Johanni Johanni ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    54
    Bratkarftoffel!

    Ganz ganz groß! Vielen Dank für deine Hilfe!
    Hast du vielleicht auch ncoh ne Idee wie die raeddir function mir nur .zip ausgiebt?

    Kann dich leider nicht nochmal bewerten aber deine Hilfe war super!
    Danke und Gruss
     

Ähnliche Themen

  1. Problem bei der Übergabe von variablen
    Von spikaner im Forum PHP
    Antworten: 4
    Letzter Beitrag: 31.08.07, 19:51
  2. Problem Excel Dropdownliste und Hyperlinks
    Von gmasuch im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 11.05.07, 12:34
  3. Problem bei der Übergabe einer Var.
    Von Impi2k im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 25.04.06, 17:01
  4. php übergabe problem
    Von MechanU im Forum PHP
    Antworten: 3
    Letzter Beitrag: 08.08.05, 11:59
  5. Antworten: 4
    Letzter Beitrag: 18.11.04, 17:03