Autor Zpráva
marek888
Profil
Dobrý den. Chtěl bych udělat kód, který mi nahraje obrázek na server a zapíše do databáze cestu. Tu je můj kód:
   <?php
// konfigurace
$uploadDir = './obrazky'; // adresar, kam se maji nahrat obrazky (bez lomitka na konci)
$allowedExt = array('jpg', 'jpeg', 'png', 'gif'); // pole s povolenymi priponami
 
// zpracovani uploadu
if(isset($_FILES['obrazky']) && is_array($_FILES['obrazky']['name'])) {
 
    $counter = 0;
    $allowedExt = array_flip($allowedExt);
    foreach($_FILES['obrazky']['name'] as $klic => $nazev) {
 
        $fileName = basename($nazev);
        $tmpName = $_FILES['obrazky']['tmp_name'][$klic];
 
        // kontrola souboru
        if(
            !is_uploaded_file($tmpName)
            || !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))])
        ) {
            // neplatny soubor nebo pripona
            continue;
        }
 
        // presun souboru
        if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) {
            ++$counter;
        }
            
    }
    if($counter > 0){
    echo "<img src='obrazky/$nazev'>";
    echo "<p>Bylo nahráno {$counter} z ".sizeof($_FILES['obrazky']['name'])." obrázků.</p>";
    $db_host = "localhost";
    $db_username = "root";
    $db_pass = "";
    $db_name = "adams";    
    mysql_connect($db_host, $db_username, $db_pass);
    mysql_select_db($db_name);
    $nazev = $_POST["url"];
    mysql_query("insert into obrazky (url) '".mysql_real_escape_string($nazev)."')");
    }else{
    echo "<p>Někde nastala chyba! Nic se nanahrálo!</p>";
    }
}
 
?>
Zde mi web píše nějakou chybu s $nazev = $_POST["url"];
Nevím si s tím moc rady, jinak nahrání a zobrazení obrázků funguje, jediné co nemohu rozjet, je zapisování do databáze.
Tu dám ještě kód formu:
<form method="post" enctype="multipart/form-data">
    <input type="file" name="obrazky[]" multiple="multiple" />
    <input type="submit" value="Nahrát" />
</form>
Předem děkuji za odpověď.
Hando
Profil
Ahoj.
Moc jsem to nestudoval, ale:
marek888:
mysql_query("insert into obrazky (url) '".mysql_real_escape_string($nazev)."')");

Funguje tento dotaz při samotném zápisu? Řekl bych, že ne, jelikož podoba dotazu by měla být takováto:
INSERT INTO obrazky (url) VALUES ('bla bla bla')
Fisir
Profil
Reaguji na marka888:
Na řádku 41 ti chybí VALUES + závorka. A ten kód není úplně nejlepší.
marek888
Profil
Hando:
Díky moc, já jsem blbej, já jsem to vytahoval z jiného kódu a vůbec mě nenapadlo, že to tam má být, už to funguje, takže díky
Hando
Profil
Stane se. :)
Doporučuji v těchto případech vypsat si dotaz pomocí echa a zkusit ho rovnou pomocí konzole v admineru či phpMyAdminu.
A asi přejít rovnou na mysqli, ať se neučíš zbytečně něco, co je zastaralé a má být z php odstraněno (byť to asi úplně brzo nehrozí).

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: