Checkbox

Profil bloqué - 26 oct. 2010 à 15:13
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010 - 27 oct. 2010 à 21:09
Bonjour, je souhaite récupérer les valeurs des checkbox si elles sont cochés mais seulement mon code ne me récupère que la valeur de la dernière que j'ai coché... Quelqu'un pourrait il m'aider ?

Voici mon code :

admin_convocations.html
<form method="post" action= "admin_convocations.php"> 
 Convocations U19 

 
 joueur1
 joueur2
 
</form> 




admin_convocations.php
<?php 
mysql_connect("...");
mysql_select_db("...");
{ 
$reponse  = mysql_real_escape_string(htmlspecialchars(trim($_POST['joueurs']) ) ); 
mysql_query("INSERT INTO convocationsu19 (convocationsu19) VALUES ('$reponse')") or die (mysql_error() );
} 
?> 



convocations.php
<?php 
mysql_connect("...");
mysql_select_db("...");
$reponse = mysql_query("SELECT * FROM convocationsu19 ORDER BY ID DESC LIMIT 0,1"); 
mysql_close(); 
while($donnees = mysql_fetch_array($reponse)) 
{ 
echo $donnees['convocationsu19']; 
} 
?> 



Ma table s'appelle "convocationsu19" et elle possède deux champs : "id" et "convocationsu19"

15 réponses

tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
26 oct. 2010 à 15:32
Hello,

Pour récupérer ton tableau après soumission plusieurs solutions selon l'utilisation ultérieur.

pour comprendre :

echo '';//pour l'esthétique d'affichage
print_r($_POST['joueurs']);
echo '

';//pour l'esthétique d'affichage

donc

foreach($_POST['joueurs'] as $key=>$elem)
{
print $key.' -> '.$elem.'
';
}

pour tester

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Convocations U19


joueur1
joueur2
joueur3
joueur4

</form>



<?php

foreach($_POST['joueurs'] as $key=>$elem)
{
echo $key.' -> '.$elem.'
';
}
?>
Maintenant les pistes utiles :

implode / explode
array_walk
count()
....

Attention les tableaux soumis et construits par formulaire ont des limites de taille (50 je crois, mais pas sur), mais comme ça sent la feuille de match, 18 positions sont suffisantes...

A+
0
Profil bloqué
26 oct. 2010 à 15:43
C'est effectivement pour des convocations de matchs ....
Le problème c'est que la réponse qui ressort est : "Array"

J'ai peut être pas mis ce que tu m'as dis dans les bonnes pages ...
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
26 oct. 2010 à 16:04
Normal, Array = tableau = $_POST['joueurs']

tu dois parcourir ton tableau pour en extraire les valeurs.

Copie le code suivant et fait des tests pour comprendre:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
 Convocations U19 

 
 joueur1
 joueur2
 joueur3
 joueur4
 
</form> 


<?php
echo 'il y a '.count($_POST['joueurs']).' joueur(s) convoqué(s)
';
//le tableau
foreach($_POST['joueurs'] as $key=>$elem) 
{ 
    print $key.' -> '.$elem.'
'; 
}
echo '<hr/>';
//deuxième solution pour savoir qui est convoqué ou non
for($i=1;$i<=4;$i++)
{
    if($_POST['joueurs'][$i] != NULL)
    {
$check = 'convoqué';
    }
    else
    {
$check = 'supporter';
    }
    
    print 'joueur '.$i.': '.$check.'
';
}


Bon test
0
Profil bloqué
26 oct. 2010 à 16:15
OK , j'ai tester un petit peu ... j'ai en partie compris ton code .
Je préfère la première solution ....

Comment faire alors pour enregistrer le contenu du tableau (si j'ai bien compris ) dans mon champ ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
26 oct. 2010 à 16:26
avec ce code ci , il m'enregistre dans plusieurs ligne de ma table...
<?php
foreach($_POST['joueurs'] as $key=>$elem) 
{ 
mysql_connect("");
mysql_select_db("");
{ 
$reponse = mysql_real_escape_string(htmlspecialchars(trim($elem) ) ); 
mysql_query("INSERT INTO convocationsu19 (convocationsu19) VALUES ('$reponse')") or die (mysql_error() );
} 
}
?>


mais je vois pas comment lui faire tout enregistrer ensemble ...
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
26 oct. 2010 à 16:35
Celà dépend de la suite et de l'utilisation de l'information.

Le plus simple, mais vraiment la solution la plus "sale" que je ne préconise pas, mais alors pas du tout ... mais qui existe ...

//pour stocker

$reponse = serialize($_POST['joueurs']);

//pour afficher après select

foreach(unserialize($reponse) as $key=>$elem) 
{ 
    print $key.' -> '.$elem.'
'; 
}


Mais une réflexion sur tes besoins futurs est indispensable car un enregistrement individuel de chaque joueur par match me semble plus judicieux.

table joueur + table match et une
table joueurs_convocations

id[int] id_joueur[int] id_match[int] statut[enum 0|1]

A plus et bonne réflexion
0
Profil bloqué
26 oct. 2010 à 16:38
Oui peux être , le problème est le suivant
En général il y a 16 joueurs, il suffit donc que je récupère les 16 dernières entrées, mais cela va poser des problèmes quand il n'y aura que 14 joueurs....

La solution pourrait être de vider la table automatiquement chaque semaine , c'est possible ??
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
26 oct. 2010 à 16:49
Tu ne souhaite donc pas garder l'historique des convocations ?

Si ce n'est pas le cas, la possiblité de données sérialisées que tu updates chaque semaine est possible.

ton code adapté

$reponse = mysql_real_escape_string(htmlspecialchars(trim(serialize($_POST['joueurs'])) ) );


output

while($donnees = mysql_fetch_array($reponse)) 
{ 
  foreach(unserialize($donnees['convocationsu19']) as $key=>$elem) 
  { 
    echo $key.' -> '.$elem.'
'; 
  } 
}


Mais dans un proche future tu sur cette solution...

Bonne
0
Profil bloqué
26 oct. 2010 à 17:02
Je comprends plus rien ... tu veux que je les mette ou ces deux truc la ??
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
26 oct. 2010 à 17:16
C'est ton code (dans ta question, tout en haut) avec simplement la notion du stockage serialisé (admin_convocations.php) dans ta table et de l'affichage de ces mêmes données (convocation.php) une fois récupérée de ta table.

Bon, pour pouvoir t'aider et te guider (si tu le souhaite...)
Quel est ton objectif ? tes besoins ou ceux du club ?
Quel sont tes besoins finaux ou les besoins des utilisateurs entraineurs, joueurs, supporters ?
Est-ce des données publiques ou avec différents droits d'autorisation d'accès?
Est-ce uniquement du print écran ou va-tu utiliser les informations pour préimprimer des feuilles de match ?
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
26 oct. 2010 à 17:17
OUpps déjà page 2 -- ton code en haut de la page 1
0
Profil bloqué
26 oct. 2010 à 22:04
je souhaite permettre les convocations de joueurs, admin_convocations.php et admin_convocations.html seront donc dans un dossier protégé.
Comment faire alors pour vider ma table chaque semaine ???
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
27 oct. 2010 à 19:57
Hello,
Pourquoi vider la table ? il suffit de faire un Update de la ligne avec les nouvelles données.

Maintenant pour vider ta table chaque semaine, un cron sur une page contenant une commande sql suffit...

La commande pour vider une table est :
TRUNCATE TABLE ma_table, efface toute les données de la table sans exception.

Bonne soirée
0
Profil bloqué
27 oct. 2010 à 20:52
voilà pourquoi j'aimerais vider la table :

Les convocations de joueurs sont faites le vendredi pour le match du dimanche , j'aimerais que sans rien faire , le mardi la table se vide pour que si on oublie de remettre les convocations pour le week end suivant, il n'y ai pas de quiproquo. Si tu as une autre solution je suis preneur ...
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
27 oct. 2010 à 21:09
re,

Ajoute une colonne "date_convoquation" dans ta table puis dans ta requête tu vérifie ensuite que la date de convocation est égale ou supérieur à la date du jour. Si elle est inférieur tu n'affiche rien.

A+
0
Rejoignez-nous