Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Bilderupload update in DB

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Bilderupload update in DB

    Hallo Leute,
    auf meiner Seite habe ich ein Formular in der die User Einträge mit Bilder anlegen können.
    Die Daten der Einträge werden in der tabelle arbeiten gespeichert.
    Pro Eintrag können max. 10 Bilder hochgeladen werden, diese werden in einem Ordner und der Pfad dorthin in der Tabelle bilder gespeichert und haben in der Spalte PK die ID des Eintrages als Primärschlüssel.
    So weit so gut.

    PROBLEM: Wenn ich einen Eintrag später mal editiere zB.: 3 Bilder sind in eintrag NR 1 schon vorhanden und ich möchte Bild 2 mit einem neuen Bild ersetzen. Wie kann ich das am besten lösen?? Über die ID in der tabelle bilder geht das ja nicht da die ja pro eintrag wenn 10 bilder hochgeladen werden immer ne neue id erstellt BSP: eintrag Nr 1 hat 10 bilder dh in der tabelle bilder sind datensätze mit der id 1-10, bei eintrag Nr 2 wären es dann datensätze von 11-20 usw.
    Wie kann ich also überprüfen welches Bild neu upgeloadet wurde, und nur dieses updaten???

    Hoffe ihr versteht auf was ich hinaus will

    Hier mal der Code:

    PHP-Code:
    <br/>Bild 1: <input type="file" name="Image1" size="40"/>
                    <
    br/>Bild 2: <input type="file" name="Image2" size="40"/>
                    <
    br/>Bild 3: <input type="file" name="Image3" size="40"/>
                    <
    br/>Bild 4: <input type="file" name="Image4" size="40"/>
                    <
    br/>Bild 5: <input type="file" name="Image5" size="40"/>
                    <
    br/>Bild 6: <input type="file" name="Image6" size="40"/>
                    <
    br/>Bild 7: <input type="file" name="Image7" size="40"/>
                    <
    br/>Bild 8: <input type="file" name="Image8" size="40"/>
                    <
    br/>Bild 9: <input type="file" name="Image9" size="40"/>
                    <
    br/>Bild 10: <input type="file" name="Image10" size="40"/> 
                
                    <
    br/><input type="submit" name="upload" value="Upload"/><br/><br/> 

    PHP-Code:
    if (isset($_POST['upload']))  {
                if (
    file_exists($_FILES["Image1"]["tmp_name"])) {move_uploaded_file($_FILES["Image1"]["tmp_name"],"../contents/".$id."_".$_FILES["Image1"]["name"]) or error('receiving directory insufficient permission'$form);

                
    $Image1"../contents/".$id."_".$_FILES["Image1"]["name"];}

                if (
    file_exists($_FILES["Image2"]["tmp_name"])) {move_uploaded_file($_FILES["Image2"]["tmp_name"],"../contents/".$id."_".$_FILES["Image2"]["name"]) or error('receiving directory insufficient permission'$form);
                
    $Image2"../contents/".$id."_".$_FILES["Image2"]["name"];}
    usw.

    $sql "Insert INTO bilder (Bild, PK) VALUE ('$Image1','$id'), ('$Image2','$id') usw.";
        
    mysql_query($sql); 

  • #2
    Hi,

    ich hab es nicht verstanden, aber Zugriff machst Du stets über ne ID und meist setzt du das Feld als auto_increment.!

    Über die ID in der tabelle bilder geht das ja nicht da die ja pro eintrag wenn 10 bilder hochgeladen werden immer ne neue id erstellt BSP: eintrag Nr 1 hat 10 bilder dh in der tabelle bilder sind datensätze mit der id 1-10, bei eintrag Nr 2 wären es dann datensätze von 11-20 usw.
    unklar Bitte mal kleinen Screenshot von der Tabelle zeigen (oder genauer beschreiben).

    mfg Wolf29

    P.S. Wenn du hier das einfügst mit $sql = "Insert INTO bilder (Bild, PK) VALUE ('$Image1','$id'), ('$Image2','$id') usw."; und du ein auto_increment feld vorne hast, hast du doch deine eindeutige Nummer??

    Kommentar


    • #3
      Hallo Wolf29,

      ich weiß is ziemlich kompliziert
      Ich versuchs noch einmal.

      Pro Eintrag 10 Bilder dh in der DB steht dann
      Bsp Eintrag Nr.: 1

      ID | Bild | PK (das is die ID vom Eintrag)
      1 | blabla.jpg | 1
      2 | blabla.jpg | 1
      3 | blabla.jpg | 1
      4 | blabla.jpg | 1
      5 | blabla.jpg | 1
      6 | blabla.jpg | 1
      7 | blabla.jpg | 1
      8 | blabla.jpg | 1
      9 | blabla.jpg | 1
      10 | blabla.jpg | 1

      für Eintrag Nummer 2 wäre das dann so

      11 | blalba.jpg | 2
      12 | blabla.jpg | 2
      13 | blabla.jpg | 2
      14 | blabla.jpg | 2
      15 | blabla.jpg | 2
      16 | blabla.jpg | 2
      17 | blabla.jpg | 2
      18 | blabla.jpg | 2
      19 | blabla.jpg | 2
      20 | blabla.jpg | 2

      mein Problem is halt wenn ich ne update Funktion mache soll die für ALLE Einträge gelten aber wenn ich
      jetzt bild 5 update aus eintrag 2 dann müsste die funktion so aussehen:

      UPDATE bilder Bild WHERE PK = $id (die id wird beim bearbeiten eines Eintrages übergeben dh da würde jetzt 2 drinnen stehen) && ID ==15
      aber das gilt dann ja nur für die ID 15

      Was is aber wenn ich bei Eintrag 1 ein oder mehrere Bilder update dann hab ich ja wieder andere IDs.
      Ich bräuchte also was wo ich lesen kann um welches Bild (1-10) es sich handelt. Den Eintrag krieg ich eh durch $id.
      Aber halt net welches Bild. Dh ich müsste beim upload der Bilder schon irgendeine Varaible zb. Zahlen von 1-10 mitübergeben und die dann in die DB speichern,
      wie mach ich das am besten???

      Kommentar


      • #4
        Ähm...du hast doch die erste Spalte (id), mit einer eindeutigen Nummer, die du nehmen kannst Warum nimmst du die den nicht? Also UPDATE bilder Bild WHERE id = $id - du musst halt diese id mit übergeben!

        mfg wolf29

        Kommentar


        • #5
          Ich kapiers nicht

          Wie krieg ich die nennen wie sie BildID (also die auto-increment von tabelle bilder) zu meinen Bilder 1-10 ???

          PHP-Code:
          <br/>Bild 1: <input type="file" name="Image1" size="40"/>
                          <
          br/>Bild 2: <input type="file" name="Image2" size="40"/>
                          <
          br/>Bild 3: <input type="file" name="Image3" size="40"/>
                          <
          br/>Bild 4: <input type="file" name="Image4" size="40"/>
                          <
          br/>Bild 5: <input type="file" name="Image5" size="40"/>
                          <
          br/>Bild 6: <input type="file" name="Image6" size="40"/>
                          <
          br/>Bild 7: <input type="file" name="Image7" size="40"/>
                          <
          br/>Bild 8: <input type="file" name="Image8" size="40"/>
                          <
          br/>Bild 9: <input type="file" name="Image9" size="40"/>
                          <
          br/>Bild 10: <input type="file" name="Image10" size="40"/> 
                          <
          br/><input type="submit" name="upload" value="Upload"/><br/><br/> 

          Kommentar


          • #6
            Kein Ding - wo gibst Du den die Bilder aus? Üblicherweise liest Du aus der DB ja die Pfade aus und machst z.B. einen Bearbeiten Button dahinter. Dort übergibst du z.B. in nem hidden Feld (beim auslesen) die id.

            mfg Wolf29

            Kommentar


            • #7
              Danke mal für deine Geduld und Hilfe, ich bin manchmal ein bisschen begriffsstutzig

              ALSO:
              Es is so das ich eine Übersicht für die Einträge habe dort daneben ist ein Bearbeiten Button-> wenn man draufklickt kommt man auf die Editieren seite (dabei wird die ID des eintrages übergeben). Wenn man einen neuen Eintrag anlegt kommt man auf dieselbe seite nur is dann die ID=new und es wird ein neuer Db eintrag gemacht bei vorhandenen wird geupdatet.

              DH auf dieser Editieren Seite werden auch die Bilder des jeweiligen Eintrages angezeigt + dort kann man sie auch hochladen (upload siehe code im ersten post)

              PHP-Code:
              Bild 1: <input type="file" name="Image1" size="40"/>
                              <
              br/>Bild 2: <input type="file" name="Image2" size="40"/>
                              <
              br/>Bild 3: <input type="file" name="Image3" size="40"/>
                              <
              br/>Bild 4: <input type="file" name="Image4" size="40"/>
                              <
              br/>Bild 5: <input type="file" name="Image5" size="40"/>
                              <
              br/>Bild 6: <input type="file" name="Image6" size="40"/>
                              <
              br/>Bild 7: <input type="file" name="Image7" size="40"/>
                              <
              br/>Bild 8: <input type="file" name="Image8" size="40"/>
                              <
              br/>Bild 9: <input type="file" name="Image9" size="40"/>
                              <
              br/>Bild 10: <input type="file" name="Image10" size="40"/> 
                          
                              <
              br/><input type="submit" name="upload" value="Upload"/><br/><br/> 
              PHP-Code:
              $sql"SELECT * from bilder WHERE PK = $id && BildNr != 0"
                              
              $result mysql_query($sql);
                              while (
              $row mysql_fetch_object($result))
                              {
                              
                                           foreach (
              $row as $image){    
                                          echo 
              '<img src="/'.$image.'" width="120px" height="100px"/>'.'&nbsp;';
                                          }            
                              } 
              Ich weiß eben nicht wie ich das am besten lösen soll dass wenn man jetzt einen Eintrag bearbeitet und ein bild austauscht nur dieses ausgetauscht wird. Weil wenn ich so einfach auf upload klicke überschreibt er mir zb: die bilder 2-10 die ich nicht neu rauflade mit " " also gor nix und bild1 wird der pfad gespeichert weil das ja neu raufgeladen wurde.

              Kommentar


              • #8
                Hi,

                einfaches Beispiel für's Verständnis:

                PHP-Code:
                $qryImg mysql_query("SELECT id, bild, pk FROM bilder") or die("Fehler: ".mysql_error());


                While (
                $row mysql_fetch_array($qryImg))
                {
                 echo 
                "<a href=\"linkzudeinemscriptzumbearbeiten.php?bildid=".$row["id"].">\"<img src=\"".$row["bild"]."\"></a><br />";

                so änhlich (einfach) kannst du das machen. Jetzt brauchst du ein Script, was z.B. das Bild anhand der id darstellt und natürlich nochmal ein Formular, damit man ein Alternativ Bild hochladen kann. Bei einem erfolgreichen hochladen, musst du natürlich ein Update bei dem Bildpfad in der Spalte machen (wenn die Datei einen andere Namen hat) und das Bild im Ordner aufem Server ersetzen.

                mfg Wolf29

                Kommentar


                • #9
                  Okay danke mal.
                  Wer das mal so umbauen.
                  Ich melde mich wieder fals was unklar is oder es net funzen sollte

                  Kommentar


                  • #10
                    Heyho,

                    so hab das mal ein bisschen anders gelöst. Vl schaut ihr euch das mal an und sagt mir wo der fehler liegt oder ob ich das überhaupt so machen kann.

                    Auf der Editier Seite der Einträge lese ich die Bilder nun folgendermaßen aus:
                    Wenn es sich um einen "neuen" Eintrag handelt wird ein Formular mit Bild 1-10 angezeigt.
                    Wenn es sich um einen "alten" Eintrag handelt werden die Bilder + ein neues upload Feld angezeigt

                    PHP-Code:
                     <?  
                                if ($id != "new"){
                                $qryImg = mysql_query("SELECT BildID, Bild, BildNr, PK FROM bilder WHERE PK = $id && BildNr != 0") or die("Fehler: ".mysql_error());

                                while ($row = mysql_fetch_array($qryImg))
                                 { ?>
                                
                                
                                <li id="element_<?=$row['BildID']?>" style="display:block; list-style-type:none; border-bottom:1px solid black;">
                                        <table>
                                       <tr><td>Bild <?=$row['BildNr']?> bearbeiten:</td>
                                       <td><img src="http://www.php.de/<?=$row["Bild"]?>" width="120" height="100"/></td>
                                       <td>
                    <form action="admin_edit.php?id=<?=$row['PK']?>" method="post" name="form2" enctype="multipart/form-data"> 
                    <input type="file" name="Image<?=$row['BildID']?>" size="40"/>
                    <input type="hidden" name="BildID" value="<?=$row['BildID']?>"/>
                    <input type="submit" name="upload<?=$row['BildID']?>" value="Upload"/></form>
                                       </td>
                                       </tr>
                                       </table>
                                    </li>
                                
                                <? } 
                                } else{
                                ?>        
                                    
                                    <br/><strong>Bilder:</strong><br/>

                                    <br/>Bild 1: <input type="file" name="Image1" size="40"/>
                                    <br/>Bild 2: <input type="file" name="Image2" size="40"/>
                                    <br/>Bild 3: <input type="file" name="Image3" size="40"/>
                                    <br/>Bild 4: <input type="file" name="Image4" size="40"/>
                                    <br/>Bild 5: <input type="file" name="Image5" size="40"/>
                                    <br/>Bild 6: <input type="file" name="Image6" size="40"/>
                                    <br/>Bild 7: <input type="file" name="Image7" size="40"/>
                                    <br/>Bild 8: <input type="file" name="Image8" size="40"/>
                                    <br/>Bild 9: <input type="file" name="Image9" size="40"/>
                                    <br/>Bild 10: <input type="file" name="Image10" size="40"/> 
                                
                                    <br/><input type="submit" name="upload" value="Upload"/><br/><br/>    
                                    <? }
                    Und hier die Update Funktion:

                    PHP-Code:
                    $BildID $row['BildID'];
                        
                        if (isset(
                    $_POST['upload"'.$BildID.'"']))  {
                            
                            
                                if (
                    file_exists($_FILES["Image".$BildID.""]["tmp_name"])) {move_uploaded_file($_FILES["Image".$BildID.""]["tmp_name"],"../contents/".$id."_".$_FILES["Image".$BildID.""]["name"]) or error('receiving directory insufficient permission'$form);

                                
                    createThumb("../contents/".$id."_".$_FILES["Image".$BildID.""]["name"],222$ordner);
                                
                    $Thumb $ordner.$id."_".$_FILES["Image".$BildID.""]["name"];
                                
                    $Image"../contents/".$id."_".$_FILES["Image".$BildID.""]["name"];}
                                
                            
                    $sql "UPDATE bilder SET 
                                        Bild = \"
                    $Image\"
                                        
                                    WHERE PK = 
                    $id && BildID = $BildID ";
                                    
                    mysql_query($sql);
                                    
                        } 
                    Nur leider wird nix geupdatet.
                    EDIT: es gibt auch keine Fehlermeldung. Und das Bild wird weder im Ordner noch der Pfad in der Db gespeichert...an was kann das liegen?

                    Kommentar


                    • #11
                      <input type="submit" name="upload<?=$row['BildID']?>" value="Upload"/></form>
                      ...mach einen normalen Submit Button und füge als z.B. hiddenfeld die id und nicht die PK Nummer ein.

                      und sowas bitte auch nicht:

                      if (isset($_POST['upload"'.$BildID.'"'])) {

                      Dadurch kannst du gezielt auf das Bild zugreifen.
                      Du kannst durch die While Schleife mehrere froms erstellen jeweils mit einem eigenen Submit Button (eine Möglichkeit), oder im vorherigen Formular gibst Du dem User die Möglichkeit, dass er ein Bild bearbeiten kann und leitest ihn auf diese Seite weiter -> dort sieht er nur das eine Bild und du brauchst auch nur die Infos für das eine Bild auslesen und hast nur ein Formular mit einem Submit Button.

                      mfg Wolf29

                      Kommentar


                      • #12
                        PHP-Code:
                        $BildID $row['BildID']; 
                        kenne deinen restcode nicht, aber sieht alles sehr verwirrend aus oO

                        behaupte jetzt mal ins blaue getippt:

                        PHP-Code:
                        $BildID $_POST['BildID']; 
                        oder
                        PHP-Code:
                        $BildID $_GET['id']; 
                        oder list du in der admin funktion oben noch irgendwas aus der DB das du ein $row["BildID"] bekommst ???

                        Kommentar


                        • #13
                          OKAY Hat sich erledigt
                          hab den Fehler schon gefunden.
                          Jetzt wird das Bild ganz brav geupdatet YEAH *freu* endlich klappts XD
                          Danke für die Tipps *verbeug*

                          Kommentar


                          • #14
                            OKAY Hat sich erledigt
                            hab den Fehler schon gefunden.
                            Jetzt wird das Bild ganz brav geupdatet YEAH *freu* endlich klappts XD
                            Danke für die Tipps *verbeug*
                            ...aber vergiss nicht, dass Du auch alles noch validierst, sonst kann jeder hochladen "was er will" - zu deiner eigenen Sicherheit

                            mfg Wolf29

                            Kommentar

                            Lädt...
                            X