Autor Zpráva
protom1
Profil
Ahoj vsichni.
Opět si nevím rady, jak mám něco udělat. ==>
Mám formulár :
<form action="pridat.php" method="POST">
            <select name="kategorie">
              <?php
                foreach ($kategorie as $item) {
                  $str = ($counter == 0) ? "<option selected>" : "<option>";
                  $str .= $item['nazev'] . "</option>";
                  $counter++;
                  echo $str;
                }
                ?>
              </select>
                <br>
            <input type="text" name="nadpis" value="nadpis" id="input">
            <input type="text" name="datum" value="datum" id="input1">
              <br>
            <input type="text" name="popis">
              <br>
            <textarea name="obsah"></textarea>
              <br>
            <input type="file" name="obrazek1">
<input type="submit">
</form>

spracovávající skript :
<?php
               
                       if (isset($_POST['kategorie']) && isset($_POST['datum']) && isset($_POST['nadpis']) && isset($_POST['datum']) && isset($_POST['obrazek1']) && isset($_POST['popis']) && isset($_POST['obsah'])) {

                           $kategorie = $_POST['kategorie'];
                           $nadpis = $_POST['nadpis'];
                           $popis = $_POST['popis'];
                           $obsah = $_POST['obsah'];
                           $datum = $_POST['datum'];
                           $obrazek1 = $_POST['obrazek1'];
                           /*$obrazek2 = $_POST['obrazek2'];
                           $obrazek3 = $_POST['obrazek3'];
                           $obrazek4 = $_POST['obrazek4'];
                           $obrazek5 = $_POST['obrazek5'];*/
                            // navratova_hodnota = pridej.......
                               $ret = pridejClanek($kategorie, $obsah, $datum, $nadpis, $popis);
                      if ($ret == false) {
                        echo mysql_error(). "<br>";
                      }
                     else {
                        $clanekId = $ret;
                        $ret = pridejAlbum($popis, $nadpis, $datum, $clanekId);

                        if ($ret == false) {
                          echo mysql_error() . "<br>";
                        }
                        else {
                          $ret =  pridejObrazek($obrazek1, $datum, $ret, $popis, $nadpis);
                          if ($ret == false) {
                            echo mysql_error() . "<br>";
                          }
                          else {
                            
                            echo "vsechno hotovo";
                          }
                        }
                      }

                       }
                       else {
                           echo "F*U*C*K UZ !!!";
                       }


              ?>

a funkce :
function pridejClanek($kategorie, $obsah, $datum, $nadpis, $popis) {

        $kategorieId = vratIdDleKategorie($kategorie);
        if ($kategorieId == -1) return false;        

        $query = "INSERT INTO clanky(kategorieId, popis, nadpis, obsah, datum) VALUES(";
        $query .=  $kategorieId . ", '" . $popis . "', '" . $nadpis . "', '" . $obsah . "', '" . $datum . "')";
        $result = mysql_query($query);

        if (! $result) return false;
        return mysql_insert_id();
}

    function vratIdDleKategorie($kategorie) {
        
        $query = "SELECT * FROM kategorie WHERE nazev='" . $kategorie . "'";
        $result = mysql_query($query);

        if (mysql_num_rows($result) != 1) {
            return -1;
        }

        return mysql_fetch_array($result)['id'];
}

    function pridejAlbum($popis, $nadpis, $datum, $clanekId) {

        $query = "INSERT INTO alba(popis, nadpis, datum) VALUES('";
        $query .= $popis . "', '" . $nadpis . "', '" . $datum . "')";
        $result = mysql_query($query);

        if (! $result) return false;

        $albumId = mysql_insert_id();

        $query = "INSERT INTO albaclanky(clanekId, albumId) VALUES(";
        $query .= $clanekId . ", " . $albumId . ")";
        $result = mysql_query($query);
        
        if (! $result) return false;

        return $albumId;

    }


    function pridejObrazek($obrazek1, $datum, $albumId, $popis, $nadpis) {
    /*$path = "../fotky/";
    $path .= parseDate($datum);*/


    
    $query = "INSERT INTO obrazky(albumId, popis, nadpis, datum) VALUES(";
    $query .= $albumId . ", '" . $popis ."', '" . $nadpis ."', '" . $datum . "')";

    $result = mysql_query($query);
    if (! $result)
        return false;

    $obrazekId = mysql_insert_id();

    $cesta = "/.../";
    
    
    $img = imagecreatefromjpeg($obrazek1);

    
    $cestakobrazkum = "../fotky/";

    Imagejpeg($img, $cestakobrazkum . $obrazekId . ".jpg", 80);

    //return true;
    return $obrazekId;
}

první 2 funkce insert into funguji, ale pak funkce pridej obrazek selže, protože není plná cesta k obrázku.
Dokázal by mi někdo poradit co musím udělat, aby se mi obrazek pridal do slozky, do ktere potrebuji ?
Jako když nápišu celou cestu do createimagefromjpg(/../neco/neco.jpg), tak to šlape, ale to je blbé, protože když potřebuju přidat obrázek z kompu, tak to těžko půjde tahkle ..
Díky za koaždou odpověd
Protom1
Manny
Profil
Nahrávaný soubor není v $_POST ale v $_FILES
okolojsoucí
Profil
protom1:
isset($_POST['kategorie']) && isset($_POST['datum']) && isset($_POST['nadpis']) && isset($_POST['datum']) && isset($_POST['obrazek1']) && isset($_POST['popis']) && isset($_POST['obsah']))

Pokud chceš ověřit všechny odeslané proměnné, projeď to cyklem, tak to se zbytečně ztrácíš

  $nejakaChyba = false;
  foreach($_POST as $jmeno => $hodnota){
    if(!isset($hodnota)){
      $nejakaChyba = true;
      break;
    }
  }
  
  if($nejakaChyba == true){
    exit('Něco není vyplněné');
  }

Jinak zpět k tvému dotazu:
I když zašleš obrázek pomocí POSTu nemůžeš sním takto nakládat. Musíš využít superglobální funkci FILE. K jeho cestě se dostaneš $obrazek1 = $_FILES["obrazek1"]["tmp_name"];. Nezapomínej na to že avšak je to tmp neboli dočastná cesta, tak že pomoc copy si jej musíš zkopírovat do nějaké složky. A pokud zasíláš soubory přes form, tak bys měl mít další atribut enctype="multipart/form-data" tzn. že by to mělo vypadat <form method="post" action="pridat.php" enctype="multipart/form-data">

A na konec, mysql_* již končí, je možné že v další verzi již nebude fungovat. Abych se nemusel opakovat, tak uvedu svůj dřívější příspěvek.

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: