Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    Doppio foreach e doppia stampa

    Ciao a tutti,
    ho un array fatti cosi:

    codice:
    Array
    (
        [0] => Array
            (
                [id] => 1
                [nome] => Fuffi
                [tipo] => gatto
            )
    
        [1] => Array
            (
                [id] => 3
                [nome] => Fido
                [tipo] => cane
            )
    
    )
    che nasce da un form checkbox.

    Per farla breve, in fase di modifica delle info inserite debbo ritirare furoi l'intera possibilità di scelta e lasciare solo i checkbox spuntati che già erano spuntati (zero, uno o due).

    Ho scritto questa parte di codice

    Codice PHP:
    foreach ($animali as $key=>$value) {
        foreach (
    $animaliScelti as $key2=>$value2) {
            
    $check '';
            if(
    $value2['id']==$value['id']) {
                
    $check 'checked';
            } 
    // if
            
    echo '<input type="checkbox" name="id[]" '.$check.' value="'.$value['id'].'" />'.$value['nome'].'
    '
    ;
        } 
    // foreach
    // foreach 
    Solo che, se l'utente non ha scelto nulla, non stampa nulla, se ha scelto un solo animali stampa entrambi i chekcbox di cui correttamente checcato solo quello scelto e se li ha scelti entrambi mi stampa 2 volte ogni singolo animale, prima checckato e subito dopo no...



    Come posso fare per stampare tutto, checcare solo quello checcato e lasciare in bianco quelli non checcati? Oggi sono 2, domani potrebbero essere venti e trovarmi un form di 20 alla 20'..... brrrr!

    Grazie in anticipo!

  2. #2
    Dentro il secondo foreach devi mettere solo il controllo, l'output lo devi inserire al di fuori. (Le $key le devi specificare se le utilizzi, altrimenti le puoi omettere.) Poi ho aggiunto un break perché se lo trova è inutile controllare i rimanenti.

    Codice PHP:
    foreach ($animali as $value) {
        
    $check '';
        foreach (
    $animaliScelti as $value2) {
            if(
    $value2['id']==$value['id']) {
                
    $check 'checked';
                break;
            } 
    // if
        
    // foreach
        
    echo '<input type="checkbox" name="id[]" '.$check.' value="'.$value['id'].'" />'.$value['nome'].'
    '
    ;
    // foreach 

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Giusto..... non averci pensato prima!!!

    Grazie e buona domenica!

  4. #4
    Grazie e buona domenica!
    Buona domenica (per quello che ne rimane... )

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