Autor Zpráva
xciza
Profil
Ahoj, na webu v administraci jsem udělal upload obrázků na server. Vše funguje v pohodě. Ale potřeboval bych, aby se cesta uloženého obrázku sama vložila do databáze, a potom jsem si mohl ten obrázek z těchto informací zobrazit. Zkoušel jsem google, ale nevím pod jakými klíčovými slovy mám toto hledat. Proto bych chtěl poprosit o pomoc s tímto problémem ;)
okolojdouci
Profil *
Takže neřešíš upload, ale přidání informace do databáze.

INSERT INTO tbl_name (col1,col2) VALUES(val1,val2)


Cestu k právě nahranému souboru znáš, musíš ji přece zadávat při samotném uploadu.
xciza
Profil
Jo tak cestu znám jako admin (i název obrázku), ale když na web nahraje obrázek jiný uživatel tak jeho název obrázku znát nebudu-tudíž ho z databáze nevypíšu...
Jozin
Profil
Počkat při uploadu obrázku musíš znát jeho jméno a taky máš jasně definováno kam se uloží v adresářové struktuře, tak prostě tyto informace předáš dotazem jak psal okoljdouci databázi.
okolojdouci
Profil *
Tím "znáš" jsem myslel, že to "zná" ten skript, kterým soubor nahráváš. Předpokládám, že používáš toto: http://cz2.php.net/manual/en/function.move-uploaded-file.php a tam prostě cestu (a název souboru) při nahrání musíš uvést.
xciza
Profil
mám tento skript:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 100000000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 200000000) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
Ben
Profil *
Tu máš jiné řešení:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../default.css">
<title>
Vložit fotku do galerie
</title>
</head>
<body>

<?php

//pripojeni k mysql
require_once("../config.php");

//odstraneni diakritiky(upravena funkce od php.vrana.cz)
function odstran_diakritiku($in){
$in = preg_replace('~[^\\pL0-9_]+~u', '-', $in);
$in = trim($in, "-");
$in = iconv("utf-8", "us-ascii//TRANSLIT", $in);
$in = strtolower($in);
$out = preg_replace('~[^-a-z0-9_]+~', '', $in);
return $out;
}

//nastaveni promenych
$popis = odstran_diakritiku($_POST["popis"]);
//$popis = trim($_POST["popis"]);
//$popis = preg_replace('~\s~','',$popis);
$popis = mysql_real_escape_string($popis);
$popis_s_mezerami = trim($_POST["popis"]);
$popis_s_mezerami = mysql_real_escape_string($popis_s_mezerami);
$rok = mysql_real_escape_string($_POST["rok"]);
$fotka = trim($_FILES["image"]["name"]);
$fotka = preg_replace('~\s~','',$fotka);
$soubor = $rok."-".$popis."-".date("Y-m-d_H-i-s")."-".$fotka;
$sql = 'INSERT INTO foto (
`id`, `soubor`, `rok`, `popis`)
VALUES (
NULL, \''.$soubor.'\', \''.$rok.'\', \''.$popis_s_mezerami.'\');
';

/** Vrácení rozměrů obrázku po zmenšení
* @param string název zmenšovaného souboru
* @param int maximální šířka výsledného obrázku, 0 pokud na ní nezáleží
* @param int maximální výška výsledného obrázku, 0 pokud na ní nezáleží
* @return array ($width, $height) výsledná šířka a výška
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
function image_shrink_size($file_in, $max_x = 0, $max_y = 0) {
list($width, $height) = getimagesize($file_in);
if (!$width || !$height) {
return array(0, 0);
}
if ($max_x && $width > $max_x) {
$height = round($height * $max_x / $width);
$width = $max_x;
}
if ($max_y && $height > $max_y) {
$width = round($width * $max_y / $height);
$height = $max_y;
}
return array($width, $height);
}

/** Převzorkování obrázku GIF, PNG nebo JPG
* @param string název zmenšovaného souboru
* @param string název výsledného souboru
* @param int šířka výsledného obrázku
* @param int výška výsledného obrázku
* @return bool true, false v případě chyby
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
function image_resize($file_in, $file_out, $width, $height) {
$imagesize = getimagesize($file_in);
if ((!$width && !$height) || !$imagesize[0] || !$imagesize[1]) {
return false;
}
if ($imagesize[0] == $width && $imagesize[1] == $height) {
return copy($file_in, $file_out);
}
switch ($imagesize[2]) {
case 1: $img = imagecreatefromgif($file_in); break;
case 2: $img = imagecreatefromjpeg($file_in); break;
case 3: $img = imagecreatefrompng($file_in); break;
default: return false;
}
if (!$img) {
return false;
}
$img2 = imagecreatetruecolor($width, $height);
imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);
if ($imagesize[2] == 2) {
return imagejpeg($img2, $file_out);
} elseif ($imagesize[2] == 1 && function_exists("imagegif")) {
imagetruecolortopalette($img2, false, 256);
return imagegif($img2, $file_out);
} else {
return imagepng($img2, $file_out);
}
}

//zpracovani po odeslani
if($_POST["ok"]){
//overovani, zda jsou vyplnena vsechna povinna pole
if($_POST["rok"] && $_POST["popis"] && $_FILES["image"]){
//vytvoreni a ulozeni nahledu nahraneho obrazku
//vytvoreni nahledu o maximalni veliskosti (sirka=120, vyska=80)
list($width, $height) = image_shrink_size($_FILES["image"]["tmp_name"], 120, 80);
if ($width && $height){
//adresar kde se ulozi nahled obrazku, pojmenovany stejne jako original, jen na bude zacina thumb_...
$filename = "../img/uploaded/foto/thumb_".$soubor;
image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
}
//nahrani obrazku
if($_FILES["image"]["size"] > 0){
//povolene koncovky
$koncovky = array('jpg', 'jpeg', 'png', 'gif');
$chyba = "";
if (!$_FILES || $_FILES["image"]["error"] == UPLOAD_ERR_INI_SIZE) {
$chyba = "<p class=\"error\">Soubor je příliš velký, maximální velikost je " . ini_get('upload_max_filesize') . ".</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif ($_FILES["image"]["error"] == UPLOAD_ERR_NO_FILE) {
$chyba = "<p class=\"error\">Nevybrali jste soubor, který chcete nahrát.</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif ($_FILES["image"]["error"]) {
$chyba = "<p class=\"error\">Soubor se nepodařilo nahrát!</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif (!in_array(strtolower(pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION)), $koncovky)) {
$chyba = "<p class=\"error\">Koncovka souboru musí být jedna z: " . implode(", ", $koncovky) . ".</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif (!($imagesize = getimagesize($_FILES["image"]["tmp_name"])) || $imagesize[2] > 3) {
$chyba = "<p class=\"error\">Typ obrázku musí být JPG, JPEG, PNG nebo GIF.</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
else {
//vytvoreni velkeho obrazku o maximalnich rozmerech(sirka=900, vyska=692)
list($width, $height) = image_shrink_size($_FILES["image"]["tmp_name"], 900, 692);
if ($width && $height){
//cesta kam se to ma ulozit(slozka musi mit nastaven chmod=0777)
$filename = "../img/uploaded/foto/".$soubor;
image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
}
//move_uploaded_file($_FILES["image"]["tmp_name"], "../img/uploaded/foto/$soubor");
}
}

//ulozit data do MySQL
if(mysql_query($sql)){
echo"<p>Data byla úspěšně uložena!</p><br><br>";
echo"<p><a href=\"insert_to_photos.php\">Nahrát další obrázek</a></p>";
echo"<p><a href=\"../admin/\">Do administrační sekce</a></p>";
$send = true;
}
else{
echo "<p class=\"error\"><strong>Uložení dat do databáze selhalo!</strong>Zkus to znovu.</p>";
echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
}
else{
echo "<p class=\"error\"><strong>Nejsou vyplněna všechna povinná pole!</strong></p>";
echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
}
//zobrazeni formulare
else{
?>
<p align="left">Vyplneni vsech poli je povinne.</p><br><br>
<form nam
Ben
Profil *
e="vlozit"  action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data">
<table>
 <tr>
  <td>Rok:</td>
  <td colspan="2">
   <select name="rok">
    <option value="">Vyber rok...*</option>
    <?php  
    //vytvori rolovatko s roky od roku 1994 do soucasneho
    for($rok = 1994; $rok <= date("Y"); $rok++){
      echo"<option value=\"$rok\""; if(!isset($send)){echo $_POST["rok"]==$rok ? "selected" : "";} echo">$rok</option>";
    }
    ?>
   </select> 
  </td>
 </tr>

 <tr>
  <td>Obrázek:</td>
  <td><input type="file" name="image" accept="image"></td>
  <td><i>klikni a vyber *.jpg, *,jpeg, *.png nebo *.gif soubor</i></td>
 </tr>
 
  <tr>
  <td>Popis:</td>
  <td><textarea name="popis" cols="40" rows="3" maxlength="999"><?php if(!isset($send)){echo $_POST["popis"];}?></textarea></td>
  <td><i>tento text bude zobrazen jako titulek a zaroven jako popisek k fotce</i></td>
 </tr> 
   
 <tr>
  <td><input type="submit" name="ok" value="Uložit"></td>
 </tr>
</table>  
</form>
<br>
<p><a href="../admin/">Zpět do administrační sekce</a> </p>
<?php
}
?>

</body>
</html> 
xciza
Profil
abych pravdu řekl, tak jsem se v tom tvým kódu úplně ztratil:) . Zkusil jsem něco sám ale moc mi to nejde. Mám toto:
formulář:
<form action="upload.php" method="post" enctype="multipart/form-data">
                      <label for="file">Soubor:</label>
                        <input type="file" name="file" id="file" /> <br />
                      <label for="popis">Popis:</label>
                        <textarea cols="20" rows="5" name="popis" id="popis"></textarea>

                      
                      <br />
                      <input type="submit" name="submit" value="Submit" />
                      </form>


PHP skript:
<?php
include "sprava.php" ;


if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 100000000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 200000000) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
      
       if($_POST["file"] && $_POST["popis"]){
            $upload = mysql_query("INSERT INTO obrazek (ID, url, popis) VALUES ('NULL', '$file', '$popis')", $dbc)or die("Chyba v dotaze: " . mysql_error());
            }
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>


píše to: Undefined index: file in C:\Program Files\EasyPHP\www\!! Marilyn !!\upload.php on line 30. Nevím proč se mu to nelíbí...
okolojdouci
Profil *
xciza:
Nechce se mně zkoumat ty kilometry kódu, co jste sem napsali, ale jestli ř. 30 je
if($_POST["file"] && $_POST["popis"]){

tak bych z toho udělal
if(isset($_POST["file"]) && isset($_POST["popis"])){


A nepoužívej na webu názvy složek "!! Marilyn !!", probůh. Snaž se vystačit s malými písmeny, bez mezer, bez diakritiky a vykřičníků.
xciza
Profil
tak jsem to zkusil změnit a teď se tomu nelíbí Undefined index: file in C:\Program Files\EasyPHP\www\!! Marilyn !!\upload.php on line 5,6,7 a dalších, kde je
$_FILES["file"]

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0