Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194

    MySql. Modifica di un'immagine in database.

    Salve a tutti, mi sto cimentando con MySql per creare un piccolo cms per la modifica dei contenuti di un sito. Per quanto riguarda i testi non ho problemi nell'inserimento in database, modifiche o cancellazione ma con le immagini sono di fronte ad un muro. Sono riuscito a farne l'upload grazie ad uno script reperito tempo fa in internet e la cancellazione ma non riesco a farne la modifica. Di sicuro sbaglio la sintassi.


    Questa è l'istruzione per l'upload:
    codice:
    $image = mysql_real_escape_string($image);
       $alt = htmlentities($_POST['altText']);
       $query = 'INSERT INTO loghi (type,alt,immagine) VALUES ("' . $_FILES['userFile']['type'] . '","' . $alt  . '","' . $image . '")';

    e questo è il tentativo che ho fatto per l'update, non funzionante:
    codice:
    $image = mysql_real_escape_string($image);
        $alt = htmlentities($_POST['altText']);
        $id_arrivato=$_POST["id"];
        $query = 'UPDATE `loghi` SET `type`=' . $_FILES['userFile']['type'] . ', `alt`=' . $alt  . ', `immagine`=' . $image . ' WHERE id=$id_arrivato ';
    Potete aiutarmi?
    Grazie mille

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    $image contine il nome dell'immagine oppure va in un campo blob e quindi è l'immagine vera e propria?
    Hai verificato che nella query di update $image contenga effettivamente ciò che ti aspetti? Stessa cosa per $id_arrivato

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    $image va in un campo blob.

    $id_arrivato proviene da un campo input nel quale ho ricopiato l'id dell'immagine in questione. Ho verificato che sia lei.
    $image, come nel caso di upload proviene da un input type="file". Stesso form del campo id, viaggiano assieme.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Aggiungo che il file inviato è testato in estensione, grandezza e viene visualizzato il report su schermo. Quindi per rispondere alla domanda, sì il file è quello ma non viene sovrascritto su db

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Il problema è con la variavile $id_arrivato, per definire la query usi i singoli apici, quindi la variabile $id_srrivato non viene interpretata.
    Prova così

    Codice PHP:
    $query 'UPDATE `loghi` SET `type`=' $_FILES['userFile']['type'] . ', `alt`=' $alt  ', `immagine`=' $image ' WHERE id=' .$id_arrivato

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Grazie ma nulla, come prima. Non trova errori nel codice ma arriva alla fine senza dare risultato anzi chiude così:
    codice:
    if ( !(mysql_query($query,$link)) ) {
          die('<p>Error writing image to database</p></body></html>');
    Se uso i doppi apici mi da errore nel codice

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Ho provato anche così:
    codice:
    $query = ' UPDATE loghi SET type=' . $_FILES['userFile']['type'] . ', alt=' . $alt  . ', immagine=' . $image . ' WHERE id=' . $id_arrivato . ' . ';

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Invece di questo
    die('<p>Error writing image to database</p></body></html>');
    chè un messaggio d'errore che decidi tu, usa questo
    die(mysql_error());

    che ti dice effettivamente l'errore riscontrato dal DB.

  9. #9
    Quote Originariamente inviata da Ciakko Visualizza il messaggio
    Salve a tutti, mi sto cimentando con MySql per creare un piccolo cms per la modifica dei contenuti di un sito. Per quanto riguarda i testi non ho problemi nell'inserimento in database, modifiche o cancellazione ma con le immagini sono di fronte ad un muro. Sono riuscito a farne l'upload grazie ad uno script reperito tempo fa in internet e la cancellazione ma non riesco a farne la modifica. Di sicuro sbaglio la sintassi.


    Questa è l'istruzione per l'upload:
    codice:
    $image = mysql_real_escape_string($image);
       $alt = htmlentities($_POST['altText']);
       $query = 'INSERT INTO loghi (type,alt,immagine) VALUES ("' . $_FILES['userFile']['type'] . '","' . $alt  . '","' . $image . '")';

    e questo è il tentativo che ho fatto per l'update, non funzionante:
    codice:
    $image = mysql_real_escape_string($image);
        $alt = htmlentities($_POST['altText']);
        $id_arrivato=$_POST["id"];
        $query = 'UPDATE `loghi` SET `type`=' . $_FILES['userFile']['type'] . ', `alt`=' . $alt  . ', `immagine`=' . $image . ' WHERE id=$id_arrivato ';
    Potete aiutarmi?
    Grazie mille
    Il problema e' che scrivendo le query con mille concatenazioni di stringhe si finisce sempre per non capirci nulla. In questo caso infatti nella query manca qualunque tipo di quote dei valori, e ottieni quindi un syntax error (nota come nella INSERT usi i doppi apici e nella UPDATE non usi niente).

    Riscrivendo con l'interpolazione delle variabili invece della concatenazione e' molto piu' chiaro. La tua UPDATE e' equivalente a questa:

    Codice PHP:
    $query "UPDATE `loghi` SET
        `type` = 
    {$_FILES['userFile']['type']},
        `alt` = 
    {$alt},
        `immagine` = 
    {$image}
        WHERE id = 
    {$id_arrivato}"
    dove come vedi non c'e' nessun apice singolo o doppio attorno ai valori "type", "alt" e "immagine" (nemmeno a id ma do per buono che e' un valore numerico).

    Partecipa anche tua alla camapagna SI INTERPOLAZIONE NO CONCATENAZIONE
    Ultima modifica di k.b; 07-08-2015 a 12:50

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    eh eh.. parteciperei volentieri alla campagna sì all'interpolazione dal momento che avrò più chiare l'uso degli apici e parentesi. Per ora copio la stringa così come fornita da phpMyAdmin/sql. Per ora anche questa soluzione non funziona, restituisce sempre un errore di sintassi (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\0JFIF\0\0`\0`\0\0��http://ns.adobe.com/xap/1.0/\0).
    Mi è capitato in altre occasioni che MAMP non riconoscesse il comando, mentre con XAMP ad esempio funzionava. Mi prendo il tempo quindi per testare il tutto online e vi farò sapere.
    Grazie sempre dell'impegno che ci mettete.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.