creare check box dinmicamente in PHP

Ciao a tutti ragazzi. Sono nuovo e ho iniziato da poco a programmare in php.  :bye:

Vi pongo subito una domanda,ecco cosa vorrei fare:

Su risposta a una SELECT voglio stampare a video tante 'check box' quanti sono il numero di elementi selezionati.

E cioè così:

'check box' Nome elemento1

'check box' Nome elemento2

... e così via fino all'ultimo articolo.

E' tutta mattina che ci provo e non riesco proprio a trovare un modo.

C'è qualcuno che può aiutarmi?

Grazie 1000 in anticipo!  :)

inviato 10 anni fa
il Navigante
X 0 X

Ciao il Navigante,

prova così:

$query = "SELECT * FROM tuatabella....";
$res = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($res))
{
  $valoreDaPassare = $row['campo1DB'];
  $valoreDaVisualizzare = $row['campo2DB'];
  echo "<input type=\"checkbox\" name=\"nomecampo[]\" value=\"$valoreDaPassare\">".$valoreDaVisualizzare;
}

Quando farai il submit, i valori delle checkbox selezionate, verranno passate nell'array $nomecampo[], per recuperarle potrai fare:

foreach($nomecampo as $key=>$value)
{
  echo $value." -- ";
}

Spero di esserti satto d'aiuto...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Grazie Lore!

Ma non mi è chiaro questo pezzo di codice:

while($row = mysql_fetch_array($res))

Per quanto riguarda invece la connessione al DB e la gestione delle query, ho creato una classe apposita con un metodo connetti(), un metodo disconnetti() e un metodo query($qr).

Per fare il submit intendi quello della form dove sono contenute le checkbox giusto?

Grazie il tuo codice mi è stato di aiuto!   O0

risposto 10 anni fa
il Navigante
X 0 X

Grazie Lore!

Ma non mi è chiaro questo pezzo di codice:

while($row = mysql_fetch_array($res))

Serve per recuperare i risultati della query:

http://it.php.net/manual/it/function.mysql-fetch-array.php

...

Per fare il submit intendi quello della form dove sono contenute le checkbox giusto?

...

Sì, il submit è l'invio dei dati della form alla pagina specificata come attributo del tag form, per intenderci

<form methos="..." action="pagina.php"

(con dati intendo ad esempio

<input type="text" ....>

<input type="radio" ....>

<textarea>

<input type="hidden" ....>

ecc...

)

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Quindi 'mysql_fetch_array' mi restituisce il risultato della SELECT sotto forma di array giusto?

Perfetto stasera mi ci metto e provo, se ho problemi mi faccio risentire!  ;)

Penso di aver trovato un ottimo aiuto in questo forum!  :)

Grazie 1000 ancora!

risposto 10 anni fa
il Navigante
X 0 X

Ciao Lore!

Vorrei sapere cosa intendi per:

$valoreDaPassare = $row['campo1DB'];
$valoreDaVisualizzare = $row['campo2DB'];

campo1db e campo2db cosa sono?

Grazie per la pazienza!  :)

risposto 10 anni fa
il Navigante
X 0 X

$valoreDaPassare = $row['campo1DB'];

$valoreDaVisualizzare = $row['campo2DB'];

quello che tu passi del checkbox e il valore specificato nell'attributo value, giusto?

ora, supponendo che tu debba passare al checkbox dei valori presi da DB,

$valoreDaPassare = $row['campo1DB'];

sta a significare questo, ossia salvo nella variabile $valoreDaPassare, il valore recuperato da un campo del DB (  campo1DB è solo un esempio, tu metterai il tuo campo del DB) e lo passi nel value:

echo "<input type=\"checkbox\" name=\"nomecampo[]\" value=\"$valoreDaPassare\">".$valoreDaVisualizzare;

Dato che il checbox, è un quadratino con la possibilità di spunta dello stesso, di solito, di fianco c'è una scritta o qualcosa che sta ad indicare cosa si selezionerebbe flaggando quel quadratino...

$valoreDaVisualizzare sarebbe questa scritta, ma è una cosa che ho supposto io, tu potresti fargli visualizzare la stessa cosa che gli passi ne value o qualsiasi altra cosa che vuoi tu...la mia era solo una supposizione, e dato che stavi utilizzando il DB, avevo fatto l'esempio estraendo anche quel dato da un campo del Db ( campo2DB ).

Ripeto, quello che ho fatto io è SOLO un esempio, tu dovrai adattarlo alle tue esigenze naturlamente...

La mia era un'idea su come procedere, ora sta a te adattare al tuo script... O0

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Non mi funzionava perchè sbagliavo il campo del DB sul quale facevo la select!  :buck:

Grazie 1000 ancora!

risposto 10 anni fa
il Navigante
X 0 X
Non mi funzionava perchè sbagliavo il campo del DB sul quale facevo la select!  :buck:

...capita  ;D...

Grazie 1000 ancora!

Di niente...

ciao

risposto 10 anni fa
Lore
Lore
1
X 0 X

Sono ancora io!

Mi sono creato una classe con questo metodo per gestire le connessioni al db e le query:

function query($qr)
// inoltra la query al database e restituisce il risultato grezzo sotto forma di un array di array
{
    $this->connettidb(); // si connette al database
    $qresult = mysql_query($qr) or die("PROBLEMA TEMPORANEO CON IL SERVER. SE IL PROBLEMA PERSISTE, CONTATTATE I NOSTRI UFFICI, GRAZIE.");
    // Ogni riga è un array che contiene tutte le informazioni relative ad un articolo
    // scandisce il risultato linea per linea e aggiunge ogni linea nell'array
    $risultato=array();
    $i=0;
    while ($line = mysql_fetch_array($qresult,MYSQL_ASSOC))
    {
        $i=$i+1;
        $risultato[$i]=$line;
    }
   $this->righeaffette=mysql_affected_rows(); // aggiorna le righe affette in caso di INSERT, UPDATE, DELETE
     $this->disconnettidb(); // si disconnette dal database
    return $risultato;
} //

Quando richiamo il metodo per creare le check box:

<?php
$db=new DBInterface ; // si connette al database
$qr="SELECT DISTINCT CARTUCCIA, COLORE FROM TEMPSTAMPANTICARTUCCE WHERE MARCA='".$_SESSION['MARCA']."' AND TIPOSTAMPANTE='".$_SESSION['TIPO']."' ORDER BY CARTUCCIA";
$ris = array();
$ris=$db->query($qr); 
foreach($ris as $key=>$value)
{
   echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value\" >".$value;
   echo "<br>";
}
?>

Difianco alle check box, anzichè stamparmi i valori presi dalla select, mi stampa la parola 'Array'.

Dove sbaglio??  :buck:

Lore aiutami!!! :)

risposto 10 anni fa
il Navigante
X 0 X

Ad una prima occhiata, sembrerebbe che dalla funzione della tua classe, restituisci una matrice e non un array, perciò utilizzando il foreach, in value avrai un array ( come riprova, se guardassi il source della pagina anche nel value delle checkbox dovresti vedere Array )...

Avendo in $value un array, dovresti faer un foreach supplementare:

foreach($ris as $key=>$value)
{
   foreach($value as $key2=>$value2)
          {
             echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >".$value2;
        echo "<br>";
          }
}

questa è stata la prima impressione che ho avuto, prova a vedere se ho avuto l'intuizione corretta...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ok adattandola al mio codice corretto viene così:

foreach($ris as $key=>$value)
{
   echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >".$value1;
   foreach($value as $key2=>$value2)
          {
            echo " ".$value2;
         }
   echo "<br>";        
}

In modo tale che mi stampa a video:

'Checkbox' value1 value2

Grazie 1000! Sei veramente in gamba!  ;D

risposto 10 anni fa
il Navigante
X 0 X

foreach($ris as $key=>$value)

{

Qui non hai ancora il valore di $value2, inoltre $value1 (se non è un'altra variabile da te utilizzata in precedenza, non esiste)

Dovresti mettere anche questa echo all'interno del secondo ciclo ( sempre che abbia capito quello che ti serve)

   echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >".$value1;

      foreach($value as $key2=>$value2)

          {

            echo " ".$value2;

         }

   echo "<br>";       

}

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ancora più semplice ho risolto facendo così:

<?php
$db=new DBInterface ; // si connette al database
$qr="SELECT DISTINCT CARTUCCIA, COLORE FROM TEMPSTAMPANTICARTUCCE WHERE MARCA='".$_SESSION['MARCA']."' AND TIPOSTAMPANTE='".$_SESSION['TIPO']."' ORDER BY CARTUCCIA";
$ris = array();
$ris=$db->query($qr); 
foreach($ris as $line)
{
   echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >".$line['CARTUCCIA']." ".$line['COLORE'];
   echo "<br>";        
}

?>

 ;)

risposto 10 anni fa
il Navigante
X 0 X

Grande!

CMQ occhio perchè hai ancora $value2 :

echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >

ed ora non viene proprio valorizzato, quindi non ti passerà nulla...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Il problema che mi sorge è:

mentre prima nell'altra pagina i valori delle checkbox attive me le richiamavo così:

<?php
foreach($nomecampo as $key=>$value)
{
  echo $value." -- ";
}
?>

Ora come me le recupero??  :(

risposto 10 anni fa
il Navigante
X 0 X

passa la checkbox così:

echo "<input type=\"checkbox\" name=\"nomecampo[]\" value=\"$valoreDaPassare\" >".$line['CARTUCCIA']." ".$line['COLORE'];

nella pagina in cui recupererai i valori basta che fai:

foreach($_POST['nomecampo'] as $key=>$value)

 echo $value."<br>";

e ti stamperà i valori checckati in precedenza...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ci avevo provato anch'io ma non stampa nulla...  :-\

risposto 10 anni fa
il Navigante
X 0 X
Ci avevo provato anch'io ma non stampa nulla...  :-\

I checkbox li visualizzi così?

echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >".$line['CARTUCCIA']." ".$line['COLORE'];

Perchè, come ti ho detto prima, nel codice che hai riportato in precedenza, $value2 non era valorizzata, quindi non avresti passato nessun valore...

Quando visualizzi le checkbox, prova a vedere il source(html) della pagina e vedi che valori vengono passati nelle checkbox, ma soprattutto se vengono passati valori....

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

No! No!

Ho fatto proprio così:

foreach($_POST['nomecampo'] as $key=>$value)

echo $value."<br>";

Eppure non mi visualizza nulla!  :(

Se le checkbox non le visualizzo così, allora come posso visualizzarle?  :buck:

risposto 10 anni fa
il Navigante
X 0 X

Le checkbox come le visualizzi???

così:

echo "<input type=\"checkbox\" name=\"nomecampo\" value=\"$value2\" >".$line['CARTUCCIA']." ".$line['COLORE'];

o così (modo corretto):

echo "<input type=\"checkbox\" name=\"nomecampo[]\" value=\"$value2\" >".$line['CARTUCCIA']." ".$line['COLORE'];

Inoltre, sei sicuro che il valore che gli passi ($value2) non sia nullo?

Controlla tutte queste cose...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

le passo nel modo corretto e $value2 è nullo.  ???

risposto 10 anni fa
il Navigante
X 0 X
le passo nel modo corretto e $value2 è nullo.  ???

Bhè, ma se il valore che passi nella checkbox ($value2) è vuoto o nullo, è logico che quando cerchi di recuperare i valori non recupera niente...

Tu non passi valori e lui non recupera valori...

Quindi, non so che valore tu gli debba passare, cmq se gli passi dei valori, dovrebbe funzionare...

Fai un po' di prove...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Ok!

Allora io gli devo passare un array associativo. Cioè un array così composto:

$risultato[0] = CARTUCCIA, COLORE

$risultato[1] = CARTUCCIA1, COLORE1

$risultato[2] = CARTUCCIA2, COLORE2

E così via.

Ma come faccio a passarglielo tramite la checkbox!  :-\

E' da ieri pomeriggio che ci sto provando!  :'(

risposto 10 anni fa
il Navigante
modificato 10 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda