Checkbox pour exécuter une requète

Résolu
msi79 - Modifié par msi79 le 16/03/2014 à 09:26
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 18 mars 2014 à 17:28
Bonjour,
je voudrais qu'en cochant le checkbox une requête se lance automatiquement.
mais j'arrive pas .
voici mon code :
1. index.php?page=page


<input type="checkbox" name="accuseimput"   <?php echo $checked  ?> onclick="go()"/>

2.js/test.js
 
function getXhr()
{
 var xhr = null; 
 if(window.XMLHttpRequest) // Firefox et autres
  xhr = new XMLHttpRequest(); 
 else if(window.ActiveXObject)
 { // Internet Explorer 
  try 
  {
   xhr = new ActiveXObject("Msxml2.XMLHTTP");
  } 
  catch (e) 
  {
   xhr = new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
 else 
 { // XMLHttpRequest non supporté par le navigateur 
  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
  xhr = false; 
 } 
 return xhr
}
 
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go()
{
 var xhr = getXhr()
 // On défini ce qu'on va faire quand on aura la réponse
 xhr.onreadystatechange = function()
 {
  // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  if(xhr.readyState == 4 && xhr.status == 200)
  {
   xhr.responseText;
  }
 }
 xhr.open("GET","index.php?page=page2&id="+id_sc,true);
 xhr.send(null);
}


3. index.php?page=page2
 
// Activation du compte utilisateur
$result = mysql_query("
UPDATE servicecourrier
SET accuse_trait = '1'
WHERE id_sc = '".$_GET["id_sc"]."'

");

32 réponses

je crois que le problème doit se situer au niveau de :
onclick="GO('<?=$liste_etu['id_sc']?>')"

et de
GO(id_sc)


récupération de la variable id_sc
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 mars 2014 à 14:10
Pourquoi ?
Chez moi ces codes ne posent aucun souci....
Le tout serait de savoir dans l'ordre :
- Est-ce que tu as des choses qui s'affichent ? si oui.. QUOI ?
- Est-ce que tu as des popups ? si oui.. QUOI ?
- Est-ce qu'il y a quelque chose dans FireBug (mode debogage de script activé bien sur..) ? si oui.. QUOI ?
- et enfin.. si tu as répondu OUI au deux premièrs : que vaut $liste_etu['id_sc'] -> Avec FireFox, tu fais un clic-droit sur une de tes checkBox et tu choisi : Examiner l'élément... (... et tu nous colles l'info ici).
0
1. quand je mets onclick="GO()" et function GO() le popups alert("fonction GO ok!"); s'affiche par contre quand je met onclick="GO('<?=$liste_etu['id_sc']?>')" et function GO(id_sc) le popups ne s'affiche pas.
2. le firebug me donne pas d'erreur
3. et enfin voici ma table
-- phpMyAdmin SQL Dump
-- version 3.4.10.1
-- http://www.phpmyadmin.net
0
voici le code complet de page(page.php)
<?php
$color=array('#333333','#999999');
$i=0;
// on crée la requête SQL
$sql = "SELECT *
FROM ServiceCourrier WHERE accuse_corbeille = '0' AND accuse_archive = '0'
ORDER BY NumEnreg ASC
";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$res = mysql_num_rows($req); // 4
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {color: #0000FF}
.Style8 {
color: #330000;
font-style: italic;
}
.Style10 {color: #330000; font-weight: bold; font-style: italic; }
-->
</style>

</head>
<body>
<p> </p>
<div class="info_sev_cour" style="position:absolute; top:20px; left:10px; font-size:14px">
<table width="1082" border="0" align="center" cellspacing="2">
<tr bgcolor="#999999">
<th colspan="2" bgcolor="#999999" scope="row"><p class="Style8">N°</p>
<p class="Style8"> COURRIER</p></th>
<td width="106" bgcolor="#999999"><div align="center" class="Style10">DATE ARRIVEE DU COURRIER</div></td>
<td width="275" bgcolor="#999999"><div align="center" class="Style10">NOM EXPEDITEUR</div></td>
<td width="119" bgcolor="#999999"><div align="center" class="Style10">DATE DU COURRIER</div></td>
<td width="86" bgcolor="#999999"><div align="center" class="Style10">N° D'ORIGINE </div></td>
<td width="94" bgcolor="#999999"><div align="center" class="Style10">OBJET</div></td>
<td width="147" bgcolor="#999999"><div align="center" class="Style10">FICHIER</div></td>
<td colspan="3" bgcolor="#999999"> </td>
</tr>
<?php
while ($liste_etu=mysql_fetch_assoc($req)) {
$j=$i%2;
//$rq = mysql_query("SELECT * FROM ServiceCourrier WHERE NumEnreg = '".$liste_etu['num']."' AND clef = '".$liste_etu["clef"]."'") or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
//$liste = mysql_fetch_assoc($rq);
$checked = $liste_etu["accuse_trait"]==1? "checked = 'checked'": "";
$style=($checked)? "font-weight:bold !important; color:#FF8000; " : "";
$class=($checked)? "numbers4 " : "";
?>
<tr bgcolor="#33FFFF" <?php echo 'style="'.$style.'"' ?> >
<td width="38" bgcolor="#F0F0F0"><span class="Style10">
<div <?php echo 'class="'.$class.'"' ?> align="center"><input type="checkbox" name="accuseimput" <?php echo $checked ?> onclick="GO('<?=$liste_etu['id_sc']?>')" /></div>
</span></td>
<td width="61" bgcolor="#F0F0F0" ><span class="numbers4" style="color:#FFF"><?php echo $liste_etu['NumEnreg'];?></span></td>
<td bgcolor="#F0F0F0"><?php echo $liste_etu['dateArriveCourrier'];?></td>
<td bgcolor="#F0F0F0" style="font-size:12px"><?php echo $liste_etu['nomExpediteur'] ?></td>
<td bgcolor="#F0F0F0" style="font-size:12px"><?php echo $liste_etu['dateDuCourrier'] ?></td>
<td bgcolor="#F0F0F0" style="font-size:12px"><?php echo $liste_etu['Numorigine'] ?></td>
<td bgcolor="#F0F0F0" style="font-size:12px"><?php echo $liste_etu['objetCourrier'] ?></td>
<td bgcolor="#F0F0F0" style="font-size:12px"><table width="147" border="0" align="center">
<tr>
<td width="22"><a href="index.php?page=galerie_photo&id=<?php echo $liste_etu['id_sc']; ?>"><img src="images/trombone2.gif" width="20" height="25" /></a></td>
<td width="115"><a href="index.php?page=galerie_photo&id=<?php echo $liste_etu['id_sc']; ?>" style="text-decoration:none">Pièces Jointes</a></td>
</tr>
</table></td>
<td width="37" bgcolor="#F0F0F0" style="font-size:12px"><a href="index.php?page=groupe_LISTE_modif&id=<?php echo $liste_etu['id_sc']; ?>" style="text-decoration:none; color:#000; font-weight:bold; font-size:13px" ><img src="images/modiff.png" width="30" height="30" /></a></td>
<td width="38" bgcolor="#F0F0F0" style="font-size:12px" align="center"><a href="index.php?page=accuce_corbeille&id=<?php echo $liste_etu['id_sc']; ?>" style="text-decoration:none; color:#000; font-weight:bold; font-size:13px" ><img src="images/suppr.png" width="20" height="20" /></a></td>
<td width="35" bgcolor="#F0F0F0" style="font-size:12px"><a href="index.php?page=LISTE_archiver&id=<?php echo $liste_etu['id_sc']; ?>" style="text-decoration:none; color:#000; font-weight:bold; font-size:13px" >ARCHIVER</a></td>



</script>
<?php
}
?>
</table>
</div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="functions/jquery.js"></script>
<script type="text/javascript">
function GO(id_sc){
alert('ok');
console.log("***** Fonction GO("+id_sc+") ******* ");
var AJX = $.ajax({
type: "POST"
,url:"pages/page2.php"
,data: "id="+id_sc
,async: false
,dataType: "text"
,success: function(reponse){
console.log("Le script fonctionne !!");
alert(reponse);
}
,error:function(){
console.log(" error !!");
alert('Ajax => Erreur ');
}
});
}
</script>
</body>
</html>


voici celui de la page (page2.php)
<?php

// Le début de ton code
// ...

// On regarde si tes variables GET sont renseignées:
print_r($_GET);

// On récupère l'ID
$id = isset($_GET["id"])?$_GET["id"]:'';
// Activation du compte utilisateur

$sql="UPDATE servicecourrier
SET accuse_trait = '1'
WHERE id_sc = '".$id."'";

$result = mysql_query($sql);

// On retourne le résultat dans la fonction ajax
if($result){
print_r($result);
}else{
echo "<br><b>REQUETE :</b><br>".$sql;
}

?>
0

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

Posez votre question
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 mars 2014 à 14:51
En prenant le code complet de ta page... le code fonctionne... j'ai bien les popups !

Donc : As tu fait, comme je te l'ai demandé précédement "Examiner l'élément" sur une de tes checkbox ??
Qu'obtients tu ?


AU cas où, peux tu ajouter un ECHO de ton ID_SC
// ....

$checked = $liste_etu["accuse_trait"]==1? "checked = 'checked'": "";
$style=($checked)?  "font-weight:bold !important; color:#FF8000; " : "";
$class=($checked)?  "numbers4 " : "";

// Echo pour savoir ce que vaut id_sc !
echo "<br><b> ID_SC = </b>".$liste_etu['id_sc'];

// Le reste de ton code



Ce qui m'étonne très très très fortement... c'est que firebug ne t'affiche rien dans l'onglet console !

Es-tu sur d'avoir activer le mode débogage sur les scripts ??
( aller dans l'onglet script / cliquer sur reload )


Puis au moment de cliquer sur une de tes checkbox, tu regardes dans l'onglet "CONSOLE"
Ce qui devrait te donner quelque chose du genre :


0
1.

// Echo pour savoir ce que vaut id_sc !
echo "<br><b> ID_SC = </b>".$liste_etu['id_sc'];
me donne :
ID_SC = 41
ID_SC = 43
ID_SC = 44


2. oui le firbug me donne quand je coche un checkbox:
SyntaxError: missing ) after argument list
GO('<?=$liste_etu['id_sc']?>')
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 mars 2014 à 15:13
Et si tu fais : Examiner l'élément en cliquant avec le bouton droit de ta souris sur une de tes checkbox ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 18/03/2014 à 15:29
Code légèrement remanié :

J'ai utilisé du CSS pour gérer les styles de ton tableau.. plutot que d'en mettre sur chaque TD / TH .....

On y gagne en lisibilité.

J'ai aussi remplacé tous tes : echo $ddddd au milieu de ton HTML par <?=$dddddd?>
Là aussi pour de la lisibilité !

ce qui donne :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="functions/jquery.js"></script>

<title>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {color: #0000FF}
.Style8 {
 color: #330000;
 font-style: italic;
}
.Style10 {color: #330000; font-weight: bold; font-style: italic; }
-->

#TblMails{
  margin-bottom: 20px;
}
#TblMails th{
 background-color:#999999;
 text-align:center;
}

#TblMails td{
 background-color:#F0F0F0;
 text-align:left;
 font-size:12px;
}

#TblMails a{
 text-decoration:none; 
 color:#000; 
 font-weight:bold; 
 font-size:13px
}

</style>

</head>
<body>

<?php
$color=array('#333333','#999999');
$i=0;
// on crée la requête SQL
$sql = "SELECT *
         FROM ServiceCourrier WHERE accuse_corbeille = '0' AND accuse_archive = '0'
     ORDER BY NumEnreg ASC
"; 

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$res = mysql_num_rows($req);                               // 4 
?> 

<p> </p>
 <div class="info_sev_cour" style="position:absolute; top:20px; left:10px; font-size:14px">
  <table id="TblMails" width="1082" border="0" align="center" cellspacing="2">
    <tr>
    <th colspan="2" scope="row"><p class="Style8">N°</p><p class="Style8">  COURRIER</p></th>
    <th width="106" ><div align="center" class="Style10">DATE ARRIVEE DU COURRIER</div></th>
 <th width="275"><div align="center" class="Style10">NOM EXPEDITEUR</div></th>
 <th width="119"><div align="center" class="Style10">DATE DU COURRIER</div></th>
 <th width="86" ><div align="center" class="Style10">N° D'ORIGINE </div></th>
 <th width="94" ><div align="center" class="Style10">OBJET</div></th>
 <th width="147" ><div align="center" class="Style10">FICHIER</div></th>
 <th colspan="3" > </td>
    </tr> 
  
  
    <?php
    while ($liste_etu=mysql_fetch_assoc($req)) {
   $j=$i%2;

$checked = $liste_etu["accuse_trait"]==1? "checked = 'checked'": "";
$style=($checked)?  "font-weight:bold !important; color:#FF8000; " : "";
$class=($checked)?  "numbers4 " : "";
?>
     <tr <?='style="'.$style.'"' ?> >
      <td width="38" ><span class="Style10">
        <div <?='class="'.$class.'"' ?> align="center"><input type="checkbox" name="accuseimput"   <?=$checked  ?>   onclick="GO('<?=$liste_etu['id_sc']?>')"  /></div>
      </span></td>
      <td width="61"  ><span class="numbers4" style="color:#FFF"><?=$liste_etu['NumEnreg'];?></span></td> 
      <td><?=$liste_etu['dateArriveCourrier'];?></td>
      <td><?=$liste_etu['nomExpediteur'] ?></td>
      <td><?=$liste_etu['dateDuCourrier'] ?></td>
      <td><?=$liste_etu['Numorigine'] ?></td>
      <td><?=$liste_etu['objetCourrier'] ?></td>
      <td><table width="147" border="0" align="center">
        <tr>
         <td width="22"><a href="index.php?page=galerie_photo&id=<?=$liste_etu['id_sc']; ?>"><img src="images/trombone2.gif" width="20" height="25" /></a></td>
         <td width="115"><a href="index.php?page=galerie_photo&id=<?=$liste_etu['id_sc']; ?>" style="text-decoration:none">Pièces Jointes</a></td>
          </tr>
   </table>
   </td>
      <td width="37"style="text-align:center !important;">
     <a href="index.php?page=groupe_LISTE_modif&id=<?=$liste_etu['id_sc']; ?>" ><img src="images/modiff.png" width="30" height="30" /></a>
     </td>
      <td width="38" style="text-align:center !important;">
     <a href="index.php?page=accuce_corbeille&id=<?=$liste_etu['id_sc']; ?>" ><img src="images/suppr.png" width="20" height="20" /></a>
   </td>
      <td width="35"style="text-align:center !important;">
     <a href="index.php?page=LISTE_archiver&id=<?=$liste_etu['id_sc']; ?>" >ARCHIVER</a>
   </td>

<?php
  }
?>
  </table>
</div>

<script type="text/javascript">
 function GO(id_sc){
  alert('ok');
 console.log("***** Fonction GO("+id_sc+") ******* ");
       var AJX = $.ajax({ 
                  type: "POST"
                 ,url:"pages/page2.php"
                 ,data: "id="+id_sc
                 ,async: false
                 ,dataType: "text"
                 ,success: function(reponse){
                    console.log("Le script fonctionne !!");
                    alert(reponse);
   }
                 ,error:function(){
                          console.log(" error !!");
      alert('Ajax => Erreur ');
   }
            }); 
 }
</script>
</body>
</html>



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 18/03/2014 à 16:19
au fait, dans le script AJAX il faut remplacer type: "POST" par type: "GET".
( ce n'est pas ça qui empeche les ALERT de fonctionner... mais il faudra le faire pour que ta page2 puisse lire le contenu de la variable id)..
 function GO(id_sc){
  alert('ok');
 console.log("***** Fonction GO("+id_sc+") ******* ");
       var AJX = $.ajax({ 
                  type: "GET"
                 ,url:"pages/page2.php"
                 ,data: "id="+id_sc
                 ,async: false
                 ,dataType: "text"
                 ,success: function(reponse){
                    console.log("Le script fonctionne !!");
                    alert(reponse);
   }
                 ,error:function(){
                          console.log(" error !!");
      alert('Ajax => Erreur ');
   }
            }); 
 }
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 18/03/2014 à 16:33
Je viens de penser à autre chose... tu n'aurais pas quelque part une autre fonction GO ?

Éventuellement renomme cette fonction go par quelque chose de plus parlant....comme par exemple:

function UPDATE_servicecourrier(id_sc){
  alert('ok');
 console.log("***** FonctionUPDATE_servicecourrier("+id_sc+") ******* ");
       var AJX = $.ajax({ 
                  type: "GET"
                 ,url:"pages/page2.php"
                 ,data: "id="+id_sc
                 ,async: false
                 ,dataType: "text"
                 ,success: function(reponse){
                    console.log("Le script fonctionne !!");
                    alert(reponse);
                }
                 ,error:function(){
                   console.log(" error !!");
                   alert('Ajax => Erreur ');
               }
       }); 
 }



Et bien sûr... dans ton checkbox :
<td width="38" >
  <span class="Style10">
     <div <?='class="'.$class.'"' ?> align="center">
        <input type="checkbox" name="accuseimput"   <?=$checked  ?>   onclick="UPDATE_servicecourrier('<?=$liste_etu['id_sc']?>')"  />
     </div>
   </span>
</td>
0
ça fonctionne toujours pas.
voici ce que donne firebug:

SyntaxError: missing ) after argument list


UPDATE_servicecourrier('<?=$liste_etu['id_sc']?>')
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 mars 2014 à 16:52
J'ai testé ce code sur mon poste et ne rencontre aucun souci... impossible de reproduire ton erreur....

Tu peux modifier l'INPUT comme suit :

  <input type="checkbox" name="accuseimput"   <?=$checked  ?>   onclick="alert(' GO UPDATE..');UPDATE_servicecourrier('<?=$liste_etu['id_sc']?>')"  />



Un Popup Apparait cette fois ??


Par contre... tu n'as toujours pas répondu à l'une de mes questions....

SI TU FAIS : EXAMINER L'ELEMENT .. qu'as tu ???





Par exemple... moi j'ai :
<input type="checkbox" onclick="alert(' GO UPDATE..');UPDATE_servicecourrier('41')" name="accuseimput"></input>
0
ça marche mais juste remplacé
onclick="UPDATE_servicecourrier('<?=$liste_etu['id_sc']?>')" 
par
onclick="UPDATE_servicecourrier('<?php echo $liste_etu['id_sc']; ?>')"

en tenant compte biensur de modifications que tu as apporté.

merci beaucoup @jordane45
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 mars 2014 à 17:23
C'est étonnant que le fait d'utiliser la syntaxe avec le ECHO marche alors qu'avec l'autre..ça ne marche pas.... bizarre....

Enfin bon.. ce fut laborieux.. mais l'essentiel c'est que maintenant ça marche.

J'espère en tout cas que tu as bien compris aussi comment utiliser FireBug pour voir les erreurs de script...
Et aussi : Examiner l'élément pour regarder le code html genéré dans tes pages.
(Ainsi que l'utilisation des Echo / Print_r .. qui permettent de déboguer tes pages PHP et voir ce qu'il s'y passe;..)

Cela te servira à résoudre plus facilement tes soucis... (et aussi à mieux nous les expliquer.. ...j'espère...).
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
18 mars 2014 à 17:28
oui merci encore
0
Rejoignez-nous