[pb java/php]

Résolu/Fermé
hellnino Messages postés 7 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 8 février 2007 - 23 janv. 2007 à 16:58
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 23 janv. 2007 à 17:57
Voil j'explique mon problème. Nous avons un projet a faire en DUT, et le but est de faire un site Web avec base de données, etc... Donc ce qui implique PHP, CSS, HTML, SQL. Tous ces langages sont assez nouveaux pour nous. Bon enfin bref là n'est pas le problème, mon problème est en fait le fait que j'essaye de faire cocher toutes les checkbox d'un coup (j'ai été récupéré le code sur le net), donc pour une de mes pages ca marche tres bien, alors que pour une autre page ça ne marche pas. Je me demande si cela ne vient pas du fait que je fais mes checkbox directement en faisant appel à ma base de données. Bon je sais pas si c'est bien claire lol, donc voilà le code :


Entre les balises <head> on a ca :
<SCRIPT LANGUAGE="JavaScript">

function checkAll()  <!-- Cette fonction permet de cocher toutes les cases de type checkbox ayant pour nom cb* -->
{
for (var j = 1; j <= 5; j++) 
	{
	box = eval("document.checkform.cb" + j); 
	if (box.checked == false) box.checked = true;
   	}
}


function uncheckAll() <!-- Cette fonction permet de décocher toutes les cases de type checkbox ayant pour nom cb* -->
{
	for (var j = 1; j <= 5; j++) 
	{
	box = eval("document.checkform.cb" + j); 
	if (box.checked == true) box.checked = false;
	}
}

 <!--
   window.onload=montre;
   function montre(id) {
   var d = document.getElementById(id);
       for (var i = 1; i<=10; i++)
               {
            if (document.getElementById('smenu'+i))
                            {
                                     document.getElementById('smenu'+i).style.display='none';}
                   }
  if (d)
  {
               d.style.display='block';}
  }
   //-->
</script>


Et dans le code principal :

<?php 

$titre_page='Vous êtes sur la page de Suppression';
include "entete.inc";
require "connexionBD.php";
$lien=seConnecter();
$resultat=executerRequeteBD($lien, "SELECT Titre,nomA,prénomA from reference, auteur, ecrire,typeref
WHERE type='journal' AND auteur.Idauteur=ecrire.Idauteur AND ecrire.Idref=reference.Idref AND typeref.Idref=reference.Idref");

?>
<form action="suite.php" method="post" name=checkform>
<table>
<dl id="menu">
 
           <dt onclick="javascript:montre('smenu2');">Conférence</dt>
               
<?php
echo'<dd id="smenu2">
                  <ul>';
		while($choix = mysql_fetch_array($resultat) )
{

echo'<li>'.$choix[0].'<input type=checkbox value="'.$choix[0].'" name=cb></li>';
}

?>
                  </ul>
				 
               </dd>
 </dl>
   </table>
   <input type=button value="Sélectionner tout" onClick="checkAll()">&nbsp;&nbsp;&nbsp;<input type=button value="Dé-sélectionner tout" onClick="uncheckAll()"><br/><br/> 
   </form>


Voilà si quelqu'un pouvait m'aider ca serait sympa. :)

Bonne journée a tous.
A voir également:

6 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 janv. 2007 à 17:23
Si tu essai avec ca, ca devrait le faire un peu plus, mais pas sur j'ai pas testé :
<SCRIPT LANGUAGE="JavaScript">

function checkAll( num ) {
	for (var j = 1; j <= num; j++) {
		box = eval("document.checkform.cb" + j); 
		if (box.checked == false) 
			box.checked = true;
   }
}


function uncheckAll( num ) <!-- Cette fonction permet de décocher toutes les cases de type checkbox ayant pour nom cb* -->
{
	for (var j = 1; j <= num; j++) 
	{
	box = eval("document.checkform.cb" + j); 
	if (box.checked == true) box.checked = false;
	}
}

</script>


Et dans le code principal : 

<?php 

$titre_page='Vous êtes sur la page de Suppression';
include "entete.inc";
require "connexionBD.php";
$lien=seConnecter();
$resultat=executerRequeteBD($lien, "SELECT Titre,nomA,prénomA from reference, auteur, ecrire,typeref
WHERE type='journal' AND auteur.Idauteur=ecrire.Idauteur AND ecrire.Idref=reference.Idref AND typeref.Idref=reference.Idref");

// --- Récupère le nombre de ligne de retour :
$nbLigne = @mysql_num_rows($resultat);

?>
<form action="suite.php" method="post" name=checkform>
<table>
<dl id="menu">
 
           <dt onclick="javascript:montre('smenu2');">Conférence</dt>
               
<?php
echo'<dd id="smenu2">
                  <ul>';
    $curs = 1;
		while($choix = mysql_fetch_array($resultat) )
			echo'<li>'.$choix[0].'<input type=checkbox value="'.$choix[0].'" name="cb'.$curs++.'"></li>';

?>
                  </ul>
				 
               </dd>
 </dl>
   </table>
   <input type=button value="Sélectionner tout" onClick="checkAll(<?php echo $nbLignes;?>)">&nbsp;&nbsp;&nbsp;<input type=button value="Dé-sélectionner tout" onClick="uncheckAll(<?php echo $nbLignes;?>)"><br/><br/> 




Comme tu peux le voir, j'ai ajouté un param à tes fonctions de sorte qu'il puisse s'adapter à n'importe quel nombre de checkBox, pourvue qu'elle soient toutes construit avec le même nom pour base (dans ton exemple c'est cb) puis un numéro pour chaque.
0
hellnino Messages postés 7 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 8 février 2007 1
23 janv. 2007 à 17:31
Merci, donc je viens d'essayer mais ca ne marche toujours pas. Je comprends pas trop pourquoi en fait, parce que dans une autre page, je l'ai fait pour des checkbox toutes faites, et il n'y a aucuns problèmes... Donc je cherche toujours mais j'avoue que j'ai du mal a comprendre pourquoi cela ne marche pas.


EDIT : En fait ca marche maintenant, par rapport a ton code j'ai juste eu besoin de changer : $nblig=mysql_num_rows($resultat); Il y avait un problème avec le @.

merci beaucoup j'etais dessus depuis le début de l'aprem, j'allais m'arracher les cheveux^^
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 janv. 2007 à 17:37
Utilise donc un debbuger javascript (si tu as FF par exemple, ou même IE) pour savoir d'ou vient l'erreur.

En tout cas, remplace :
(<?php echo $nbLignes;?

par :
(<?php echo $nbLigne;?


Sinon pour savoir si tes fonctions sont appelée, met un alert("coucou") dans le corps des fonctions et re test
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 janv. 2007 à 17:46
sinon essai ca pour voir :

<script language="javascript">

NS6 = (document.getElementById&&!document.all)
IE = (document.all)

function retrieveElementById( id ){
	if ( NS6 ) return document.getElementById(id);
	else if ( IE ) return document.all[id];
}

function checkAll( num ) {
	for (var j = 1; j <= num; j++) {
		box = retrieveElementById("cb" + j); 
		if (box.checked == false) box.checked = true;
  }
}


function uncheckAll( num ) {
	for (var j = 1; j <= num; j++) {
		box = retrieveElementById("cb" + j);
		if (box.checked == true) box.checked = false;
	}
}

</script>

<?php 

$titre_page='Vous êtes sur la page de Suppression';
include "entete.inc";
require "connexionBD.php";
$lien=seConnecter();
$resultat=executerRequeteBD($lien, "SELECT Titre,nomA,prénomA from reference, auteur, ecrire,typeref
WHERE type='journal' AND auteur.Idauteur=ecrire.Idauteur AND ecrire.Idref=reference.Idref AND typeref.Idref=reference.Idref");

// --- Récupère le nombre de ligne de retour :
$nbLigne = @mysql_num_rows($resultat);

?>
<form action="suite.php" method="post" name=checkform>
<table>
<dl id="menu">
 
           <dt onclick="javascript:montre('smenu2');">Conférence</dt>
               
<?php
echo'<dd id="smenu2">
                  <ul>';
    $curs = 1;
		while($choix = mysql_fetch_array($resultat) ){
			echo'<li>'.$choix[0].'<input type=checkbox value="'.$choix[0].'" name="cb'.$curs.'"></li>';
			$curs++;
		}

echo '</ul></dd></dl></table><input type=button value="Sélectionner tout" onClick="checkAll('.$nbLigne.')">&nbsp;&nbsp;&nbsp;<input type=button value="Dé-sélectionner tout" onClick="uncheckAll('.$nbLigne.')"><br/><br/>';


?>




et test tes fonctions de cette maniere là :
function checkAll( num ) {
  alert("dans checkAll avec num = "+num);
	for (var j = 1; j <= num; j++) {
		box = retrieveElementById("cb" + j); 
                                          if ( box == null ) alert("null");
		if (box.checked == false) box.checked = true;
  }
}

0

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

Posez votre question
hellnino Messages postés 7 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 8 février 2007 1
23 janv. 2007 à 17:54
Bah maintenant ca marche :) donc t'inquiete^^
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 janv. 2007 à 17:57
Oui j'ai vu seulement je n'arrivais pas a éditer mon dernier message depuis tout à l'heure :p

Bon courage pour la suite.
0