Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376

    aggiornare due campi MySQL

    ho una tabella con soli due campi e 3 record:



    ID|LOCALE

    1 |ingresso

    2 |cucina

    3 |salotto



    Li mostro in un form per modificarli:



    Codice PHP:
    $sql mysql_query("SELECT * FROM locali");

    while (
    $riga mysql_fetch_array($sql)) {     

    echo 
    " <input type=\"text\" value=\"" $riga['locale'] . "\" name=\"locale\" />";


    Quando premo il pulsante Submit, vorrei modificare quei dati:

    mysql_query("UPDATE locali SET locale='" . $_POST['locale'] . "'");



    ma va in errore e la query diventa UPDATE... SET locale='Array"


    Dove sta l'errore?

  2. #2
    Ciao,

    l'errore sta nel fatto che $_POST['locale'] è un array, quindi devi scorrerlo ed aggiornare un valore per volta.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    ho fatto così, ma aggiorna sempre e solo col secondo campo

    Codice PHP:
    foreach($_POST['locale'] as $key => $value) {
    mysql_query("UPDATE locali SET locale = '$value'");


  4. #4
    Ma quali campi vuoi aggiornare, e di quali record?
    Solitamente una query di update funziona in questo modo:
    codice:
    UPDATE nomeTabella SET campo = "valore" WHERE condizione
    quindi come fai tu manca la condizione e per questo aggiorna tutti i record con l'ultimo valore.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    Originariamente inviato da codencode
    Ma quali campi vuoi aggiornare, e di quali record?
    Solitamente una query di update funziona in questo modo:
    codice:
    UPDATE nomeTabella SET campo = "valore" WHERE condizione
    quindi come fai tu manca la condizione e per questo aggiorna tutti i record con l'ultimo valore.
    ora sto facendo così:
    Codice PHP:
    foreach($_POST['locale'] as $key => $value) {
    mysql_query("UPDATE locali SET locale = '$value'" WHERE id=$key);

    in questo modo però aggiorna i campi del db sempre e solo con ciò che scrivo nel terzo dei tre campi di testo e in più esce l'errore: Warning: Invalid argument supplied for foreach()...

    In pratica, devo fare questo:
    la tabella nel primo post... ha solo 3 campi. Questi 3 campi di testo li stampo col while (come detto su).
    Quindi, avrò che:

    ID Locale
    1 |ingresso > dovrà essere aggiornato solo dal campo di testo nr1

    2 |cucina > dovrà essere aggiornato solo dal campo di testo nr2

    3 |salotto > dovrà essere aggiornato solo dal campo di testo nr3

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    aggiungi per ogni campo del form un campo hidden con l'id della tabella
    <input type=\"hidden\" name=\"id[]\" value=\"{$riga['id']}\">

    Poi quando fai l'update, nel where metti il valore del campo hidden

    Ah, i name dei campi del form scrivili così
    name = "locale[]"

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    bene così, grazie mille! ora lo adatto

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 © 2025 vBulletin Solutions, Inc. All rights reserved.