Structure conditionnelle

Résolu/Fermé
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 - 6 mai 2019 à 16:15
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 - 6 mai 2019 à 23:40
Bonjour,
J'ai souhaité faire une condition avec 3 variables, c'est 3 cases à cocher. Je voudrais vous demander votre aide pour que je puisse simplifier cela. Pour l' INSERT dans ma BDD et dans mon dossier où sont stocker les fichiers cela fonctionne parfaitement, mais je trouve cela très lourd et peu compréhensible. Bien entendu je vous donne uniquement la partie concernée, toutes les variables sont définis en amont.
Je vous remercie.
			$dossier = 'compte_rendu/';
			$extension_valide = array('pdf', 'doc', 'docx');
			$extension_upload = strtolower(  substr(  strrchr($fileName, '.')  ,1)  );
			
			if ($crag AND !$crbur AND !$crfd) {
				$file_new = '' .'AG_'.$datecr. '.' . $extension_upload;
				$file_dest = $dossier.$file_new;
				$file_upload = move_uploaded_file($fileTemp, $file_dest);
			} else if (!$crag AND $crbur AND !$crfd) {
				$file_new = '' .'BUR_'.$datecr. '.' . $extension_upload;
				$file_dest = $dossier.$file_new;
				$file_upload = move_uploaded_file($fileTemp, $file_dest);
			} else if (!$crag AND !$crbur AND $crfd) {
				$file_new = '' .'FD_'.$datecr. '.' . $extension_upload;
				$file_dest = $dossier.$file_new;
				$file_upload = move_uploaded_file($fileTemp, $file_dest);
			} else {
				$erreur = "<span class='erreur'>Sélectionne uniquement une des trois options !</span>";
			}

4 réponses

jee pee Messages postés 40470 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 novembre 2024 9 427
Modifié le 6 mai 2019 à 17:10
Bonjour,

Si la seule différence au niveau du test c'est le préfixe, AG_, BUR_ F8 tu peux au niveau de ces tests, créer une nouvelle variable qui contient ce préfixe, et constituer les 3 variables après le test.

Et plutôt que 3 cases à cocher, si la réponse doit être unique, tu ferais mieux dans ton formulaire de mettre un radio bouton : http://www.lehtml.com/htmlplus/fmradio.htm

0
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 32
6 mai 2019 à 20:12
Bonjour,
Merci pour ton retour. Pour les cases à cocher type radio je n'y avait pas pensé. je vais revoir ma structure.
0
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 32
6 mai 2019 à 22:34
Bonjour,
Je reviens sur mon problème de bouton radio. En fait dans mon cas je ne peux pas utiliser les boutons radio je crois. Voici la structure de ma table si vous pouvez me dire ce que vous en pensez. Merci
mysql> show full columns from cdc_compte_rendu;
+--------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+------------------------------------+
| Field        | Type         | Collation       | Null | Key | Default | Extra          | Privileges                      | Comment                            |
+--------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+------------------------------------+
| idcr         | int(11)      | NULL            | NO   | PRI | NULL    | auto_increment | select,insert,update,references | ID Compte rendu                    |
| compte_rendu | varchar(255) | utf8_general_ci | NO   |     | NULL    |                | select,insert,update,references | Nom du Compte rendu                |
| datecr       | date         | NULL            | NO   |     | NULL    |                | select,insert,update,references | Date du Compte rendu               |
| crag         | tinyint(1)   | NULL            | NO   |     | NULL    |                | select,insert,update,references | 1 Compte rendu Assemblée Générale  |
| crbur        | tinyint(1)   | NULL            | NO   |     | NULL    |                | select,insert,update,references | 1 Compte rendu bureau              |
| crfd         | tinyint(1)   | NULL            | NO   |     | NULL    |                | select,insert,update,references | 1 Compte rendu Fédération musicale |
+--------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+------------------------------------+
6 rows in set (0.03 sec)
0
jee pee Messages postés 40470 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 novembre 2024 9 427
Modifié le 6 mai 2019 à 23:00
Les radios boutons remplacent les cases à cocher.

Tu as un radio bouton et en plus cela initialise le préfixe

<form method="POST">
    <input type="radio" name="btprefix" value="AG_"/>Option 1 - 
    <input type="radio" name="btprefix" value="BUR_"/>Option 2 - 
    <input type="radio" name="btprefix" value="FD_"/>Option 3 - 
    <input type="submit" value="OK"/>
</form>

<?php
print $_POST['btprefix'];
?>


Donc tu peux simplifier tout ton code par (mes lignes sont des exemples car je ne fais pas de php)

$dossier = 'compte_rendu/';
$extension_valide = array('pdf', 'doc', 'docx');
$extension_upload = strtolower(  substr(  strrchr($fileName, '.')  ,1)  );
$btprix = .... ($_POST['btprefix']; ???)

$file_new = '' .'$btprix.$datecr. '.' . $extension_upload;
$file_dest = $dossier.$file_new;
$file_upload = move_uploaded_file($fileTemp, $file_dest); 


0
jee pee Messages postés 40470 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 novembre 2024 9 427
6 mai 2019 à 23:03
mais si tu stockes la réponse des cases à cocher ...

avoir trois champs, ce n'est peut être pas la meilleure solution pour connaitre le type de l'objet
0
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 32
6 mai 2019 à 23:40
Bonjour
J'ai trouvé la solution à mon problème en ayant les boutons radio. J'ai souhaité également avoir un prefixe different pour mes 3 variables.
Voilà ce que ça donne.
Merci.
$cr 		= !empty($_POST['cr']) ? $_POST['cr'] : '';
$crag 		= !empty($_POST['crag']) ? $_POST['crag'] : '';
$crbur 		= !empty($_POST['crbur']) ? $_POST['crbur'] : '';
$crfd 		= !empty($_POST['crfd']) ? $_POST['crfd'] : '';
// On initialise les variables à 0
$crag 	= 0; 
$crbur 	= 0; 
$crfd 	= 0;

// On test le choix du visiteur
if ($cr == 'crag') 
$crag = 1; 

if ($cr == 'crbur')
$crbur = 1;

if ($cr == 'crfd')
$crfd = 1;

			$dossier = 'compte_rendu/';
			$extension_valide = array('pdf', 'doc', 'docx');
			$extension_upload = strtolower(  substr(  strrchr($fileName, '.')  ,1)  );
		
			if ($crag)
				$file_new = '' .'AG_'.$datecr. '.' . $extension_upload;

			if ($crbur)
				$file_new = '' .'BUR_'.$datecr. '.' . $extension_upload;

			if($crfd)
				$file_new = '' .'FD_'.$datecr. '.' . $extension_upload;

			$file_dest = $dossier.$file_new;
			$file_upload = move_uploaded_file($fileTemp, $file_dest);

	echo '<p>';
		echo '<input type="radio" id="crag" class="css-crag" name="cr" value="crag"/>';
		echo '<label>Compte rendu Assemblée Générale !</label>';
	echo '</p>';
	echo '</tr><tr>';
	echo '<p>';
		echo '<input type="radio" id="crbur" class="css-crbur" name="cr" value="crbur"/>';
		echo '<label>Compte rendu Bureau</label>';
	echo '</p>';
	echo '</tr><tr>';
	echo '<p>';
		echo '<input type="radio" id="crfd" class="css-crfd" name="cr" value="crfd"/>';
		echo '<label>Compte rendu Fédération musicale</label>';
	echo '</p>';
0