Page 1 sur 1

Entrer une valeur dans un array via un formulaire

Posté : 05 nov. 2016, 13:31
par flolegueu
Bonjour, je m'attarde aujourd'hui sur les tableaux en php et je me pose la question suivante.
Comment envoyer une donnée via un formulaire et la rentrer dans un tableau ?

mon formulaire

<form name="client " action="index.php" method="post">

<input type="text" name="client[fistname]" class="form-control"/>
<input type="text" name="client[lastname]" class="form-control"/>
$client = array(
		
		"firstname" => "",
		"lastname" => "",
		
	);

et si le tableau ou je veux rentrer une valeur ressemble à celui là ? je fais comment
$tasks[] = array(
		"id" => 1,
		"ref" => "96ER1",
		"description" => "t-shirt",
		
	);

	$tasks[] = array(
		"id" => 2,
		"ref" => "152DE",
		"description" => "Sweet",
		
	);
Merci de votre aide ;) et bon week end à tous .

Re: Entrer une valeur dans un array via un formulaire

Posté : 05 nov. 2016, 15:03
par or 1
la valeur du champ d'un formulaire envoyée en méthode post est dans $_POST
<input type="text" name="firstname" class="form-control"/>
donne
$tasks[] = array(
"id" => 1,
"firstname" => $_POST['firstname'],
"description" => "Sweet",
);

Re: Entrer une valeur dans un array via un formulaire

Posté : 05 nov. 2016, 15:31
par Patriboom
Afin d'obtenir des valeurs $_POST en tableaux de noms, prénoms et compagnie, il suffit de modifier ton formulaire ainsi:
<input name="Prenom[]">
<input name="Nom[]">

Tu obtiendras alors
Un tableau $_POST de tableaux variables définies dans ton formulaire comme ceci:
$_POST["Prenom"][0]
$_POST["Prenom"][1]
$_POST["Prenom"][2]
$_POST["Nom"][0]
$_POST["Nom"][1]
$_POST["Nom"][2]

Re: Entrer une valeur dans un array via un formulaire

Posté : 05 nov. 2016, 20:05
par flolegueu
Merci de vos réponses, je pense que les methodes citées plus haut fonctionnent mais il vous manque des infos par rapport à mon projet pour que tout coincïde je pense. J'essaye d'éditer des devis automatiquement . Au départ je rentre via les champs input text (nom prénom ..... du client) sa ça marche sans soucis, tout s'affiche sur mon devis. Le problème est quand j'arrive au détail du devis avec les produits selectionnés dans le formulaire avant
Voulez vous un t shirt ? 
<select onchange="prix()" id="option2" name="option2" class="form-control">
<option value="100">oui</option>
<option selected="selected" value="0">Non</option>
</select>


Voulez-vous un sweet ? 
<select onchange="prix()" id="option3" name="option3"class="form-control">
<option value="100">oui</option>
<option selected="selected"  value="0">non</option>
</select>
Ensuite quand je traite le formulaire j'utilise ce code pour afficher sur mon devis le prix via $option et le nom du produit que je devine grace au prix si option2=100 alors c'est un t shirt
$option2 = $_POST['option2'];

if($option2 == '100') {$produit2 = 'Un T-shirt';}
elseif($option2 == '0') {$produit2 = '';}


$option3 = $_POST['option3'];
//définir la variable $jour
if($option3 == '200') {$produit3 = 'Un sweet';}
elseif($option3 == '0') {$produit3 = '';}
Tout marche mais je rencontre plusieurs problème, si je ne veux pas de sweet, la colone du tableau sera vide mais elle affichera quand même 0€, et même si elle n'affichait pas 0€ J'aurais une ligne vide entre 2 lignes ce qui n'est pas présentable. De plus je doute de la syntaxe de mon code, je pense que ça ne doit pas être trop religieux lol

Il existe cependant une solution à tous mes problèmes dans un coin du code
$tasks[] = array(
		"id" => 1,
		"ref" => "96ER1",
		"description" => "T shirt",
		"price" => 200,
		"quantity" => 1,
		"project_id" => 1
	);

	$tasks[] = array(
		"id" => 2,
		"ref" => "152DE",
		"description" => "Sweet",
		"price" => 500,
		"quantity" => 1,
		"project_id" => 1
	);
et ce code communique avec le tableau et il crée les colonnes dont j'ai besoin
<table style="margin-top: 30px;" class="border">
		<thead>
			<tr>
				<th class="60p">Description</th>
				<th class="10p">Quantité</th>
				<th class="15p">Prix Unitaire</th>
				<th class="15p">Montant</th>
			</tr>
		</thead>
		<tbody>
			<?php foreach ($tasks as $task): ?>
			<tr>
				<td><?php echo $task['description']; ?></td>
				<td><?php echo $task['quantity']; ?></td>
				<td><?php echo $task['price']; ?> &euro;</td>
				<td><?php
						$price_tva = $task['price']*1.2;
						echo $price_tva;
					?>
				&euro;</td>

				<?php
					$total += $task['price'];
					$total_tva += $price_tva;
				?>
			</tr>
			<?php endforeach ?>

			<tr>
				<td class="space"></td>
				<td></td>
				<td></td>
				<td></td>
			</tr>

			<tr>
				<td colspan="2" class="no-border"></td>
				<td style="text-align: center;" rowspan="3"><strong>Total:</strong></td>
				<td>HT : <?php echo $total; ?> &euro;</td>
			</tr>
			<tr>
				<td colspan="2" class="no-border"></td>
				<td>TVA : <?php echo ($total_tva - $total); ?> &euro;</td>
			</tr>
			<tr>
				<td colspan="2" class="no-border"></td>
				<td>TTC : <?php echo $total_tva; ?> &euro;</td>
			</tr>
		</tbody>
	</table>
Ma question est comment via un champs select ajouter dans tasks array, un produit si on valide oui ou non dans le champs et ainsi obtenir juste le nom et le prix et par la suite que le script php créer en fonction des produits choisis les lignes du tableau nécessaire.

Merci de votre aide précieuse ;)

Re: Entrer une valeur dans un array via un formulaire

Posté : 06 nov. 2016, 00:23
par Patriboom
D'abord je remplacerais tes parenthèses () par des crochets [] dans les noms de tes champs de produit.
Ensuite, je ferais générer par PHP ton formulaire d'offre de produits à partir de ton tableau $tasks
foreach ($tasks as $ind=>$val) {
	echo '<select name="Produit['.$ind.']">';
	echo '<option value="'.$val["Prix"].'">'.$val["Description"].'</option>';
	echo '<option value="0">Non</option>';
	echo '</select>';
}
Ainsi, ce sera plus facile de gérer tes informations, dorénavant n'ayant qu'à intervenir sur ton tableau $tasks pour tout mettre à jour.

Ensuite pour le traitement, ce sera facilité aussi du fait que toutes tes informations seront uniformisées.

Finalement pour générer ton formulaire final de confirmation par le client, tu indiqueras à PHP de sauter les champs valant 0 comme ceci:
foreach ($_POST["Produit"] as $ind => $val) {
if ($val != 0) { 
     echo '<tr><td>Je ne sais trop ce que tu veux lister, mais cela, détails du produit, quelque chose comme '.$tasks[$ind]["Descption"].'</td></tr>'; 
}

Re: Entrer une valeur dans un array via un formulaire

Posté : 06 nov. 2016, 11:08
par flolegueu
Oa merci , super idée ;) , le seul hic est que sur ma page où le formulaire apparaît, je fais un calcul en javascript, histoire d'avoir directement le prix pour faire un devis à l'oral, sans éditer le devis en pdf. Limite la fonction de calcul en php j'en ai pas besoin puisque mon javascript calcul le tout. En gros il faudrait juste que je récupère la description du produit et son prix et que ça apparaisse dans mon tableau proprement. Juste avec des $ post et qu'il n'y ait pas des trou dedans et des 0€ qui se baladent si on a pas voulu choisir ce produit (cf:photo)

Merci de votre aide ;)

Image
<tr>
				<td><?php echo $produit1; ?></td>
				<td></td>
				<td></td>
				<td>
				<?php echo $option1; ?>&euro;</td>

				
			</tr>
		
<tr>
				<td><?php echo $hebergement1; ?></td>
				<td></td>
				<td></td>
				<td>
				<?php echo $hebergement; ?>&euro;</td>

				
			</tr>
			<tr>
				<td><?php echo $produit2; ?></td>
				<td></td>
				<td></td>
				<td>
				<?php echo $option2; ?>&euro;</td>

				
			</tr>

Re: Entrer une valeur dans un array via un formulaire

Posté : 07 nov. 2016, 00:38
par Patriboom
Dans le tableau que tu affiches ci-haut, il y a des zéros. Sont-ce eux que tu cherches à éliminer?
Un petit if réglera tout cela
if (isset($blabla) && @$blabla > 0) { ... }

Non?