Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454

    [PHP -MySQL] Checkbox e WHERE

    Salve ragazzi,

    sono tornato con un nuovo dilemma!

    Allora, vi spiego bene.

    Ho una tabella che viene creata dinamicamente, in cui ci sono dei messaggi privati. Dietro ogni campo ho un checkbox.

    Ogni checkbox che viene creato (uno a record trovato, cioé messaggio ricevuto) ha il name="dacanc" e come value ha l'id della riga presa da mysql.

    Con il metodo post li faccio arrivare alla pagina cancella.php che dovrebbe cancellare i messaggi selezionati.

    Ora i problemi sono due, $_POST['dacanc'] mi passa sempre solo l'ultimo valore selezionato e non tutti, (per esempio se ne clicco 3 di messaggi lui mi dovrebbe passare i 3 id di questi).

    Il secondo è, più che un problema è una domanda, posso nella clausola WHERE della query mettere:

    DELETE FROM tabella WHERE id=1,2,3

    Insomma, più valori?

    Spero di essermi spiegato.

    Grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    basta che la variabile dacanc la fai diventare un array e risolvi il problema. Come? <input type="checkbox" name="dacanc[]" ... >
    Nello script cancella.php non ti sarà difficile individurare gli id selezionati.
    per quello che riguarda la domanda.. mi sa di no.. ma non ne sarei sicurissimo.

  3. #3
    Il secondo è, più che un problema è una domanda, posso nella clausola WHERE della query mettere:

    DELETE FROM tabella WHERE id=1,2,3

    Insomma, più valori?
    perche' no?

    WHERE id=1 OR id=2 OR id=3

    WHERE id between 1 and 3

    WHERE id >=1 AND id <= 3


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

  4. #4
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Ok grazie ad entrambi, ma mi rimane qualche problema.

    Io non so quanti sono i messaggi che visualizza, cioé che l'utente si trova. Come faccio a capire in cancella.php quanti sono i valori nell'array?

    E soprattutto, una volta fatto capire quanti sono, come faccio a fargli la query per quegli id passati nell'array?

    Può essere che l'id siano (sempre l'esempio di 3 messaggi) 1, 30, 444.

    Dovrebbe capire che sono 3 valori nell'array post, quali sono i valori, ed andarli a cancellare

    Aiut'

  5. #5
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da piero.mac
    perche' no?

    WHERE id=1 OR id=2 OR id=3

    WHERE id between 1 and 3

    WHERE id >=1 AND id <= 3

    Ehehehehe immagino che lui intendesse i valori selezionati tramite checkbox quindi non può sapere apriori se sono consecutivi e/o compresi in un certo range. cmq a quanto pare non si può concatenarli come vuoi tu nosfe però potresti fare:
    Codice PHP:
    foreach ($_POST['dacanc'] as $item) {
      
    $query .= (empty($query)) ? "DELETE FROM tabella WHERE id=$item" AND id=$item";
    }
    mysql_query($query); 

  6. #6
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Forse con un ciclo gli faccio fare una query alla volta che ne pensate?

    Io però con i cicli mi ci impicco

  7. #7
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Originariamente inviato da VaLvOnAuTa
    Ehehehehe immagino che lui intendesse i valori selezionati tramite checkbox quindi non può sapere apriori se sono consecutivi e/o compresi in un certo range. cmq a quanto pare non si può concatenarli come vuoi tu nosfe però potresti fare:
    Codice PHP:
    foreach ($_POST['dacanc'] as $item) {
      
    $query .= (empty($query)) ? "DELETE FROM tabella WHERE id=$item" AND id=$item";
    }
    mysql_query($query); 
    Grazie valvonauta, sembra una cosa logica, ma non capisco questo passaggio:

    Codice PHP:
    id=$item" : " AND id=$item 
    Foreach non dovrebbe fare il tutto per ogni valore? (tipo ciclo insomma)

    Perché l'AND?

  8. #8
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Ti ho dato la soluzione nel post precedente... se poi vuoi fare una query alla volta puoi fare
    Codice PHP:
    foreach ($_POST['dacanc'] as $item) {
      
    mysql_query("DELETE FROM tabella WHERE id=$item") or die(mysql_error());


  9. #9
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Ah vediamo se ho capito, dopo il ? è la cosa che rimane, e dopo il : sono i vari foreach giusto?

    PS: Se mi spieghi cosa significano i ? e i : fuori dalle stringe te ne sono grato, non l'ho mai capito

  10. #10
    Originariamente inviato da VaLvOnAuTa
    Ehehehehe immagino che lui intendesse i valori selezionati tramite checkbox quindi non può sapere apriori se sono consecutivi e/o compresi in un certo range. cmq a quanto pare non si può concatenarli come vuoi tu nosfe però potresti fare:
    Codice PHP:
    foreach ($_POST['dacanc'] as $item) {
      
    $query .= (empty($query)) ? "DELETE FROM tabella WHERE id=$item" AND id=$item";
    }
    mysql_query($query); 
    eh! eh!!!!

    se e' per questo non sa pure qual'e' l'id, supponendo sia autoincrement.... Non entro nel merito del programma, che non conosco, ho risposto alla domanda seconda..... per potere si puo', sta a lui avere i termini di cio' che vuole fare.


    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.