[RISOLTO] Mostrare a video le checkbox selezionate con PHP e MySQL

  • Creatore Discussione Creatore Discussione newOne
  • Data di inizio Data di inizio

newOne

Utente Attivo
5 Feb 2014
30
0
0
Ciao, vorrei chiedervi un piccolo aiuto.
Brevemente. Da un modulo di registrazione ricavo le lingue parlate dall'utente tramite i checkbox. E fin qui poco male.
Ora vorrei mostrare lo stesso formulario ma con le checkbox selezionate correlate alle lingue scelte dall'utente.
Piccola doverosa premessa: le lingue che presento nel form sottoforma di checkbox, le estrapolo da una tabella denominata hb_language dove alpha corrisponde alla sigla della lingua.

db_lang.JPG


Le lingue selezionate dall'utente vegono poi memorizzate in un'altra tabella (denominata hb_player_language) relazionate all'id del giocatore

db_pl_lang.JPG

Fin qui ancora tutto bene. Ora arriva il dilemma per me.
Come faccio a visualizzare in un form le checkbox selezionate dall'utente? Lo script sottostante stampa a video tutte le lingue con l'input checkbox.
Il risultato che voglio ottenere è che le lingue selezioante dall'utente salvate nella tabella hb_player_languages venissero spuntate nelle checkbox.



PHP:
 <?php
$richiestaSQL = "SELECT * FROM hb_language ORDER BY id ASC";
$result = mysql_query($richiestaSQL);
 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 ?>
 
 <div class='left'>
<input type="checkbox" name="" value="<?php echo $row['alpha']?>"><?php echo $row['name']?>
 </div>
 <?php
}
  ?>


Grazie
 
Ciao, potresti fare cosi :
con una query sulla tabella hb_player_language memorizzi le lingue dell'utente in un array
poi nel ciclo puoi usare la funzione in_array per verificare se selezionarla oppure no
PHP:
<div class='left'>
        <input type="checkbox"
        <?php
        if (in_array($row['alpha'], $alphautente)) {
            echo " checked";
        }
        ?>
               name="" value="<?php echo $row['alpha'] ?>"><?php echo $row['name'] ?>
    </div>
$alphautente sarà l'array creato dalla query
 
Ciao Ciric,
ho fatto come mi hai consigliato. Solo che mi spunta solo una lingua invece di tre. Il playerID 218 contiene tre lingue.
Forse l'array alphautente non va bene?

PHP:
 <?php

$sql = "SELECT name FROM hb_player_languages WHERE playerID = 218";
$res = mysql_query($sql);


$alphautente = mysql_fetch_array($res);


$richiestaSQL = "SELECT * FROM hb_language ORDER BY id ASC";
$result = mysql_query($richiestaSQL);



while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$alpha = $row['alpha'];
$name = $row['name'];


?>
 
 
<div class='left'>
<input type="checkbox"
<?php
if (in_array($row['alpha'], $alphautente)) {
echo " checked";
}
?>
name="" value="<?php echo $alpha?>"><?php echo $name?>

</div>
<?php
}
 ?>
 
Eh si, se ci sono più record devi estrarli co un ciclo
PHP:
<?php
$alphautente = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$alphautente[] = $row['name'];
?>
 
Ciao Ciric,
sei stato davvero molto gentile e disponibile. Ora funziona.
Pubblico l'intero script per chi magari in futuro ne avesse bisogno.
Grazie ancora.


PHP:
 <?php
//CONNESSIONE AL DATABASE


$sql = "SELECT name FROM hb_player_languages WHERE playerID = 218";
$res = mysql_query($sql);

$alphautente = array();
while ($row = mysql_fetch_array($res)) {


$alphautente[] = $row['name'];
}


$richiestaSQL = "SELECT * FROM hb_language";
$result = mysql_query($richiestaSQL);

while ($row = mysql_fetch_array($result)) {
$alpha = $row['alpha'];
$name = $row['name'];
?>
<div class='left'> 
<input type="checkbox" 
<?php
if (in_array($alpha, $alphautente)) {
echo ' checked ';

}
?>
name="" value="<?php echo $alpha?>"><?php echo $name?> 
</div>
<?php 
}
 
?>
 

Discussioni simili