Autor Zpráva
Felix
Profil *
Ahoj mohu se zeptat jak ulozim uploudovany soubor do databaze mysql?
tady mam script ten mi funguje, soubor se nahraje tam kam ma ale do databaze se nic neulozi:

<?php
include ('config.php');
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); 
mysql_select_db(SQL_DBNAME); 
mysql_query("set names 'cp1250'");
$last_id=mysql_insert_id(); 
$uploaddir = 'download/'; // Relative path under webroot
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
  echo "File is valid, and was successfully uploaded.\n";
}
else {
  echo "File uploading failed.\n";
}
/*získání jména souboru*/
  $name = $_FILES['file']['name'];
  $vysledek_down = "INSERT INTO download (iddown, popissouboru, downloadsoubor) values (".$last_id.",'".$_POST["popissouboru"]."','".$name."')"; 
  $path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/download.php'; 
Header("Location:".$path);
davef6
Profil
nemělo by tam být mysql_query("INSERT INTO download (iddown, popissouboru, downloadsoubor) values (".$last_id.",'".$_POST["popissouboru"]."','".$name."')");
Felix
Profil *
Jo tak to je presne ono diky...
frantisek
Profil *
Ahoj znovu bych poprosil o radu. Mam script na upload souboru, ktery mi na localhostu funguje ale na ostrem servru mi to hlasi tyto chyby:

Warning: move_uploaded_file(../download/Vesele_Vanoce.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /www/doc/www.optexcz.eu/www/admin/odesli_download.php on line 9
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/www/tmp/phpuJRDLT' to '../download/Vesele_Vanoce.jpg' in /www/doc/www.optexcz.eu/www/admin/odesli_download.php on line 9
File uploading failed.
Warning: Cannot modify header information - headers already sent by (output started at /www/doc/www.optexcz.eu/www/admin/odesli_download.php:9) in /www/doc/www.optexcz.eu/www/admin/odesli_download.php on line 22

Script:
<?php
include ('config.php');
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); 
mysql_select_db(SQL_DBNAME); 
mysql_query("set names 'cp1250'");
$last_id=mysql_insert_id(); 
$uploaddir = '../download/'; // Relative path under webroot
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
  echo "File is valid, and was successfully uploaded.\n";
}
else {
  echo "File uploading failed.\n";
}
/*získání jména souboru*/
  $name = $_FILES['file']['name'];
  $vysledek_down=mysql_query("INSERT INTO download (iddown, popissouboru, downloadsoubor) values (".$last_id.",'".$_POST["popissouboru"]."','".$name."')");
  $path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/download.php'; 
Header("Location:".$path); 
?>   


Nevite kde a co mam na sevru nebo jinde nastavit, adresar download tam mam vytvoreny ale jestli se ma nejak nastavovat tak to nevim jak..
frantisek
Profil *
Adresar download mam nastaven na 777
frantisek
Profil *
Tak po nastaveni adresare mi to sice napise ze soubor byl nahran ale vyskoci mi tato chyba, ale stejne se mi zadny soubor nikam neulozi

File is valid, and was successfully uploaded.
Warning: Cannot modify header information - headers already sent by (output started at /www/doc/www.optexcz.eu/www/admin/odesli_download.php:10) in /www/doc/www.optexcz.eu/www/admin/odesli_download.php on line 22
frantisek
Profil *
Tak uz to snad funguje akorat se to nenahralo hned ale nevim jak udelat aby se mi to po nacteni vratilo samo na stranku na kterou chci a aby se ta stranka zaktualizovala a byli tam zmeny hned videt..
Staci nejaky prikaz na refresh?
Alphard
Profil
header funguje, ale nesmí před ním být výstup, vyhoďte echo
frantisek
Profil *
A kam bych tedy mel echo, predpokladam to s tim co hlasi zda se soubor povedl nahrat ci nikoliv dat, aby uzivtal videl zda se upload povedl?
frantisek
Profil *
A jeste bych se rad zeptal ohledne toho nacteni stranky,
kdyz mazu data z tabulky pomoci:
<?php

include "config.php"; // zde je include souboru s konstantami 
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); 
mysql_select_db(SQL_DBNAME); 
mysql_query("set names 'cp1250'");
$iddown=$_GET["iddown"];
$vysledek_down=mysql_query("delete from download where iddown = $iddown");
$smazat_aktuality = Mysql_Query("DELETE FROM download");
$path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/download.php'; 
Header("Location:".$path); 
exit; 

?>

Tak se mi sice vse vymaze ale ja to vidim az po nacteni stranky pomoci tlacitka v prohlizeci, lze to udelat aby se to samo nacetlo a ja nemusel nikam klikat?
Alphard
Profil
na stránku, na kterou ho přesměrujete, nebo ho můžete přesměrovat na nějaký seznam souborů, uživatelé se stejně radši sami ujistí, že je vše OK

kombinace echo a header nejde dohromady, třeba byste mohl vypsat "Vše OK, <a href=xxx>Pokračujte zde</a>", ale zase hrozí, že uživatel aktualizuje stránku a soubor se nahraje podruhé

$path by měla obsahovat adresu, kam chcete přesměrovat
frantisek
Profil *
Ok ta to tedy udelam takhle a s tim vymazanim a aktualizovanim by ste mi mohl poradit?
Alphard
Profil
a s tim vymazanim a aktualizovanim by ste mi mohl poradit?
to je pořád ten samý problém, přesměrujte na stránku, kterou potřebujete, já ji neznám
frantisek
Profil *
Ja to mazu s te jedne a te same stranky a na tu i presmerovavam, ale vymaze se to az po stisknuti talcitka v prohlizeci
Timto mazu: smazat_download.php
<?php

include "config.php"; // zde je include souboru s konstantami 
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); 
mysql_select_db(SQL_DBNAME); 
mysql_query("set names 'cp1250'");
$iddown=$_GET["iddown"];
$vysledek_down=mysql_query("delete from download where iddown = $iddown");
$smazat_aktuality = Mysql_Query("DELETE FROM download");
$path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/download.php'; 
Header("Location:".$path); 
exit; 

?>

A toto mam na strance doanload.php:
<a href="smazat_download.php?smazat=yes" onclick="return (confirm('Potvzením vymažete veškeré soubory v downloadu!')) ? true : false;">Vymaž všeschny soubory</a>
Alphard
Profil
asi jsem vás špatně pochopil, vy chcete, aby se to smazalo bez kliku na odkaz, např. v zadaný čas?
frantisek
Profil *
Ne. Mam na strance download.php klik vymazat udaje z databaze:
<a href="smazat_download.php?smazat=yes" onclick="return (confirm('Potvzením vymažete veškeré soubory v downloadu!')) ? true : false;">Vymaž všeschny soubory</a>

Na ten kdyz kliknu tak me to po odsouhlaseni presmeruje na stranku smazat_download.php :
<?php

include "config.php"; // zde je include souboru s konstantami 
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD); 
mysql_select_db(SQL_DBNAME); 
mysql_query("set names 'cp1250'");
$iddown=$_GET["iddown"];
$vysledek_down=mysql_query("delete from download where iddown = $iddown");
$smazat_aktuality = Mysql_Query("DELETE FROM download");
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'download.php';
header("Location: http://$host$uri/$extra");
exit; 

?>

Kde se udaje vymazou a zpatky se to vrati na stranku download.php, ale udaje tam zustanou a az kdyz stranku aktualizuju pomoci prohlizece tak vse vymizi a ja bych to chtel automaticky aby bylo hned videt ze se to vymazalo.
Alphard
Profil
problém je asi s cache, zkuste to takhle:
header ("location: http://".$_SERVER['SERVER_NAME']."/download.php", TRUE, 303);

cestu si případně upravte, ale je to jen drobná modifikace, jestli to nepomůže, vložtě na začátek download.php tohle
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
frantisek
Profil *
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>


Pridanim tohoto kodu mi to funguje. a toto mohu pouzit vsude kde potrebuji aktualizovat stranku?
Alphard
Profil
Pridanim tohoto kodu mi to funguje. a toto mohu pouzit vsude kde potrebuji aktualizovat stranku?
v podstatě ano, ale jestli to bezdůvodně přeženete, může to zpomalovat, většinou to není potřeba
tv-live
Profil *
www.tv-live.wbs.cz tam je postup skus to

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: