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

    Problemi con recupero variabili in un array

    Ciao, sono una profana del php, lo sto studiando da un po' e ho deciso di iniziare a fare qualche esperimento.

    Non capisco tanto bene il funzionamento degli array, infatti ho un problema.
    Prelevo una lista di artisti da un db e la visualizzo con un ceckbox

    Codice PHP:

            
    // ESEGUO LA QUERY IN ARTISTI
            
    $query "SELECT * FROM performer WHERE attiva = 1 ORDER BY id ASC";
            
    $result mysql_query($query,$conn); 
            while (
    $array mysql_fetch_assoc($result)) {
            
                echo 
    "<input type=\"checkbox\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;
            
            } 
    E fin qui ci siamo, chiamo il campo id_artisti con [] in modo da inizializzare l'array (spero si dica cosi'...).

    Adesso vorrei che alla pressione del tasto invia, comparisse tale lista, come la precedente, pero' con spuntati i nomi selezionati in precedenza, semplicemente e' cosi', solo che non riesco proprio a capire come fare a leggere l'array riempito in precedenza:

    Codice PHP:


            
    // ESEGUO LA QUERY IN ARTISTI
            
    $query "SELECT * FROM performer WHERE attiva = 1 ORDER BY id ASC";
            
    $result mysql_query($query,$conn); 
            while (
    $array mysql_fetch_assoc($result)) {
                
                 if(
    $array['id'] == $_POST['id_artisti']) {
                    
                    echo 
    "<input type=\"checkbox\" checked=\"true\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;
                
                } else {
                
                    echo 
    "<input type=\"checkbox\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;
                
                }
            
            
            } 
    L'array lo recupero cosi':

    Codice PHP:


                
    if(is_array($_POST['id_artisti']) ) {
                    
                    
    reset($id_artisti);
                    
                    while(
    $elemento next($id_artisti)) {
                        
                        -> 
    $elemento
    ";
                            
                    }
                
                } 
    Ma come faccio a integrarlo nel codice precedente ???
    Sti array proprio non li digerisco...:

    Ciao a tutti

  2. #2
    Ciao!
    Allora la prima parte mi sembra corretta
    Codice PHP:
    // ESEGUO LA QUERY IN ARTISTI         
    $query "SELECT * FROM performer WHERE attiva = 1 ORDER BY id ASC";         
    $result mysql_query($query,$conn);         
    while (
    $array mysql_fetch_assoc($result)) {                      
    echo 
    "<input type=\"checkbox\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;                  

    Poi nella ACTION cioè nella funzione cui accedi a seguito del form submission leggi l'array inviato
    Codice PHP:
    $_POST['id_artisti'
    Ma commetti un errore, infatti:

    Codice PHP:
    $array['id'
    è un intero mentre

    Codice PHP:
    $_POST['id_artisti'
    è un array, quindi la comparazione avviene tra due tipi diversi.
    Allora invece di fare così, devi controllare se il singolo valore
    Codice PHP:
    $array['id'
    è contenuto all'interno dell'array
    Codice PHP:
    $_POST['id_artisti'
    Questo può essere fatto semplicemente utilizzando la funzione php in_array($elemento, $array) che restituisce true se lo trova, false altrimenti. Quindi una cosa del tipo (tra l'altro mi pare che per fare il check l'attributo sia "checked="checked")

    Codice PHP:
    $query "SELECT * FROM performer WHERE attiva = 1 ORDER BY id ASC";        
    $result mysql_query($query,$conn);         
    while (
    $array mysql_fetch_assoc($result)) {                           
      if(
    in_array($array['id'], $_POST['id_artisti']) {                                  
        echo 
    "<input type=\"checkbox\" checked=\"checked\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;                          
      } 
      else {                    
         echo 
    "<input type=\"checkbox\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;                          
      }                           

    Spero di essere stato utile.. Ciao!

  3. #3
    Che dire...Funziona perfettamente....
    E grazie anche per la dettagliata spiegazione, davvero molto cortese.
    Ho capito un po' di piu'.....Ma ho anche capito che devo studiare ancora tanto...tanto...tanto....Mi applichero' di piu'...

    Haaa c'era un errore (una chiusura parentesi) qui:

    Codice PHP:
    if(in_array($array['id'], $_POST['id_artisti']) 
    Che e':

    Codice PHP:
    if(in_array($array['id'], $_POST['id_artisti'])) 
    Per i posteri il codice corretto e' questo:

    Codice PHP:

    $query 
    "SELECT * FROM performer WHERE attiva = 1 ORDER BY id ASC";         
    $result mysql_query($query,$conn);          
    while (
    $array mysql_fetch_assoc($result)) {                            

      if(
    in_array($array['id'], $_POST['id_artisti'])) {                                   

        echo 
    "<input type=\"checkbox\" checked=\"checked\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;                           

      } 

      else {                     

         echo 
    "<input type=\"checkbox\" name=\"id_artisti[]\" value=\"$array[id]\"/>$array[titolo]($array[id])
    "
    ;                           

      }                            



    Ciaooo, grazie ancora
    Michy

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.