[php] - Problème avec un switch / case - RESOLU - merci @ tous ;)

c’teu méthode de boeuf :confused: … c’est bien du dalai tout craché ça :paf: …

Pas de ma faute si il a mal conçu son bidule à la base :o

L’important c’est que ca fonctionne :smiley: spa mon métier informaticien moi, suis déjà tout content d’avoir pu en faire autant pour être honnête (grâce à vous bien souvent).

bon par contre interdiction de saisir des ’ ou des " hein :smiley: sinon ha marche pu :lol:

Je pige pas ton problème? Tu peux préfixer l’id de ton avarie, par son type. Genre :

nature.1
nature.2
nature.3 et avec un explode c’est tout vu :slight_smile:

Voui, mais ca fallait encore le savoir :slight_smile:

Pour toi c’est simple, pour moi c’est pas évident du tout qu’on peut préfixer… ca me semble, maintenant, parfaitement logique, mais bon comme tu peux le voir je bricole plus que je programme :wink:

EDIT : tiens pour la peine concrêtement en code ca donne quoi ton truc ? :smiley:

Bon je fais ca avec substr… quand j’aurais avancé je vous poste le bourdail ^^

préparez les filtres écran, vous allez avoir mal aux yeux je sens :smiley:

Ok j’ai donc refait le truc SANS les switch, finalement c’est plus évolutif avec le substr()

Alors tout d’abord je génère mon optgroup (et mon array ^^) :

donc deux fichiers $str et $str2 :wink:

// je coupe la partie SQL, RAF ^^
$str = '<?php $NatureAvaries = array(';
$str2 = '<optgroup label="Nature Avarie" name="nature">';
$query = "SELECT * FROM avaries";
$requeteID = mysql_query($query);

while ($data=mysql_fetch_assoc($requeteID))
{
$str .= '\''.$data['idNature'].'\'=>\''.$data['Nature'].'\',';
$str2 .= '<option value="natu.'.$data['idNature'].'">'.$data['Nature'].'</option>';
}
$str .= ');?>';
$str2 .= '</optgroup>';

if ($fp = fopen("nature_avaries.php","w"))
{
	fwrite ($fp,$str . "\r\n");
	fclose($fp);
	echo '<p>Fichier array(nature_avaries) généré avec succès</p>';
}
else
{
	echo '<p>Erreur de génération du fichier array(nature_avaries)</p>';
}
if ($fp = fopen("optgroup.php","w"))
{
	fwrite ($fp,$str2);
	fclose($fp);
	echo '<p>Fichier optgroup généré avec succès</p>';
}

?>

Ensuite mon select, qui fait un include sur le fichier au dessus (le reste n’étant pas dynamique, c’est codé en dur :

	<input type="hidden" value="<?php echo $idLot ?>" name="idLot">
	<select name="massAction">
	<optgroup label="Marqueur">
  <option value="marq.Normal">Normal</option>
  <option value="marq.Anormal">Anormal</option>
  <option value="marq.Annulé">Annulé</option>
	</optgroup>
	<?php include("optgroup.php"); ?>
	<optgroup label="Lieu Avarie">
  <option value="lieu.Approche">Approche</option>
  <option value="lieu.Port">Port</option>
  <option value="lieu.Port Final">Port Final</option>
	</optgroup>
	<optgroup label="Effacer">
  <option value="effa.Effacer">Effacer</option>
	</optgroup>

Et après la gestion de l’envois du formulaire :

if (isset($_POST['massAction']))
{
	$massAction = substr($_POST['massAction'],0,4);
	if ($massAction == "natu")
	{
  foreach ($_POST['massVIN'] as $value)
  {
  	$massValue = substr($_POST['massAction'],5);
  	$sql = "UPDATE vehicules SET Nature = '$massValue' WHERE idVehicule='$value'";
  	mysql_query ($sql);
  }
	}
	elseif ($massAction == "marq")
	{
  foreach ($_POST['massVIN'] as $value)
  {
  	$massValue = substr($_POST['massAction'],5);
  	$sql = "UPDATE vehicules SET MarqueurV='$massValue' WHERE idVehicule='$value'";
  	mysql_query ($sql);
  }
	}
	elseif ($massAction == "lieu")
	{
  foreach ($_POST['massVIN'] as $value)
  {
  	$massValue = substr($_POST['massAction'],5);
  	$sql = "UPDATE vehicules SET Lieu='$massValue' WHERE idVehicule='$value'";
  	mysql_query ($sql);
  }
	}
	elseif ($massAction == "effa")
	{
  foreach ($_POST['massVIN'] as $value)
  {
  	$sql = "DELETE FROM vehicules WHERE idVehicule='$value'";
  	mysql_query ($sql);
  }
	}
}

:ouch:
Il a engendré un monstre!!
:smiley:
nan, je déconne: ça a l’air propre ton truc: chaque action est lisible et bien séparée. Je ne sais pas si le switch est plus efficace à l’exécution que le if, mais vue que tu ne le fait pas dans une boucle, c’est pas important.

Tu pourrait peut-être juste factoriser $massValue = substr($_POST[‘massAction’],5); ça ferait quelques lignes en moins à lire: eviter les fonctions trop longue éventuellement en en faisait une de plus, mais là c’est du détail.
:slight_smile:

Vouais, en fait à la base je devais utiliser le switch pour la partie non dynamique, mais finalement à force de me triturer la tête je commencais à m’embrouiller donc je me suis dit qu’il était plus sage de continuer avec les if ^^

Je vais modifier ca pour pas refaire le traitement à chaque fois.

Merci à tous de votre aide et de vos conseils, ca m’aide beaucoup !

Du coup autre soucis : comment faire un cochage / décochage de toutes mes checkbox depuis un bouton ?

les value sont pas suivies… c’est genre : VF1GFGDFGSDFEFZF et VF1FEZROZE564T4554 la suivante…

J’ai regardé sur google et tous assignent une valeur numérique sur les value…

cay bon, ca marche également :slight_smile: plus le courage de poster les sources, j’avais du choper un script moisie et croire que c’était value qui posait un soucis :slight_smile:

Merci à tous de nouveau !

ça veut dire pas kimouss chez toi ? :sweet:

Bah si stu veux ^^

Enfin faudra dire ce que tu consommes, parce que moi à part le coca et le lait fraise :smiley:

Ca sera pas ce week end déjà : révisions réseaux :frowning: et compta :confused: