Visualizzazione risultati 1 fino 29 di 29

Discussione: Inserire dati in MySQL dove un valore è uguale a un $_GET

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito Inserire dati in MySQL dove un valore è uguale a un $_GET

    Buongiorno a tutti comunità di AlterVista,
    sto creando il sito ad un mio amico e dal momento che non capisce nulla di HTML, PHP, MySQL ecc gli sto creando un sistema tutto automatico.

    Ora ho creato uno script che permette di inserire delle categorie con immagine e descrizione, la prima cosa che fa questo script è inserire in MySQL il nome della categoria e la rispettiva descrizione dopodichè passa all'upload dell'immagine che rappresenta la categoria.

    A questo punto se l'esito del caricamento è positivo mostra un messaggio di successo mentre in caso contrario mostra errore, io ho fatto in modo che dopo il messaggio di successo, dopo aver caricato i parametri di connessione a MySQL lo script debba inserire dove il nome della categoria è uguale a quello scelto, il nome dell'immagine appena caricata.

    E qui giunge il problema: io faccio in modo che inserisca il nome del file appena caricato (con anche l'estensione) dove il nome della categoria è quello che ha scelto l'utente all'inizio di questo script ma ciò che ricevo è:
    Citazione Originalmente inviato da Errore
    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 'Duff.jpg WHERE nome_categoria = 'nome'' at line 1
    Ed il codice che uso è:
    Codice PHP:
    $sql = "INSERT INTO met(immagine_categoria) values (\"'.$nome.'\") WHERE nome_categoria = '$c'";
    Potete aiutarmi a risolvere?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Sbagli sintassi:
    Codice PHP:
    "INSERT INTO met (immagine_categoria) values ('".$nome."') WHERE nome_categoria = '$c'";

    Ciaoo!!

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ora mi dice questo (ma solo perchè ho cambiato nome all'$_GET):
    Citazione Originalmente inviato da Errore
    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 'WHERE nome_categoria = 'Caremar'' at line 1
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    La query intera?


    Ciao!

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Quella postata da te aggiunta alla variabile $sql:
    Codice PHP:
    $sql = "INSERT INTO met (immagine_categoria) values ('".$nome."') WHERE nome_categoria = '$c'";
    mysql_query($sql) or die(mysql_error());
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Azz, me tapino, non avevo notato quel WHERE!
    Nella sintassi dell'INSERT non è previsto nessun WHERE e nessun'altra condizione! :D

    (anche tu però, guardare nella guida di mysql...)


    Ciaooo!

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ho provato a sostituire (ho perso il codice perchè era solo una prova) INSERT INTO con UPDATE ma non ci sono riuscito. C'è una soluzione per aggirare questo problema?

    Ah dimenticavo, sicuro che in INSERT INTO non si può mettere WHERE? Io l'ho usato nel mio Scambio Contatti MSN
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    Ma scusa, tu precisamente che vuoi fare?

    Vuoi creare un nuovo record?
    Allora devi usare INSERT INTO, senza clausole, perchè non puoi usarle su record che ancora non esistono!

    Vuoi modificare un record esistente?
    Allora usa UPDATE con le clausole.


    Ciao!

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Io ho bisogno di inserire un nuovo dato in un record già esistente alla quale però manca l'ultimo dato che sarebbe questo.

    EDIT:
    Per la verità ho capito quasi tutto...ciò che tu mi hai fatto capire e che (mi riferisco alla prima parte quella di INSERT INTO) io facendo più volte INSERT INTO mi inserisce la query dove manca, mentre non è vero perchè aggiunge un nuovo record.

    Io ho bisogno di mettere quest'ultimo record là dove manca.
    Ultima modifica di seneca : 01-05-2008 alle ore 13.06.26
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Guest

    Predefinito

    Allora scrivi:

    Codice PHP:
    UPDATE tabella SET campo = 'pappardella da inserire' WHERE un campo della stessa riga = 'valore'
    Ciao...
    Ultima modifica di heidi52 : 01-05-2008 alle ore 12.51.08

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ho provato a fare:
    Codice PHP:
    $sql = "UPDATE met SET immagine_categoria = '".$nome."' WHERE nome_categoria = $c";
    E' mi restituisce:
    Citazione Originalmente inviato da Errore
    Unknown column 'Caremar' in 'where clause'
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    Ma le colonne immagine_categoria e nome_categoria esistono? L'hai aggiunte alla tabella?
    'Caremar' cos'è, un valore? Di chi?

    Se sei in dubbio, postaci la CREATE della tabella va


    E' vero, azz, leggi il post sotto il mio
    Ultima modifica di seneca : 01-05-2008 alle ore 13.14.03


    -- Aut Roma Aut Nihil!

  13. #13
    Guest

    Predefinito

    La variabile $c va tra apici:
    '$c'

    altrimenti non la itnerpreta come stringa


    Ciao!

  14. #14
    Guest

    Predefinito

    Se magari mi fai capire che possono essere $nome e $c, pure un esempio e com'è strutturata la tabella ti posso aiutare.

  15. #15
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    @Seneca Tutte le tabelle, colonne e righe esistono perchè create in precedenza:
    Codice PHP:
    CREATE TABLE `met` (
    `
    immagine_categoria` varchar(255) NOT NULL,
    `
    nome_categoria` varchar(255) NOT NULL,
    `
    descrizione_categoria` varchar(255) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Ho saltato i commenti creati da phpMyAdmin, e i dati che già sono inseriti al suo interno.

    @debug Con o senza apici non va.

    @heidi52 $nome è la variabile che contiene il nome del file appena caricato, $c è la categoria inviata tramite $_GET alla quale faccio riferimento per inserire il nome del get in MySQL.

    @Seneca BIS "Caremar" è il nome di un traghetto non conosci la compagnia "remar"? CAremar, TOremar, SAremar, ecc...prendono le prime due lettere dalla regione in cui si trovano.
    Apprezzi l'aiuto? Offrimi un caffè!

  16. #16
    Guest

    Predefinito

    Bene miki, ho visto la struttura della tabella e ho capito, hai delle righe tipo:

    Codice:
    Immagine categoria               Nome categoria              Descrizione categoria
    
                                     foglie                      le foglie di primavera

    E vuoi riempire il campo immagine dove è vuoto.

    Allora, secondo il mio esempio, devi fare così:

    Codice PHP:
    UPDATE met SET immagine_categoria = 'valore da mettere nel campo immagine categoria' WHERE descrizione_categoria = 'le foglie di primavera'
    Ok?


    Ciao...
    Ultima modifica di heidi52 : 01-05-2008 alle ore 13.26.51

  17. #17
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Niente
    Citazione Originalmente inviato da Errore
    Unknown column 'SNAV' in 'where clause is'
    Apprezzi l'aiuto? Offrimi un caffè!

  18. #18
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    @Seneca BIS "Caremar" è il nome di un traghetto non conosci la compagnia "remar"? CAremar, TOremar, SAremar, ecc...prendono le prime due lettere dalla regione in cui si trovano.
    Ma non stavo mica discutendo sul significato della parola, ma sulla sua esistenza e memorizzazione!

    Sembra che tu passi il valore sbagliato nel WHERE, non trova una riga con quel valore! Controlla...
    'Caremar' è presente in una riga, sulla colonna nome_categoria?

    @heidi: nella tua query manca il punto e virgola finale
    Ultima modifica di seneca : 01-05-2008 alle ore 13.36.42


    -- Aut Roma Aut Nihil!

  19. #19
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ah... :togue: comunque si il valore "Caremar" esiste in tabella.
    Apprezzi l'aiuto? Offrimi un caffè!

  20. #20
    Guest

    Predefinito

    Citazione Originalmente inviato da seneca Visualizza messaggio
    @heidi: nella tua query manca il punto e virgola finale
    Io so che se il comando è solo uno, tipo solo un UPDATE, non è obbligatorio il punto e virgola, invece se i comandi sono più di uno, tipo due UPDATE, per separarli si mette il punto e virgola.

    Così mi funziona in tutti i phpmyadmin che ho visitato. Poi non lo so se ora è cambiato.



    Ciao...

  21. #21
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    No che non è cambiato...ma qui si tratta di utilizzare query di MySQL con PHP, il punto è virgola è sempre consigliato/obbligatorio metterlo. Anche se "lanci" la query da phpMyAdmin.
    Apprezzi l'aiuto? Offrimi un caffè!

  22. #22
    Guest

    Predefinito

    Miki, esegui la query all'interno di phpmyadmin e vedi se funziona.

    Mi pare strano il verificarsi di tutti questi problemi per una query così semplice...


    Ciao!

  23. #23
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Nel senso che devo inserire quella query in phpMyAdmin?
    Apprezzi l'aiuto? Offrimi un caffè!

  24. #24
    Guest

    Predefinito

    Eh già.


    Ciao!

  25. #25
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    phpMyAdmin non mi da problemi, e tanto per fare una stupidata ho provato a riavviare apache tanto per vedere se era qualche errore di MySQL o altro ma non funziona comunque.
    Apprezzi l'aiuto? Offrimi un caffè!

  26. #26
    Guest

    Predefinito

    Allora incolla qui tutto (o quasi) lo script e gli errori restituiti.


    Ciao!

  27. #27
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Per motivi personali posso postare solo la parte che da errori invece di tutto lo script:
    Codice PHP:
    <?php }elseif($_GET['fase'] == "2"){

    $percorso = "../imgcat/"; //modifica

    if (is_uploaded_file($_FILES['file1']['tmp_name'])) {


    if (
    move_uploaded_file($_FILES['file1']['tmp_name'], $percorso.$_FILES['file1']['name'])) {
    echo
    'File da te Caricato:<br>';
    echo
    'Nome file: <b>'.$_FILES['file1']['name'].'</b><br>';
    echo
    'MIME Type: <b>'.$_FILES['file1']['type'].'</b><br>';
    echo
    'Dimensione: <b>'.$_FILES['file1']['size'].'</b> byte<br>';
    echo
    '======================<br>';
    echo
    'File caricato correttamente!<br>';
    echo
    '<a href="../index.php">Home Page Sito</a><br>';
    echo
    '<a href="index.php">Home Page Amministratore</a><br>';
    include(
    '../filesito/config.inc.php');
    $nome = $_FILES['file1']['name'];
    $c = $_GET['category'];
    $sql = "UPDATE met SET immagine_categoria = '".$nome."' WHERE nome_categoria = '".$c."'";
    mysql_query($sql) or die(mysql_error());
    } else {
    echo
    "Si è verificato un errore durante l'upload: ".$_FILES["file1"]["error"];
    }
    } else {
    echo
    "Si è verificato un errore durante l'upload: ".$_FILES["file1"]["error"];
    }
    } else {
    Header("Location: crea_categoria.php?fase=1");
    }
    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  28. #28
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Visto che vi state un po' perdendo, provo a scriverti le query che ti potrebbero servire:
    - per aggiungere uno o più RECORD (ovvero una riga alla tabella), si usa
    Codice:
    INSERT INTO NomeTabella (campo1, campo2, ..., campoN) VALUES
       (valore1_1, valore2_1, ..., valoreN_1),
       (valore1_2, valore2_2, ..., valoreN_2),
       ...
       (valore1_M, valore2_M, ..., valoreN_M);
    - per inserire dei record con rimpiazzo sulle chiavi primarie (ovvero, chiavi primarie inesistenti vengono inserite, chiavi primarie esistenti vengono sostituite):
    Codice:
    REPLACE INTO NomeTabella (campo1, campo2, ..., campoN) VALUES
       (valore1_1, valore2_1, ..., valoreN_1),
       (valore1_2, valore2_2, ..., valoreN_2),
       ...
       (valore1_M, valore2_M, ..., valoreN_M);
    - per modificare dei RECORD già esistenti (e solo quelli), sulla base di una condizione:
    Codice:
    UPDATE NomeTabella
    SET valore1 = expr1, valore2 = expr2
    WHERE (condizioni per la modifica);
    se la clausola WHERE viene omessa, saranno modificati TUTTI i record della tabella secondo le indicazioni di SET.
    - per aggiungere uno o più CAMPI a tutti i record:
    Codice:
    ALTER TABLE NomeTabella
    ADD COLUMN (NomeColonna1 DefinizioneColonna1, ..., NomeColonnaN DefinizioneColonnaN);
    dove DefinizioneColonnaX segue la stessa sintassi di una CREATE TABLE (va scritto in sostanza tipo, nullità, default e simili).

    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  29. #29
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Marò dovete scusarmi, ho aperto il file che contiene questo script con l'editor di CuteFTP ed ho notato i soliti tre caratteri della codifica UTF-8 () li ho eliminati e lo script funziona bene. Ora vorrei capire come si sono aggiunti dato che io ho creato questo file con il blocco nome beh grazie e scusate se non me ne sono accorto prima.
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •