mehrere Bilder Upload

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

  • mehrere Bilder Upload

    Hallo zusammen
    ich habe ein kleines Problem. Ich habe hier ein Formular, mit mehreren Zeilen. Das Formular wird auch richtig angezeigt. Der SQL-Befehl funktioniert, gut um es in der SQL-Tabelle zu speichern die Infos. Nur der Upload der Bilder nicht. Ist NUR 1Zeile im Formular forhanden gehts, sobald mehrere Zeilen sind nicht mehr. Zudem woll es so funktionieren, das angenommen Zeile1 kein neues Bild gewählt wird, das der Upload die Zeile vergisst und NUR die Zeilen verarbeitet, wo auch neue Bilder ausgewählt sind.
    Das sind die Felder wo ich anspreche aus der tabelle.
    Bild= bilda (altes Bild= bilda, neues Bild= bildn)
    Refnr=id
    Aktiv=bildaktiv

    So sieht mein Code zurzeit aus, kann mir da vielleicht jemand weiter helfen. währe schön.




    Formular (test.php)

    <table border="1">
    <form action="test_sql.php" method="post" enctype="multipart/form-data" >
    <?php
    include("../db.php");
    $idu= $_GET['url'];
    //3. SQL ABfrage zum Server senden und resultat in $abfrage speichern
    $abfrage = mysql_query("SELECT * FROM test where( gruppe = '$idu')ORDER BY `ort`, 'id' ASC ");
    //3. SQL ABfrage zum Server senden und resultat in $abfrage speichern
    while ($result = mysql_fetch_array ($abfrage))
    {
    $id = $result ['id'];
    $bild = $result ['bild'];
    $bildaktiv = $result ['bildaktiv'];
    ?>
    <tr>
    <input name="id[]" type="hidden" value= "<?php echo $id; ?>" />
    <td><img src="../bilder/<?php echo $bild ;?>" width="30"><input name="bildn[]" type="file" size="40" value="" />
    <input name="bilda[]" type="text" size="25" value="<?php echo $bild;?>"/>
    <select name="bildaktiv[]">
    <option value="<?php echo $bildaktiv;?>" SELECTED><?php echo $bildaktiv;?></option>
    <option value="sicht">Sichtbar</option>
    <option value="verdeckt">Verdeckt</option>
    </select> </td>
    </tr>
    <?php
    }
    ?>
    <td><input type="submit" value="speichern" /></td>
    </form>
    </table>

    </body>
    </html>



    SQL-Befehl (test_sql.php)

    <?php
    include("../db.php");


    // quelldatei pfad zieldatei
    move_uploaded_file($_FILES['bildn']['tmp_name'] , '../eigenschaften/'.$_FILES['bildn']['name']);

    if ($_POST['bildn'] !='')
    {

    $bildn=$_FILES['bildn']['name'];
    }
    else
    {
    $bildn = $_POST['bilda'];
    }

    $id = $_POST['id'];
    $bildaktiv = $_POST['bildaktiv'];
    for($vschleife = 0; $vschleife < count($_POST["id"]); $vschleife++) {
    mysql_query ("update test
    set
    bild='$bildn[$vschleife]',
    bildaktiv='$bildaktiv[$vschleife]'
    where id = $id[$vschleife]
    ");

    //ungleiche daten löschen
    if ($_FILES['bilda']['name']!= $old && $_FILES['bilda']['tmp_name']!= '' && $old !='')
    {
    $suchabfrage = mysql_query ("select bild from bilder where bild = '$old'");
    if (mysql_num_rows($suchabfrage) == 0)
    {
    unlink ("bilder/$bildn");
    }
    }
    }
    header("Location: test.php");
    ?>

  • #2
    schau dir zuerst mal das an:
    PHP-Code:
    <input name="bildn[]" ... /> 
    und dann das:
    PHP-Code:
    $_FILES['bildn']['tmp_name'
    dämmert es? oder mal ein print_r($_FILES) ausprobiert?

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      muss ich in sql also es so schreiben?
      $_FILES['bildn'][$vschleife]['tmp_name']


      auch wenn ich diese zeile (
      move_uploaded_file($_FILES['bildn']['tmp_name'] , '../eigenschaften/'.$_FILES['bildn']['name']);
      ) verschiebe zu


      for($vschleife = 0; $vschleife < count($_POST["id"]); $vschleife++) {
      move_uploaded_file($_FILES['bildn']['tmp_name'] , '../eigenschaften/'.$_FILES['bildn']['name']);

      mysql_query ("update test
      ........}

      funktioniert es nicht

      Kommentar


      • #4
        1. bitte php-tags nutzen.
        2. was sagt print_r($_FILES)?

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          er gibt mir kein resultat

          Kommentar


          • #6
            du weisst aber schon, was du hier gemacht hast?
            PHP-Code:
            <input name="bildn[]" ... /> 
            außerdem solltest du das hier und das hier auch mal lesen.

            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              ja ich weiss, was ich dort gemacht habe [] heisst, das es ein array gebildet wird.

              im obersten beitrag siehst du doch, das ich diese tag bereits

              enctype="multipart/form-data"
              und
              type="file"
              im formular eingesetzt habe.


              also woran kann es dann liegen, das er es nicht hochladet mit dem array
              Zuletzt geändert von phphilfe; 05.10.2008, 20:06.

              Kommentar


              • #8
                weil du ein array für mehrere dateien hast, aber nicht darauf zugreifst:
                PHP-Code:
                move_uploaded_file($_FILES['bildn']['tmp_name'
                hier fehlt also noch eine ebene.

                probier es erst mal nur mit einer datei und nenn das feld so:
                PHP-Code:
                <input name="bildn" ... /> 
                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  ja so würde es gehen, aber wo genau an welcher stelle muss ich meine schleife einbauen für move_uploaded_file($_FILES['bildn']['tmp_name']


                  kommt

                  move_uploaded_file($_FILES['bildn'][$vschleife]['tmp_name']
                  oder
                  move_uploaded_file($_FILES['bildn']['tmp_name'][$vschleife]
                  oder
                  move_uploaded_file($_FILES[$vschleife]['bildn']['tmp_name']

                  dort hin?

                  Kommentar


                  • #10
                    Wenn Du Dir das array mit print_r($_FILES) anschaust wirst Du es sehen...
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      habe die schleife für mehrfachbilder nun gefunden, funktioniert auch gut.

                      PHP-Code:
                      <meta http-equiv="pragma" content="no-cache">
                      <?php
                      error_reporting
                      (E_ALL);  
                      include(
                      "../db.php");

                      $bildt$_FILES['bildn']['tmp_name'];
                      $bildn=$_FILES['bildn']['name'];
                      $bilda $_POST['bilda'];
                      $id $_POST['id'];
                      $r $_POST['r'];
                      $g $_POST['g'];
                      $b $_POST['b'];
                      $bildaktiv $_POST['bildaktiv'];
                      $eigenschaft $_POST['eigenschaft'];

                      for(
                      $vschleife 0$vschleife count($_POST["id"]); $vschleife++)
                      {
                          if (
                      $bildt[$vschleife] !='')
                          {
                              
                      //                           quelldatei                  pfad                    zieldatei
                              
                      move_uploaded_file($bildt[$vschleife] , '../eigenschaften/'.$bildn[$vschleife]);
                              
                      mysql_query ("update eigenschaften
                              set 
                              bild='
                      $bildn[$vschleife]',
                              r='
                      $r[$vschleife]',
                              g='
                      $g[$vschleife]',
                              b='
                      $b[$vschleife]', 
                              bildaktiv='
                      $bildaktiv[$vschleife]',
                              eigenschaft='
                      $eigenschaft[$vschleife]'
                              where id = 
                      $id[$vschleife]");
                              
                              
                      //ungleiche daten löschen
                              
                      if ($bilda[$vschleife]!= $old && $bildt[$vschleife]!= '' && $old !='')
                              {
                                  
                      $suchabfrage mysql_query ("select bild from eigenschaften where bild = '$old'");
                                  if (
                      mysql_num_rows($suchabfrage) == 0)
                                  {
                                       
                      unlink ("../eigenschaften/$bildn");
                                  }
                              }
                          }
                          else
                          {
                              
                      mysql_query ("update eigenschaften
                              set 
                              r='
                      $r[$vschleife]',
                              g='
                      $g[$vschleife]',
                              b='
                      $b[$vschleife]', 
                              bildaktiv='
                      $bildaktiv[$vschleife]',
                              eigenschaft='
                      $eigenschaft[$vschleife]'
                              where id = 
                      $id[$vschleife]");
                          }
                      }
                      ?>
                      einfach die lösch funktion der nicht mehr benötigten bilder geht noch nicht, habe ich irgend wie einen fehler?


                      PHP-Code:
                      <meta http-equiv="pragma" content="no-cache">
                      <?php
                      error_reporting
                      (E_ALL);  
                      include(
                      "../db.php");

                      $bildt$_FILES['bildn']['tmp_name'];
                      $bildn=$_FILES['bildn']['name'];
                      $bilda $_POST['bilda'];
                      $id $_POST['id'];
                      $r $_POST['r'];
                      $g $_POST['g'];
                      $b $_POST['b'];
                      $bildaktiv $_POST['bildaktiv'];
                      $eigenschaft $_POST['eigenschaft'];

                      for(
                      $vschleife 0$vschleife count($_POST["id"]); $vschleife++)
                      {
                              
                              
                      //ungleiche daten löschen
                              
                      if ($bilda[$vschleife]!= $old && $bildt[$vschleife]!= '' && $old !='')
                              {
                                  
                      $suchabfrage mysql_query ("select bild from eigenschaften where bild = '$old'");
                                  if (
                      mysql_num_rows($suchabfrage) == 0)
                                  {
                                       
                      unlink ("../eigenschaften/$bildn");
                                  }
                              }
                      }
                      ?>

                      Die Löschfunktion sollte dies machen.

                      ich update das neue bild auf den server.
                      in die sql-tabelle schreibt er der neue dateiname.
                      soweit gehts.
                      nun sollte er die sql-tabelle vergleichen mit der dateien auf dem server und die löschen, welche nicht in der tabelle eingetragen sind.

                      aber irgend wie macht er dies nicht
                      Zuletzt geändert von phphilfe; 07.10.2008, 17:54.

                      Kommentar

                      Lädt...
                      X