CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[php]Case à décocher

Yechiko
Yechiko
Niveau 20
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
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
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
Niveau 20
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
Niveau 8
15 mars 2017 à 20:09:16

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

Omeg[a]typez
Omeg[a]typez
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
Niveau 20
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 !

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment