Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: problemi con foreach

  1. #1

    problemi con foreach

    Buona Sera Ragazzi,
    Se qualcuno può aiutarmi, avrei la necessità di gestire un pannello di controllo per utenti iscritti al mio sito.

    Ho pensato di gestire il tutto, come nelle caselle di posta normalmente online, dove tutti i messaggi sono preceduti da una chekbox, selezionata la quale è possibile in seguito cancellarne il mesaggio corrispondente.
    Ho scritto il seguente codice e sembra funzionare:


    .... Ciclo DB ......
    <Input type="checkbox" id="chk" name="chk[<?=$riga[0]?>]" value=1>
    .... Fine ciclo ....

    foreach($chk as $chiave=>$valore){
    $query="Update utenti Set confermato=1 where CodUtente=".$chiave;
    mysql_query($query,$conn) or die ("Nessun utente selezionato");
    }

    Il problema nasce quando nessun check è "flaggato", e il browser mi restituisce il seguente errore:
    "Warning: Invalid argument supplied for foreach() in...."
    Mi rendo conto che potrei controllare il chek mediante un javascript, ma in seguito avrò bisogno di farmi restituire anche quando il chek è vuoto.

    Come posso implementare il mio codice?

  2. #2
    Basta che controlli se la var del check esiste:

    if ( isset( $_POST['nome_check'] ) )
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Perdona la mia poca dimestichezza, ma ho difficoltà a reperire il nome del check, essendo un array che si compone in questo modo:

    .... Ciclo DB ......
    <Input type="checkbox" id="chk" name="chk[<?=$riga[0]?>]" value=1>
    .... Fine ciclo ....


  4. #4
    fai così:

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

    ti stampa tutta la struttura dell'array così ti vedi tutte le chiavi e tutti i valori.
    ciao

  5. #5
    Mi restituisce:

    Array
    (
    [chk] => Array
    (
    [99] => 1
    [101] => 1
    )

    [codutente] => 104
    [numrighe] =>
    [Submit1] => conferma
    )

    Come faccio ad identificare univocamente quale check è "flaggato" e quale no?
    Mi spiego meglio, come faccio a fare il test su di un solo checkbox?

  6. #6
    il post invia solo le checkbox flaggate, le altre non appaiono nemmeno nell'array $_POST.

  7. #7
    nel caso volessi cambiare stato all'utente selezionato deselezionandolo come posso fare?

  8. #8
    e comunque ... non riesco a capire quale variabile testare per far funzionare il foreach...

  9. #9
    una cosa edl genere?
    Codice PHP:
    if(isset($_POST['chk']))
    {
        
    $i=0;
        foreach(
    $_POST['chk'] as $k => $v)
        {
            
    $ids[$i]=$k;
            
    $i++;
        }
    }
    if(
    $i==0)
    {
        echo 
    "nulla";


  10. #10
    No, non va bene il foreach come è stato costruito: spreca tantissime risorse. Partiamo con un po' di teoria e qualche dato.

    In primo luogo sappiamo che i checkbox degli utnti che si desidera modificare si chiama chk.
    Per poter agire sull'array, quindi, dovremo richiamare la variabile $_POST['chk']. Per come è stato strutturato il form, però, sappiamo anche che $_POST['chk'] è a sua volta un array.
    Sappiamo anche che le checkbox non selezionate non appaiono nell'array $_POST['chk'].
    Detto questo la domanda che ti poni è la seguente: come fare ad individuare i checkbox selezionati?

    La risposta è molto semplice:

    Codice PHP:
    if( isset( $_POST['chk'] ) ) {
        
    // Esiste almeno una checkbox selezionata
        // Eseguo il freach per vedere su quali id operare
        
    foreach( $_POST['chk'] as $id_utente ) {
            
    // A questo punto hai nella variabile $id_utente
            // il valore dell'id dell'utente corrente estratto dal
            // foreach. In base a come viene gestita la cosa
            // abiliterai o meno l'utente. Nell'esempio io lo abilito
            // impostando ad 1 un campo di una tabella
            
    $query 'UPDATE users SET abilitato = 1 WHERE id_utente = ' $id_utente ;
            
    mysql_query$query ) ;
        }
    } else {
        die( 
    'Nessun utente selezionato' ) ;

    Come vedi il procedimento da seguire è molto semplice. Se non ti fosse chiaro qualcosa dimmelo che te lo spiego. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.