Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [php & db]cancellare un iscritto da una gara

    Ciao! Ho il seguente problema.

    Ho degli utenti, che possono essere iscritti a nessuna, una, o più gare.
    Dall'area riservata, tramite form, devo poterli iscrivere o cancellare a/da una/più gare (oltre a migliaia di altre cose).

    Ho predisposto una checkbox di questo tipo:
    [ ] gara 1
    [ ] gara 2
    [ ] gara 3

    effettuo una select dal database, e in base all'id dell'utente estraggo gli id delle gare cui è iscritto, e stampo un checked per ogni checkbox corrispondente.

    Il codice della checkbox è di questo tipo:
    <input type="checkbox" name="idgara[]" value="".$idgara.""> ($idgara viene estratto dal database, tabella gare)

    Tutti i valori quindi mi confluiscono nell'array $_POST['idgara']=$idgara.

    Il problema si presenta quando ho questa situazione:
    [x] gara 1
    [x] gara 2
    [ ] gara 3

    e tolgo la spunta dalla gara 1. A quel punto l'array $idgara contiene un solo valore, mentre nel database ho due relazioni relative a quel pilota, con due diverse gare.

    Come faccio a capire quale delle due relazioni va cancellata? E come?

    Avevo pensato di fare una select di tutte le relazioni dell'utente, verificare se il numero di record recuperati è maggiore degli elementi dell'array $idgara, e a quel punto so che si intende cancellare una relazione. Ma a questo punto come faccio a capire quale?!

    Si potrebbe fare un foreach ($idgara as $key => $value) con all'interno una select * from tb_utentigare where idutente='$id' and idgara='$value', e se mi dà un risultato so che quello deve restare, ma se nell'array manca quello che devo cancellare, come faccio a cancellarlo?!?!

    povera me

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    61
    Ciao,

    mi sono trovato anche io alle prese con un problema molto simile. Il fatto sta tutto nel problema che gli elementi basilari di html restituiscono in $_POST solo gli elementi selezionati e mai qualcosa del tipo 0,0,1,1 quando in un array i primi due non sono "checkati" mentre gli altri si.

    Ho risolto in un modo un pò "barbaro" e sicuramente anche più pesante facendo due query di update di tutti i riferimenti delle tabelle in questione: in sostanza, metto a 1 tutti i valori selezionati, ma updato anche a 0 tutti gli altri.

    So che non è molto elegante e sicuramente ci avrai già pensato sperando di poterlo evitare, ma è quello che mi è venuto in mente ^^

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.