Accueil > Forum > > > > fonction php "cochez tout"
fonction php "cochez tout"
lundi 27 juillet 2009 à 11:25:57 |
fonction php "cochez tout"

anthony428
|
Bonjour,
j'ai une page php qui m'affiche des cases à cocher en fonction des résultats retournés dans ma base de données.
Le problème est que je souhaiterais avoir une case à cocher qui me permettrait de cocher toutes les autres cases de la page car dans le cas ou j'aurais 250 enregistrements, je ne veux pas que l'utilisateur ait à cocher 250 cases.
voici mon code :
Code PHP :
<?php
...
?>
<form method="post">
<a name="haut"></a>
<?php
echo "<table border=1>";
echo'<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#18447F">
<td colspan="5"><div align="center"><font color="#FFFFFF" size="5px"></td>
</tr>
<tr bgcolor="#B8C8FE">
<td width="20%" align="center"><font face=\"arial\" size=\"5\">Selection</font></td>
<td width="20%" align="center"><font face=\"arial\" size=\"5\">Enregistrement</font></td>
<td align="center"><font face=\"arial\" size=\"5\">Nom </font></td>
<td width="20%" align="center"><font face=\"arial\" size=\"5\">Ville</font></td>
<td width="20%" align="center"><font face=\"arial\" size=\"5\">Code postal</font></td>
</tr>
<table/>';
include('../../connectBDD.php');
$table= 'champs';
$champs= array('date','nom','cp','ville');
$select= 'id,'.'nom, '.'ville, '.'cp ';
$order= 'nom';
$sens= 'ASC';
$limit_start= '0';
$limit_nb= '250';
$count= '';
function requete($table, $champs, $select, $order, $sens, $limit_start, $limit_nb, $count = '')
{
// option de recherche
$option = $_POST['option'];
// texte de recherche
$search = $_POST['search'];
// si c'est le premier appel de la fonction
if(!isset($fonction_requete))
{
static $fonction_requete = 1;
// si "Rechercher tous les mots" ou "Rechercher un de ces mots"
if($option == 'all' || $option == 'one')
{
// liste des mots
$mots = explode(' ', $search);
// sépararateur
if($option == 'all')
$sep = ' AND ';
else
$sep = ' OR ';
} // if($option == 'all' || $option == 'one')
// "Rechercher l'expression exacte"
else
{
$mots = $search;
$sep = '';
}
} // if(!isset($fonction_requete))
if(!is_array($champs))
$champs = array($champs);
if($option == 'all' || $option == 'one')
{
// pour savoir si on en est à la première itération ou non
$i = 0;
// pour tous les mots
foreach($mots as $mot)
{
if(!$i)
{
$search = '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
$i = 1;
}
else
$search .= $sep . '~#^!|!^#~ LIKE \'%' . $mot . '%\'';
} // foreach($mots as $mot)
} // if($option == 'all' || $option == 'one')
else if($option == 'sentence')
$search = '~#^!|!^#~ LIKE \'%' . $mots . '%\'';
$i = 0;
// début de requête
if(empty($count))
$req_search = 'SELECT ' . $select . ' FROM ' . $table . ' WHERE ';
else
$req_search = 'SELECT count(' . $count . ') FROM ' . $table . ' WHERE ';
// ajout des champs
foreach($champs as $champ)
{
if(!$i)
{
$req_search .= '( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
$i = 1;
}
else
$req_search .= 'OR ( ' . str_replace('~#^!|!^#~', $champ, $search) .' ) ';
}
if(empty($count))
{
$req_search .= "ORDER BY $order $sens LIMIT $limit_start, $limit_nb";
return $req_search;
} }
$req_search = requete( $table, $champs, $select, $order, $sens, $limit_start, $limit_nb );
$result = mysql_query( $req_search ) or die('Erreur MySQL');
while ($row = mysql_fetch_assoc($result)) {
$_SESSION['nb_enregistrement']=mysql_num_rows($result);
$_SESSION['id'.$i]=$row['id'];
?>
//Table qui affiche les résultats avec des cases à cocher
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#B8C8FE">
<td width="20%" align="center"><?php echo "<input type=\"checkbox\" name=\"data[]\" value=\"".$row['id']."\">"; ?></td>
<td width="20%" colspan="2" bgcolor="#B8C8FE" align="center"> <?php echo "<font face=\"arial\" size=\"3\">", $row['id'],"</font>"; ?> </td>
<td width="20%" colspan="2" bgcolor="#B8C8FE" align="center"> <?php echo "<font face=\"arial\" size=\"3\">", $row['nom'],"</font>"; ?> </td>
<td width="20%"align="center"><?php echo "<font face=\"arial\" size=\"3\">", $row['ville'],"</font>"; ?> </td>
<td width="20%" colspan="2" bgcolor="#B8C8FE" align="center"> <?php echo "<font face=\"arial\" size=\"3\">", $row['cp'],"</font>"; ?> </td>
</tr>
<tr>
<td height="3"></td>
<td></td>
<td></td>
</tr><br>
<?php
echo "</table>";
}
?>
<p align="center"><a href="#haut" class="lien2">Haut de page - </a></p>
<p><form name="export_resultat">
<p align="center"><input type="button" value="Exporter la fiche au format PDF" name="envoi" onClick="form.action='fiche.php';form.submit()"></p>
<div align="center">
<input type="button" name="exporter" value="Exporter l'ensemble des résultats au format Excel" onClick="form.action='export.php';form.submit()">
</div>
</form>
</form>
<?php
}
?>
Si quelqu'un pouvait m'aider, ce serait sympa.
merci d'avance.
|
|
lundi 27 juillet 2009 à 13:42:25 |
Re : fonction php "cochez tout"
|
lundi 27 juillet 2009 à 14:15:10 |
Re : fonction php "cochez tout"

nautilus99
|
Bonjour,
Shining Star propose un script complet JavaScript qui fait exactement ce que tu demandes. Considères le comme un tutoriel et adaptes à ton propre code.
|
|
lundi 27 juillet 2009 à 18:11:58 |
Re : fonction php "cochez tout"

anthony428
|
j'avais bien trouvé ce type de fonction mais c'est dans l'adaptation de mon script que je sèche un peu.
J'ai testé la fonction javascript ci dessous, en effet celle ci fonctionne lorsque je nomme ma chekbox "list" comme dans l'exemple mais lorsque j'essai d'adapter avec mes paramètres, ça coince.
J'ai donné comme nom à mes chekbox un nom unique data[].
Ce qui rend l'utilisation de la fonction impossible. En tout cas impossible à comprendre pour moi.
voici la fonction javascript :
Code Javascript :
<SCRIPT LANGUAGE="JavaScript">
function checkAll(field)
{
for (i = 0; i < field.length; i++)
field[i].checked = true ;
}
function uncheckAll(field)
{
for (i = 0; i < field.length; i++)
field[i].checked = false ;
}
</script>
et voici la partie du code qui appel la fonction :
Code PHP :
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#B8C8FE">
<td width="20%" align="center"><?php echo "<input type=\"checkbox\" name=\"data[]\" value=\"".$row['id_societe']."\">"; ?></td>
<td width="20%" colspan="2" bgcolor="#B8C8FE" align="center"> <?php echo "<font face=\"arial\" size=\"3\">", $row['id_societe'],"</font>"; ?> </td>
<td width="20%" colspan="2" bgcolor="#B8C8FE" align="center"> <?php echo "<font face=\"arial\" size=\"3\">", $row['nom_societe'],"</font>"; ?> </td>
<td width="20%"align="center"><?php echo "<font face=\"arial\" size=\"3\">", $row['ville'],"</font>"; ?> </td>
<td width="20%" colspan="2" bgcolor="#B8C8FE" align="center"> <?php echo "<font face=\"arial\" size=\"3\">", $row['cp'],"</font>"; ?> </td>
</tr>
<tr>
<td height="3"></td>
<td></td>
<td></td>
</tr><br>
<?php
echo "</table>";
}
?>
<p align="center"><a href="#haut" class="lien2">Haut de page - </a>
<a href="../index.php">Retour à l'interface d'administration</a></p>
<input type="button" name="CheckAll" value="Check All" onClick="checkAll(document.myform.data[])">
<input type="button" name="UnCheckAll" value="Uncheck All" onClick="uncheckAll(document.myform.data[])">
Si quelqu'un y voit plus clair que moi, qu'il m'éclaire de ses lumières.
Merci d'avance.
|
|
mardi 28 juillet 2009 à 04:58:48 |
Re : fonction php "cochez tout"

jeca
|
Réponse acceptée !
Bonjour,
Tu n'es pas sur le bon forum, puisque c'est un problème javascript.
Cela dit, il faut que tu utilises l'objet 'elements' :
Code Javascript : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
function cocheDecoche(formulaire, checked)
{
with (formulaire)
{
var nb = elements['data[]'].length;
var i = 0;
while (i < nb)
{
elements['data[]'][i].checked = checked;
i++;
}
}
}
</script>
</head>
<body>
<form name="test" method="post" action="">
checkbox 1 <input type="checkbox" name="data[]" value="1" /><br />
checkbox 2 <input type="checkbox" name="data[]" value="2" /><br />
checkbox 3 <input type="checkbox" name="data[]" value="3" /><br />
checkbox 4 <input type="checkbox" name="data[]" value="4" /><br />
checkbox 5 <input type="checkbox" name="data[]" value="5" /><br />
checkbox 6 <input type="checkbox" name="data[]" value="6" /><br />
checkbox 7 <input type="checkbox" name="data[]" value="7" /><br />
checkbox 8 <input type="checkbox" name="data[]" value="8" /><br />
checkbox 9 <input type="checkbox" name="data[]" value="9" /><br />
checkbox 10 <input type="checkbox" name="data[]" value="10" /><br />
checkbox 11 <input type="checkbox" name="data[]" value="11" /><br />
checkbox 12 <input type="checkbox" name="data[]" value="12" /><br />
checkbox 13 <input type="checkbox" name="data[]" value="13" /><br />
checkbox 14 <input type="checkbox" name="data[]" value="14" /><br />
checkbox 15 <input type="checkbox" name="data[]" value="15" /><br />
checkbox 16 <input type="checkbox" name="data[]" value="16" /><br />
checkbox 17 <input type="checkbox" name="data[]" value="17" /><br />
checkbox 18 <input type="checkbox" name="data[]" value="18" /><br />
checkbox 19 <input type="checkbox" name="data[]" value="19" /><br />
checkbox 20 <input type="checkbox" name="data[]" value="20" /><br />
<input type="button" name="coche" value="tout cocher" onclick="cocheDecoche(this.form, 'checked')" />
<input type="button" name="decoche" value="tout décocher" onclick="cocheDecoche(this.form, '')" />
</form>
</body>
</html>
Cordialement.
JC
|
|
mardi 28 juillet 2009 à 09:17:32 |
Re : fonction php "cochez tout"

anthony428
|
Merci beaucoup, ça fonctionne comme je le voulais !!!
Petite question bonus :
Ces résultats sont ensuite traités pour être transféré dans un fichier excel. Si je veux que le fichier excel généré avec ces enregistrements s'ouvre après être rempli, comment dois je procédé ?
Merci d'avance.
|
|
mardi 28 juillet 2009 à 14:03:52 |
Re : fonction php "cochez tout"

anthony428
|
ça y est j'ai trouvé, voici la fonction :
Code PHP :
function forcerTelechargement($nom, $situation, $poids)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $poids);
header('Content-disposition: attachment; filename='. $nom);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($situation);
exit();
}
et le script qui appelle la fonction :
Code PHP :
forcerTelechargement('nom-fichier.xls', './nom-fichier.xls', 1000000);
En espérant que ça puisse en aider d'autres.
|
|
Cette discussion est classée dans : champs, option, search, limit, if
Répondre à ce message
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|