Autor Zpráva
krteczek
Profil
Dobrý večer (noc),
mám php skript kterým chci nahrávat na web obrázky, informace o obrázcích ukládám do databáze, problém je v tom, že skript funguje jen náhodně, u prvního obrázku nikdy, a nějak nevidím kde by mohla být chyby, už jsem si vypisoval i dotazy na databázi (musí proběhnout dva, první v momentě, kdy se nahraje obrázek na web, a ověří se že je to povolený formát, ulží do databáze původní jméno a alt, a druhý po přenesení obrázku z tempu do konečného adresáře a vytvoření náhledu, opraví název původní na číslo podle id, a koncovky podle typu souboru.)

Problém je v tom, že skript proběhne v pořádku, soubor se nahraje a udělá náhled, ale nevytvoří se záznam v databázi, a přesto je skkript přesměrován na zobrazovací stránku s nahlášením úspěchu.

nějak si stím už nevím rady... :-/


function nahrej_obrazky()
{
//nulování proměnných
$zprava="";
$alter="";
$nazev_souboru="";
$s['clanek']="";
$s['nazev']='Nahrej obrázky na server';
if(isset($_POST['odesli']))
{
if(!empty($_POST['alt']))
{
$alter=$_POST['alt'];
}
else
{
$zprava.='<p class="varovani">Lituji, nevyplnili jste popis obrázku (<strong>ALT</strong>ernativní text), napravte to prosím.</p>';
}
if(!empty($_FILES['fupload']['name']))
{
$nazev_souboru=$_FILES['fupload']['name'] ;
}
else
{
$zprava.='<p class="varovani">Je mi líto, došlo k chybě, při přejímání jména souboru. Soubor nebyl nahrán. Pokuste se o to znovu.</p>';
}
if(($_FILES['fupload']['error']==0) or (($_FILES['fupload']['size'])>=300000))
{
//pokud je typ souboru správný pokračujeme v převodu
if (($_FILES['fupload']['type'] == "image/jpeg") or ($_FILES['fupload']['type'] == "image/png") or ($_FILES['fupload']['type'] == "image/gif"))
{
//vše je v pořádku nahráno a předáno a bez chyb a je to povolený typ souboru
//vypíšeme co a jak a kde je uloženo
//pokus o zápis do databáze
$dotaz="insert into ".Tabulka_obrazky." ( alt, nazev) values ('{$alter}','{$nazev_souboru}')";
if($v=mysql_query($dotaz,pripoj()))
{
//získáme číslo řádku se zápisem, které použijeme jako název souboru ( před koncovkou )
$posledni_id=mysql_insert_id();
//předáme proměnné jako je název souboru ( v tempu ) a část cesty
$nazev_souboru = $_FILES['fupload']['tmp_name'];
$nazev_obrazku="";
//podle typu souboru určíme jeho jméno
if($_FILES['fupload']['type']=="image/jpeg")
{
$nazev_obrazku=$posledni_id.'.jpg';
}
if($_FILES['fupload']['type']=="image/png")
{
$nazev_obrazku.=$posledni_id.'.png';
}
if($_FILES['fupload']['type']=="image/gif")
{
$nazev_obrazku.=$posledni_id.'.gif';
}
$cil = "./obrazky/obr-v-db/".$_FILES['fupload']['name'];
//přesuneme soubor z dočasného adresáře do konečného
if(move_uploaded_file($nazev_souboru, $cil))
{
if(rename($cil, "./obrazky/obr-v-db/".$nazev_obrazku))
{
//echo 'Obrázek byl nahrán na server, jeho název je: '.$nazev_obrazku ;

if(vytvornahled($nazev_obrazku,$posledni_id))
{

//$nahled=$posledni_id."_".$nazev_obrazku;
$dotaz="update ".Tabulka_obrazky." set nazev='".$nazev_obrazku."' where id=".$posledni_id." ";

if(mysql_query($dotaz,pripoj()))
{
if(mysql_affected_rows()==1)
{
header("location: index.php?admin=nahrej-obrazky-ukaz&nazev=".$posledni_id);
}
}
else
{
$s=chyba_db();
}
}
else
{
$zprava.='<p class="varovani">Je mi líto, nepodařilo se vytvořit náhled obrázku.</p>';
}
}
else
{
$zprava.='<p class="varovani">Je mi líto, nepodařilo se přejmenovat obrázek po jeho nahrání na server.</p>';
}
}
else
{
$zprava.='<p class="varovani">Je mi líto, nepodařilo se přesunout obrázek z dočasného adresáře serveru.</p>';
}
$dotaz="delete from ".Tabulka_obrazky." where id='".$posledni_id."' limit 1";
if(mysql_query($dotaz,pripoj()))
{
$zprava.='<p class="varovani">Všechny informace o obrázku, který se nepovedlo přenést na server, byly z databáze úspěšně odstraněny.</p>';
}
}
else
{
$s=chyba_db();
}
}
else
{
$zprava.='<p class="varovani">Pokoušíte se nahrát nepovolený typ souboru. Můžete nahrávat jen obrázky GIF, JPG, PNG, jiné nejsou povolené.</p>';
}
}
else
{
$zprava.='<p class="varovani">Je mi líto, ale soubor k nahrání je příliš velký, nebo došlo k chybě při přenosu. Soubor nebyl nahrán.</p>';
}
}
$s['clanek'].="\n";
$s['clanek'].='<p>Pomocí formuláře na této stránce můžete nahrávat na server obrázky. Maximální datová velikost obrázku je 300kB. Větší obrázky se vám nahrát nepodaří.</p>'."\n";
if(!empty($zprava))
{
$s['clanek'].=$zprava;
}
$s['clanek'].="\n";
$s['clanek'].='<form enctype="multipart/form-data" action="index.php?admin=nahrej-obrazky" method="post">'."\n";
$s['clanek'].=' <p>'."\n";
$s['clanek'].=' <label for="alt">Text, jenž popisuje co je na obrázku ( maximálně 100 znaků včetne mezer ): </label><br><input type="text" name="alt" size="30" maxlength="100" value="';if(!empty($_POST['alt'])){$s['clanek'].=$_POST['alt'];}$s['cl anek'].='"><br>'."\n";
$s['clanek'].=' <label for="fupload">Kliknutím na tlačítko se vám zobrazí okno s možností výběru obrázku který chcete nahrát na stránky: </label><input type="hidden" name="MAX_FILE_SIZE" value="300000"><input type="file" name="fupload" style="width: 400px;"><br>'."\n";
$s['clanek'].=' <input type="submit" name="odesli" value="Odeslat soubor">'."\n";
$s['clanek'].=' </p>'."\n";
$s['clanek'].='</form>'."\n";
$s['clanek'].='<p class="kom"><a href="index.php?admin=nahrej-obrazky">Nahrej obrázky na server</a> | <a href="index.php?admin=ukaz-obrazky">Ukázat obrázky</a> | <a href="index.php?admin=zmen-alt-u-obrazku">změna alt. textu</a></p>'."\n";
return $s;
}


díky za případnou pomoc
krteczek
krteczek
Profil
Tak jsem na to přišel :-)
celý skript je v pořádku, jediná věc, na kterou jsem zapoměl byla ta, že hned po použití funkce
header("location: index.php?admin=nahrej-obrazky-ukaz&nazev=".$posledni_id);

se musí dát exit;, jinak totiž sice dojde k přesměrování, ale původní script, pracuje dál, a já na konci mám odstranění posledniho přidaného řádku v databázi...
Takže došlo k přesměrování, a zároveň ke smazání posledního řádku.
Ale trvalo mi to :-(
krteczek
24k_po_parbe
Profil *
me by hrozne zajimalo kdo by takovejhle skript lustil ...
paja a jaja
Profil *
krteczek
3 dny neni špatná doba... :) doufám, že jsi mezi tím spal :-)))
krteczek
Profil
paja a jaja: no upřímně:-) já to nechal uležet a potom jsem nad tim (ten den kdy sem na tokoukal) strávil cca hodinu a půl než ni došlo proč a jak se to chová, ale myslel jsem, že sežeru klávesnici......
Toto téma je uzamčeno. Odpověď nelze zaslat.

0