CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [php]Case à décocher

DébutPage précedente
1
Page suivantePage suivante
Yechiko Yechiko
MP
Niveau 17
14 mars 2017 à 23:38:12

Bonsoir !

Voila mon problème :
Je souhaite faire une requête sql INSERT INTO sur les case que je coche, cela marche avec un onclick = "this.form.submit()" pour recuperer le $_post.

bref le problème c'est que je veux que quand je décoche la case , je récupère un $_post, sauf que $_post ne prend pas en compte les case décocher ...

du coup j'ai beau faire des if des else etc etc je ne recupère jamais la valeur du submit d'une case décocher ...

On parle souvent d'une technique ou l'on met un input hidden a coté d'une case a cocher , mais sans vraiment dire comment faire ...

en gros un exemple de code :

<?php 
foreach($_POST['Checkbox'] as $lettre) // Pour chaques case à cocher
	{
	if (!empty($lettre))// Si la case est n'es pas vide "AJOUT de l'appareil de mesure"
		{
		echo $lettre;
		$sql_query=mysql_query("SELECT * FROM `jointure_capteur_adm` WHERE `id_capteur`=".$_GET['capteur_id']." AND `id_di2`=".$_GET['di_id']." AND `lettre_adm`='$lettre'");			
		echo mysql_num_rows($sql_query);
		if (mysql_num_rows($sql_query) == 0)
			{
			$query = $DBcon->query("SELECT `nom`,`n_id`,`date_valide` FROM `appareil_de_mesures` WHERE `lettre_adm` = '$lettre'");
			$admRow=$query->fetch_array();
			$nom= $admRow['nom'];
			$id= $admRow['n_id'];
			$date= $admRow['date_valide'];
			$sql_query="INSERT INTO jointure_capteur_adm(id_capteur,id_di2,nom_adm,n_id_adm,lettre_adm,date_valide_adm) VALUES('".$_GET['capteur_id']."','".$_GET['di_id']."','$nom','$id','$lettre','$date')";
			mysql_query($sql_query);
			}
		} 
	else // sinon (si ma case est vide) "SUPPRESSION de l'appareil de mesure"
		{echo test;
		$sql_query=mysql_query("SELECT * FROM `jointure_capteur_adm` WHERE `id_capteur`=".$_GET['capteur_id']." AND `id_di2`=".$_GET['di_id']." AND `lettre_adm`='$lettre'");			
		if (mysql_num_rows($sql_query) == 1)
			{
			$sql_query="DELETE FROM `jointure_capteur_adm` WHERE `id_capteur`=".$_GET['capteur_id']." AND `id_di2`=".$_GET['di_id']." AND `lettre_adm`='$lettre'";
			mysql_query($sql_query);
			}
		}
	} 
?>

puis les cases :

<?php $result = mysql_query("SELECT lettre_adm FROM jointure_capteur_adm WHERE id_di2 = ".$_GET['di_id']." AND id_capteur = ".$_GET['capteur_id']." AND `lettre_adm` = 'A'");

				if (mysql_num_rows($result) == 0) { ?>
					<input name="Checkbox[]" onchange="this.form.submit()" type="checkbox" value="A">A</td>
				<td style="height: 23px"> 
				<?php }else{ ?>
				
					<input name="Checkbox[]" onchange="this.form.submit()" type="checkbox" checked="checked" value="A">A</td>
				<td style="height: 23px"> <?php } ?>

une case A , déja cocher au rafraichissement de page si ma requête dit qu'elle a déjà été cocher auparavent , sinon on affiche la case sans coche.

Merci !

darkiron_natty darkiron_natty
MP
Niveau 8
15 mars 2017 à 10:56:58

Si la case est coché elle sera à true dans post sinon non. Pour ça ta isset et array_key_exist [[sticker:p/1kkn]]

arsh222 arsh222
MP
Niveau 10
15 mars 2017 à 14:31:18

Tu pourrais faire un input caché pour chaque case case, dont la valeur serait la lettre. Le but ne serait pas d'associer un label hidden avec une case donnée mais de récupérer une liste des cases qui existent pour voir lesquelles manquent dans $_POST['Checkbox'].

affichage des checkbox

<input name="Checkbox[]" type="checkbox" value="A">A
<input name="NomsCheckbox[]" type="hidden" value="A">
// traitement du formulaire
foreach ($_POST['NomsCheckbox'] as $nom)
{
  if(in_array($nom,$_POST['Checkbox']))
  {
    //  ajout de l'appareil de mesure
  }
  else
  {
    // suppression de l'appareil de mesure
  }
}

ps : plutôt que de faire un submit dès qu'une checkbox change, ce serait plus avantageux de mettre un bouton submit qui envoie tout d'un coup

Message édité le 15 mars 2017 à 14:33:57 par arsh222
Yechiko Yechiko
MP
Niveau 17
15 mars 2017 à 17:44:12

Le 15 mars 2017 à 14:31:18 arsh222 a écrit :
Tu pourrais faire un input caché pour chaque case case, dont la valeur serait la lettre. Le but ne serait pas d'associer un label hidden avec une case donnée mais de récupérer une liste des cases qui existent pour voir lesquelles manquent dans $_POST['Checkbox'].

affichage des checkbox

<input name="Checkbox[]" type="checkbox" value="A">A
<input name="NomsCheckbox[]" type="hidden" value="A">
// traitement du formulaire
foreach ($_POST['NomsCheckbox'] as $nom)
{
  if(in_array($nom,$_POST['Checkbox']))
  {
    //  ajout de l'appareil de mesure
  }
  else
  {
    // suppression de l'appareil de mesure
  }
}

ps : plutôt que de faire un submit dès qu'une checkbox change, ce serait plus avantageux de mettre un bouton submit qui envoie tout d'un coup

Exacte ! mais c'est surtout pour l'utilisateur et l'ergonomie que je ne souhaite pas implémenter de bouton submit [[sticker:p/1kkr]]

En tout cas merci a vous deux , je vais essayer ça !

darkiron_natty darkiron_natty
MP
Niveau 8
15 mars 2017 à 20:09:16

Dans ce cas angular [[sticker:p/1kkn]]

Omeg[a]typez Omeg[a]typez
MP
Niveau 10
25 mars 2017 à 12:00:41

T'as pensé à ajax ?


<script type="text/javascript">
  $(document).ready(function(){
    var isChecked = $("input:checkbox").is(":checked") ? 1:0; 
    $.ajax({
            url: '...',
            type: 'POST',
            data: { strID:$("input:checkbox").attr("id"), strState:isChecked }
    });        
  });
</script>
Yechiko Yechiko
MP
Niveau 17
25 mars 2017 à 15:23:18

Le 25 mars 2017 à 12:00:41 Omeg[a]typez a écrit :
T'as pensé à ajax ?


<script type="text/javascript">
  $(document).ready(function(){
    var isChecked = $("input:checkbox").is(":checked") ? 1:0; 
    $.ajax({
            url: '...',
            type: 'POST',
            data: { strID:$("input:checkbox").attr("id"), strState:isChecked }
    });        
  });
</script>

J'y suis arriver avec du code PHP et l'input hidden [[sticker:p/1kkn]]

Mais merci !

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment