case 'choix_joueur':
// Choix des joueurs pour la feuille de match
$sql = "SELECT * from joueur";
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('choix_joueur.tpl');
break;
et ça dans la template :
Code : Tout sélectionner
{include file="header.tpl"}
<h3>Liste des joueurs</h3>
<table border="1">
<tr>
<th bgcolor="#eeeeee"> </th>
<th bgcolor="#eeeeee">Numéro</th>
<th bgcolor="#eeeeee">Nom</th>
<th bgcolor="#eeeeee">Prénom</th>
<th bgcolor="#eeeeee">Position</th>
</tr>
{section name="un_joueur" loop=$joueur}
<tr>
<td>
<form name="test" action="" method="post">
<input type="checkbox" name="selectedId[]" value="1" />
</form>
</td>
<td>{$joueur[un_joueur].numero}</td>
<td>{$joueur[un_joueur].nom}</td>
<td>{$joueur[un_joueur].prenom}</td>
<td>{$joueur[un_joueur].position}</td>
</tr>
{sectionelse}
<tr>
<td><b><br>Aucun joueur trouvé</b></td>
</tr>
{/section}
</table>
<input type="submit" name="submit" value="Valider" />
{include file="footer.tpl"}
Code : Tout sélectionner
<input type="checkbox" name="selectedId[]" value="1" />
Ok et je fais comment pour afficher ce que j'ai récupéré ?et bien c'est presque ça sauf que là-dedans :à la place du 1, tu mets l'identifiant de chaque ligne récupéréeCode : Tout sélectionner
<input type="checkbox" name="selectedId[]" value="1" />
Ce qui fait que quand tu transmettras ton formulaire, tu récupéreras la liste des identifiants sélectionnés
Quoi ? Quand ? Tu pourrais être plus précis ?Ok et je fais comment pour afficher ce que j'ai récupéré ?
Je voulais savoir comment faire pour récupérer ce que j'ai coché... Faut créer un nouveau case ?Quoi ? Quand ? Tu pourrais être plus précis ?Ok et je fais comment pour afficher ce que j'ai récupéré ?
Y'a pas de difficultés là :
1 - SELECT * FROM table
affichage des lignes via PHP, avec une checkbox qui a pour value l'identifiant de la ligne
--> transmission du formulaire
on récupère un tableau avec les identifiants
on crée une requête dynamiquement (concaténation des identifiants) pour qu'elle ressemble à ça :
SELECT * FROM table WHERE identifiant IN (1,2,3,4)
http://www.phpfrance.com/forums/voir_sujet-5220.phpJe voulais savoir comment faire pour récupérer ce que j'ai coché... Faut créer un nouveau case ?
Ce petit tuto m'a bien aidé, mais je suis toujours bloqué...http://www.phpfrance.com/forums/voir_sujet-5220.phpJe voulais savoir comment faire pour récupérer ce que j'ai coché... Faut créer un nouveau case ?
case 'choix_joueur':
$sql = "SELECT * from joueur";
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('choix_joueur.tpl');
break;
case 'affiche_choix_joueur':
// vérifions que la variable a été transmise
$tabJoueurs = (isset($_POST['joueur']))?$_POST['joueur']:null;
echo "tabJoueur : ".$tabJoueurs;
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabJoueurs)) {
foreach($tabJoueurs as $cle => $valeur) {
echo $cle.' : '.$valeur.'<br>';
}
}
$tpl->display('afficher_joueur.tpl');
break;
Je fais un echo de tab joueurs et il m'affiche :
Justement non. Si je coche 2 cases (n'importe ou), j'obtiens 0 et 1.Pourquoi as-tu
0 on
1 on
2 on
Est-ce que 0, 1 et 2 sont bien des identifiants (clé primaires) des lignes joueurs de ta table ?
A quoi cela sert d'avoir "on" puisque tu n'as QUE les cases de cochées de transmises ?
Oui c'est ça que j'aimerais avoir, mais pas moyen !Je verrais plutôt ce genre de tableau :
Array (
0 => 6,
1 => 7,
2 => 12
);
0, 1 et 2 sont les indices de cellules
6,7 et 12 sont les identifiants des joueurs à récupérer
Euh... Je n'en ai pas. Ou en tout cas je ne vois pas comment faire cette requête...Où est la requête utilisant ces identifiants transmis ? Ici, tu ne les utilises pas
Voila !Déjà montre nous ton HTML
<?php
include "connexionSmarty.php";
include "connexion.php";
$db=connexion("mysql");
// Message si erreur de connexion DB
if (DB::isError($db)) {
die ($db->getMessage());
}
/*
* Programme principal
*/
// Récupération de l'action utilisateur, avec priorité sur $_POST
if (isset($_POST['action'])) {
$action = $_POST['action'];
} elseif (isset($_GET['action'])) {
$action = $_GET['action'];
} else {
$action = '';
}
if ($_POST['action'] == 'ajouter_encadrement_DB'){
//intégrer la classe
require_once('classe_personne.php');
//Test
//personne valide
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
}
if ($_POST['action'] == 'ajouter_joueur_DB'){
//intégrer la classe
require_once('classe_personne.php');
//Test
//personne valide
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
}
// Aiguillage en fonction de l'action utilisateur
switch($action) {
case 'ajouter_encadrement':
// Affichage du formulaire d'ajout
$tpl->display('formulaire_ajout_encadrement.tpl');
break;
case 'ajouter_encadrement_DB' :
require_once('classe_personne.php');
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$personne = new personne($nom, $prenom);
$personne->estValide();
$personneManager = new personneManager();
$personneManager->add($personne);
// Insertion effective de la personne de l'encadrement en BD
$sql = 'INSERT INTO encadrement (nom, prenom, fonction)';
$sql .= ' VALUES (';
$sql .= '\'' . $_POST['nom']. '\',';
$sql .= '\'' . $_POST['prenom']. '\',';
$sql .= '\'' . $_POST['fonction']. '\'';
$sql .= ');';
$db->query($sql);
// pas de break, pour afficher la liste de contact après l'ajout
case 'afficher_encadrement':
// Affichage de tous les joueurs
$sql = "SELECT * from encadrement";
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('encadrement', $resultat);
$tpl->display('afficher_encadrement.tpl');
break;
case 'ajouter_joueur':
// Affichage du formulaire d'ajout
$tpl->display('formulaire_ajout_joueur.tpl');
break;
case 'choix_joueur':
$sql = "SELECT * from joueur";
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('choix_joueur.tpl');
break;
case 'affiche_choix_joueur':
// vérifions que la variable a été transmise
$tabJoueurs = (isset($_POST['joueur']))?$_POST['joueur']:null;
echo "tabJoueur : ".$tabJoueurs;
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabJoueurs)) {
foreach($tabJoueurs as $cle => $valeur) {
echo $cle.' : '.$valeur.'<br>';
}
}
$tpl->display('afficher_joueur.tpl');
break;
case 'supprimer':
//supprimer();
//afficher();
$sql = "DELETE FROM contacts WHERE numero = ".$_REQUEST['numero'];
print $_REQUEST['numero'];
$resultat = $db->query($sql);
if (DB::isError($resultat)) {
print "Une erreur est survenue, contact non supprimé";
} else {
print "Contact supprimé";
}
break;
case 'ajouter_joueur_DB' :
// Insertion effective du joueur en BD
$sql = 'INSERT INTO joueur (numero, nom, prenom, poste)';
$sql .= ' VALUES (';
$sql .= '\'' . $_POST['numero']. '\',';
$sql .= '\'' . $_POST['nom']. '\',';
$sql .= '\'' . $_POST['prenom']. '\',';
$sql .= '\'' . $_POST['poste']. '\'';
$sql .= ');';
$db->query($sql);
// pas de break, pour afficher la liste de contact après l'ajout
default:
case 'afficher_joueur':
// Affichage de tous les joueurs
$sql = "SELECT * from joueur";
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('afficher_joueur.tpl');
break;
}
?>
Template "choix":
{include file="header.tpl"}
<h3>Liste des joueurs à choisir</h3>
<form name="test" method="post" action="projet.php" >
<table border="1">
<tr>
<th bgcolor="#eeeeee"> </th>
<th bgcolor="#eeeeee">Numéro</th>
<th bgcolor="#eeeeee">Nom</th>
<th bgcolor="#eeeeee">Prénom</th>
<th bgcolor="#eeeeee">Position</th>
</tr>
{section name="un_joueur" loop=$joueur}
<tr>
<td><input type="checkbox"/ name="joueur[]"></td>
<td>{$joueur[un_joueur].numero}</td>
<td>{$joueur[un_joueur].nom}</td>
<td>{$joueur[un_joueur].prenom}</td>
<td>{$joueur[un_joueur].poste}</td>
</tr>
{sectionelse}
<tr>
<td>Aucun joueur trouvé</td>
</tr>
{/section}
</table>
<input type="hidden" name="action" value="affiche_choix_joueur">
<input type="submit" name="submit" value="Valider" />
</form>
{include file="footer.tpl"}
Code : Tout sélectionner
<input type="checkbox" name="selectedId[]" value="1" />
<td><input type="checkbox"/ name="joueur[]"></td>
tu n'as pas d'attribut "value", c'est pour ça qu'il met "on", par défaut{$joueur[un_joueur].numero}