Autor Zpráva
seky728
Profil
Ahojte, prosim vás potřeboval bych pomoct.
Dělám stránku v které se pomocí javascriptu přidají políčka pro fotky (file) do formuláře a ty se snažím přes php uložit jak jejich přístupovou adresu tak i je samotné, ty fotky ukládám do složky. Javasript vypisuje do hidden políčka kolik je na stránce obrázků, to si potom bere PHP přes $_POST a pomocí for cyklu ukládám obrázky. javascript tvoří ty políčka file ... name="obr(počet_obrazku 1,2,3...)", a php pomoci for $i<=pocetObrazku dělá to co má .. pokud mám obrázek jen jeden problém není!!! ´Pokud více, vypisuje -> Undefined index: obr2
Nevím jestli není problém v javascriptu když načtu po odeslání formuláře stránku ty políčka zmizí. Přidal bych i kód ale je velmi obsáhlý..
předem děkuji za odpověď, kdyžtak se to pokusím upřesnit :) díky
Martin Heralecký
Profil
seky728:
Zkus místo složitého, javascriptem řešeného, pojmenovávání stylu name="obr1", name="obr2" použít spíše name="obr[]" (pro všechny inputy stejný name atribut).

V PHP potom budou tyto proměnné:
$_FILES['obr']['name'][0]
$_FILES['obr']['name'][1]
$_FILES['obr']['name'][2]
$_FILES['obr']['tmp_name'][0]
$_FILES['obr']['tmp_name'][1]
$_FILES['obr']['tmp_name'][2]
...

A cyklem to projedeš takto:
for ($i = 0; $i < count($_FILES['obr']['name']); $i++)
{
    // $_FILES['obr']['name'][$i]
    // $_FILES['obr']['tmp_name'][$i]
    // $_FILES['obr']['size'][$i]
}
seky728
Profil
Martin Heralecký:
Dobre, dekuji za radu, jen se chci zeptat... Tim name="obr[]" tvoříš teda pole a pak to v tom PHP vybiras tím [$i] na konci?
A ještě jednou moc děkuji. Zítra to vyzkouším :)
Martin Heralecký
Profil
seky728:
Ano, přesně tak.
seky728
Profil
Martin Heralecký:
Děkuji ��
seky728
Profil
Martin Heralecký:
tak bohužel, stále se mi to nedaří, vypadá to jako by se ten for vůbec neprovedl, dotaz nad ním, který zapisuje do databáze se provede ale dál to nedojde... mám tam různé kontrolní echa jako např. Nahled vytvořen ... nic se nezobrazí.. Napadlo mě že je chyba v závorkách ale všechny jsou tam kde by měly být a jsou i uzavřený jak by měli být..
pokusím se přiložit zkrácenou verzi toho kodu :)

Javascript na přidání políčka file pro vložení obrázku:

    function pridej_obrazek() {

  var table = document.getElementById('tabulka');   
  var columns = 2;
  var newrow = table.insertRow(-1);
  var newcell1 = newrow.insertCell(-1);
          newcell1.innerHTML = '<input type="file" name="obr[]" accept="image/*">';             <----- vložení inputu
      
    var newcell2 = newrow.insertCell(-1);
          newcell2.innerHTML = '<label>Název obrázku:</label>';
  

        
        o++;

  }

    alert("přidáno políčko pro obrázek");
  show();
}

php kód:
     include 'server.php';
    $dotaz="blablabla'";
    $data=mysqli_query($spojeni,$dotaz);
    $zaznam=mysqli_fetch_array($data);
    
    
      if (isset($_POST["nazev"])) {                      <-------- isset
           if ($_POST["nazev"]=="") {
                 echo "Musíš zadat název";
        }else {
               
         $dotaz2="INSERT INTO `sport_treninky` (`nazev`, `popis`, `datum_pridani`, `verohodnost`, `id_uzivatel`, `id_sport`) VALUES ('{$_POST["nazev"]}', '{$_POST["popis"]}', CURRENT_TIME(), '0', '{$_SESSION["id"]}', '{$_GET["id_sport"]}');";
                if ($data2=mysqli_query($spojeni,$dotaz2)) {
            echo "dotaz2 proveden";                                                    <--------- poslední echo co to vypíše
            
                      
                
                
                 for ($i=1; $i < count($_FILES['obr']['name']); $i++ ) {        <------------ začátek foru
         
                 echo "Velikost iček=$i";    
               
        if ($_FILES["obr"]["type"][$i] == "image/jpeg"){    
                $src = imagecreatefromjpeg($_FILES["obr"]["tmp_name"][$i]);
                }  else {
                 $src = imagecreatefrompng($_FILES["obr"]["tmp_name"][$i]);
                }
                
                _____________________tvoření náhledu___________________
                echo $src;
                list($width, $height) = getimagesize($_FILES["obr"]["tmp_name"][$i]);  //zjištění rozměrů původního obrázku
                list($width_nahled, $height_nahled) = getimagesize($_FILES["obr"]["tmp_name"][$i]);
                
                                if ($height_nahled > 200) {
                    $imgheight_nahled = 200;
                    $imgwidth_nahled = round($width_nahled/$height_nahled*150);

                    $img_nahled = imagecreatetruecolor($imgwidth_nahled, $imgheight_nahled);

                    imagecopyresampled($img_nahled, $src, 0, 0, 0, 0, $imgwidth_nahled, $imgheight_nahled, $width_nahled, $height_nahled);
                } else {
                    $img_nahled = $src;
                }
                
                
                
                ________________tvoření velkého obrázku_____________
                
                  if ($height > 900) {
                    $imgheight = 900;
                    $imgwidth = round($width/$height*900);

                    $img = imagecreatetruecolor($imgwidth, $imgheight);

                    imagecopyresampled($img, $src, 0, 0, 0, 0, $imgwidth, $imgheight, $width, $height);
                } else {
                    $img = $src;
                }
                
               _____________________________________ukládání obrázků______________
                
        $text=uprava textu pro název obrazku ...        
  
   $adresa_nahled="foto/sport_treninky/nahledy/".$text."_nahled$i.jpg";
   $adresa="foto/sport_treninky/".$text."$i.jpg";
      
   
                 if ($_FILES["obr"]["type"][$i] == "image/jpeg"){          <----------- uložení náhledu
                     (imagejpeg($img_nahled,$adresa_nahled, 85)); 
                    echo "<p>Bylo uloženo jpg</p>";
                
                        }
                 else {
                    (imagepng($img_nahled,$adresa_nahled,85));
                    echo "<p>Bylo uloženo png</p>";
                }
                 
    
    
     if ($_FILES["obr"]["type"][$i] == "image/jpeg"){              <----------- uložení velkého obrázku
                     (imagejpeg($img,$adresa, 85)); 
                    echo "<p>Bylo uloženo jpg</p>";
                
                        }
                 else {
                    (imagepng($img,$adresa,85));
                    echo "<p>Bylo uloženo png</p>";
                }
                
                
                __________dotaz na uložení adres do databáze__________
                
                $dotaz3="insert into sport_treninky_obrazky (adresa, id_sport_treninky) values ('$adresa','{$_GET["id_sport"]}')"; 
                if (mysqli_query($spojeni,$dotaz3)) {
                         echo "Dotaz č.3 proveden.";
                }       else {
                            echo "Dotaz č.3 Neproveden.";
                        }
                
              }  
                
       
       }      else {
               echo "dotaz 2 neproveden";
           }
          
         }
      }
Snad mi s tím někdo pomůžete... předem děkuji za snahu :)
Martin Heralecký
Profil
seky728:
Neprocházel jsem celý kód, ale určitě je chyba ta, že počáteční hodnotu iterátoru $i je 1. Mělo by to být 0. V PHP (a ve všech ostatních programovacích a scriptovacích jazycích) většinou všechno vždy začíná 0, nikoli 1.
seky728
Profil
Martin Heralecký:
Dobre, zjusim ti i tak :)
seky728
Profil
Tak jo už to funguje... chyba byla v javascriptu, přidával políčka file mimo form a ty se pak neodesílali.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: