Checkbox

Signaler
-
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010
-
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

Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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+

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 ...
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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

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 ?

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 ...
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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

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 ??
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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

Je comprends plus rien ... tu veux que je les mette ou ces deux truc la ??
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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 ?
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

OUpps déjà page 2 -- ton code en haut de la page 1

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 ???
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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

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 ...
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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+