Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Check box con lo stesso nome da aggiornare

    Ho un elenco dei servizi che si puo' mettere in vendita o meno selezionando o deselezionado il check box di riferimento.

    Nella pagina del modulo esce qualcosa tipo:

    Trasferimento (e qui c'e' il check box)
    Champagne (e qui c'e' un check box)
    Fiori (e qui c'è un check box)
    ecc ecc.
    Ora se il check box affianco al nome del servizio e spuntato vorra' dire che si potrà acquistare quel servizio, se non lo è non si puo' acquistare.

    La tabella e' composta da:
    id_servizio, che rappresenta l'id del servizio ed e' autoincrement
    id_htl, che rappresenta l'id dell'hotel nel db
    nome_servizio, che sarebbero i vari champagne, fiori, trasferimento ecc
    descrizione, che e' una piccola descrizione
    prezzo, che indica il prezzo di quel servizio
    attivo, che e' il campo che indicherà se e' possibile acquistare o meno quel servizio
    La pagina del form la sto facendo cosi':
    Codice PHP:
    $sql="select * from servizi_aggiuntivi where id_htl=\"$id_htl\" ";
    $risultato = @mysql_query($sql)
    or die(
    "Impossibile eseguire l'interrogazione.");
    while (
    $riga mysql_fetch_array($risultato)) {
    $id_servizio $riga['id_servizio'];
    $id_htl $riga['id_htl'];
    $nome_servizio $riga['nome_servizio'];
    $descrizione $riga['descrizione'];
    $prezzo $riga['prezzo'];
    $attivo $riga['attivo'];
    if (
    $attivo=="1")
    {
    $chk="<input name=\"attivo\" type=\"checkbox\" value=\"1\" checked>";
    }
    else
    {
    $chk="<input name=\"attivo\" type=\"checkbox\" value=\"0\">";
    }
    echo 
    "$nome_servizio - $chk <input name=\"id_servizio\" type=\"hidden\" value=\"$id_servizio\">
    "
    ;

    L'aggiornamento dei record sto provando a farlo cosi' ma non va
    Codice PHP:
    $id_servizio $_POST['id_servizio'];
    $attivo $_POST['attivo'];

    $sql "update servizi_aggiuntivi set attivo = \"$attivo\" where id_servizio = \"$id_servizio\"";
    $risultato mysql_query($sql)
    or die (
    mysql_errno() . ": " mysql_error());
    echo 
    "Servizi aggiornati con successo $id_servizio"
    Da che dipende? come devo correggere?
    Mai dire Mai

  2. #2
    forse perche' non aggiorni nulla.

    leggi il valore del campo attivo, lo passi ad un form e poi lo riscrivi tale e quale nel campo attivo.

    Il classico loop della morte....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    E che valore devo dargli?
    Mai dire Mai

  4. #4
    Originariamente inviato da trippacchiello
    E che valore devo dargli?
    devi verificare se e' settato oppure no.

    Ma direi che ti manca la possibilita' di inserire il valore desiderato. Semplificando:

    Codice PHP:
    Attivo<input name=\"attivo\" type=\"checkbox\" value=\"attivo\" >
    Valore<input type="
    text" name="valore" size="2" value= "$attivo">
    <input name=\"id_servizio\" type=\"hidden\" value=\"
    $id_servizio\"> 
    in questo modo vai a controllare se il checkbox e' settato, se lo e' allora prendi il valore ed esegui l'update, se non lo e' significa che non deve essere modificato.

    Ma a sapere quello che vuoi fare. Diciamo che la mia e' una risposta interlocutoria. Ovviamente la sintassi corretta e' a cura dell'utilizzatore finale.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    ma questo controllo lo faccio nel while:
    Codice PHP:
    $attivo $riga['attivo'];
    if (
    $attivo==1)
    {
    $chk="checked";
    }
    echo 
    "$nome_servizio - <input type=\"checkbox\" value=\"1\" name=\"attivo\" $chk <input name=\"id_servizio\" type=\"hidden\" value=\"$id_servizio\">
    "
    ;

    in pratica se attivo è uguale a 1 mi esce il check box spuntato, altrimenti esce vuoto.
    Il problema ce l'ho quando faccio l'update che non aggiorna niente... anzi se inizialmente e' uguale a 1 una volta che faccio l'update lo porta a 0, e poi cmq aggiorna solo l'ultimo id e non tutti
    Mai dire Mai

  6. #6
    forse ci sono quasi: avevo sbagliato un where nella query che mi fa l'update, ora se ho un solo record me lo aggiorna secondo quello che voglio io, mentre se ho 2 record mi aggiorna solo l'ultimo.
    Come mai?
    questo e' quello che sto usando ora
    Codice PHP:
    $id_servizio $_POST['id_servizio'];
    $attivo $_POST['attivo'];

    $sql "update servizi_aggiuntivi set attivo = \"$attivo\" where id_servizio=\"$id_servizio\" ";
    $risultato mysql_query($sql)
    or die (
    mysql_errno() . ": " mysql_error());
    echo 
    "Servizi aggiornati con successo"
    non e' che devo fare una sorta di while e ciclare tutti i checkbox?
    Mai dire Mai

  7. #7
    Originariamente inviato da trippacchiello
    in pratica se attivo è uguale a 1 mi esce il check box spuntato, altrimenti esce vuoto.
    Il problema ce l'ho quando faccio l'update che non aggiorna niente... anzi se inizialmente e' uguale a 1 una volta che faccio l'update lo porta a 0, e poi cmq aggiorna solo l'ultimo id e non tutti
    se fai una lista allora devi mettere un array per la scelta dei record e poi devi scorrere il post ricevuto.

    Ma ripeto che lo controlli a fare? metti il valore corrente con la possibilita' di modificarlo.

    altro esempio:

    Codice PHP:

    while....

    echo 
    "$nome_servizio - $attivo
     
          Attivo<input name=\"attivo[]\" type=\"checkbox\" value=\"attivo\" >
          Valore<input type=\"text\" name=\"valore[]\" size=\"2\" value= \"
    $attivo\">
          <input name=\"id_servizio[]\" type=\"hidden\" value=\"
    $id_servizio\">

    .....

    // pagina dopo 

    echo "
    <pre>";
    print_r(
    $_POST); 
    e vedi come si e' formato il tuo array $_POST in modo da capire come e cosa estrarre per eseguire la scansione di tutte le query necessarie all'aggiornamento

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    si metto il valore e devo avere la possibilita' di modificarlo quando voglio...
    Mai dire Mai

  9. #9
    se uso il tuo codice mi esce questo

    Array
    (
    [valore] => Array
    (
    [0] => 0
    [1] => 1
    )

    [id_servizio] => Array
    (
    [0] => 1
    [1] => 2
    )

    [Submit] => Invia
    )
    Mai dire Mai

  10. #10
    Originariamente inviato da trippacchiello
    se uso il tuo codice mi esce questo

    Array
    (
    [valore] => Array
    (
    [0] => 0
    [1] => 1
    )

    [id_servizio] => Array
    (
    [0] => 1
    [1] => 2
    )

    [Submit] => Invia
    )
    hai saltato qualcosa perche' dovrebbe esserci anche la variabile attivo. Se manca attivo significa che nulla deve essere cambiato nella tabella.

    Comunque dovresti numerare tu i vari array name del form per avere omogeneita' dell'indice numerico. Quindi se il checkbox e' attivato fai la scansione del POST e aggiorni la tua tabella. Se il checkbox non e' spuntato non hai nulla da aggiornare.

    Codice PHP:
    while....
    $i 1;
    echo 
    "$nome_servizio - $attivo

          Attivo<input name=\"attivo[
    $i]\" type=\"checkbox\" value=\"attivo\" >
          Valore<input type=\"text\" name=\"valore[
    $i]\" size=\"2\" value= \"$attivo\">
          <input name=\"id_servizio[
    $i]\" type=\"hidden\" value=\"$id_servizio\">
          "
    ;
    $i++;
    ....
    fine while

    // altra pagina

    // test di verifica 
    echo "<pre>";
    print_r($_POST);
    echo 
    "</pre>";

    if(!empty(
    $_POST['attivo'])) {

    foreach(
    $_POST['attivo'] as $key => $value) {

          echo   (
    "update servizi_aggiuntivi 
                   set attivo = 
    {$_POST['valore'][$key]}
                   where id_servizio = 
    {$_POST['id_servizio'][$key]} ");
          echo 
    "
    "
    ;
        }  
    } else { echo 
    "nulla da aggiornare
    "
    ;  } 
    Se funziona togli echo e mettici mysql_query

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.