[RESOLU] Array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Array

Re: [RESOLU] Array

par Philippe_Pairon » 30 sept. 2014, 23:36

OK ... J'ai trouvé !!!
Je m’emmêlais les pinceaux avec les quotes et double quotes

En tout cas, mille mercis pour vos réponses, ça m'a donné la piste à suivre

Phil

Re: Array

par Philippe_Pairon » 30 sept. 2014, 20:58

comme tu as plusieurs variables ton formulaire initial aura cette allure
$chaine = "<form method = 'post' action ='triuc.php' >
for ($i = 1 ; $i <= $nb_produits; $i++)
{
$chaine .= "<input type = 'text' name = 'variable1[$i]' />
"<input type = 'text' name = 'variable2=2[$i]' />";

}
$chaine .= "<button type = 'submit' > envoyer'> </form>";
print "$chaine;et truc.php
for ($i = 1; $i <= $nb_produits; $i++)
{
$variable_1 = $variable1[$i];
$variable_2 = $variable2[$i];
//quil faut exploiter aussitôt
}

Merci, mais je ne m'en sort pas ... mais il faut reconnaître que je suis nul ...
Voici mon formulaire initial :
en html : <form action="cde.php" method="post" name="formulaire" id="formulaire">
...
... quelques <input> pour des variables "uniques"
...
plus loin en php
<?php
$ligne = 2 ;
$v = 1 ;
echo '<table width="100%" border="0">';

//*début de la boucle
while (($ligne - 1) < $data->sheets[0]['numRows']) //$ligne-1 car les données viennent d'une feuille Excel et commencent à la ligne 2
{

echo '<tr>';
echo '<td width="9%" align="left">';
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$data->sheets[0]['cells'][$ligne][2].'</b></font>';
echo '</td>';

echo '<td width="57%" align="left">';
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$data->sheets[0]['cells'][$ligne][1].'</b></font>';
echo '</td>';


echo '<td width="12%" align="center">';
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$data->sheets[0]['cells'][$ligne][3].'</b></font>';
echo '</td>';


echo '<td width="12%" align="center">';
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$data->sheets[0]['cells'][$ligne][4].'</b></font>';
echo '</td>';

echo '<td width="10%" align="center">';
echo '<input type="text" name="qty'.$v.'" id="qty'.$v.'" size="5">';
echo '<input type="hidden" name="ref'.$v.'" id="ref'.$v.'" value="'.$data->sheets[0]['cells'][$ligne][2].'">';
echo '<input type="hidden" name="art'.$v.'" id="art'.$v.'" value="'.$data->sheets[0]['cells'][$ligne][1].'">';
echo '<input type="hidden" name="priu'.$v.'" id="priu'.$v.'" value="'.$data->sheets[0]['cells'][$ligne][3].'">';
echo '<input type="hidden" name="priq'.$v.'" id="priq'.$v.'" value="'.$data->sheets[0]['cells'][$ligne][4].'">';


echo '</td>';
echo '</tr>';
$ligne = ($ligne + 1);
$v = ($v + 1);
//*fin de la boucle
}

echo '</table>';
?>
Je ne demande bien sûr pas de faire le boulot à ma place mais par quelles instructions puis-je remplacer les lignes en rouge ci-dessus pour remplir 5 tableaux
$qy / $ref / $art / $priu et $priq
que je pourrais exploiter dans ma page 'target' cde.php sous format de variables $qtyx / $refx / $artx / $priux et $priqx où x représente le n° de record ?
Ceci fonctionne très bien mais m'oblige dans ma page target a faire ceci :
<?php
$ref1 = $_POST["ref1"];
$art1 = $_POST["art1"];
$priu1 = $_POST["priu1"];
$priq1 = $_POST["priq1"];
$qty1 = $_POST["qty1"];

$ref2 = $_POST["ref2"];
$art2 = $_POST["art2"];
$priu2 = $_POST["priu2"];
$priq2 = $_POST["priq2"];
$qty2 = $_POST["qty2"];

... etc, etc jusqu'à 40 car c'est la limite actuelle du nombre d'articles ... mais c'est ch... car d'une part je suis limité à 40 et d'autre part, si je veux augmenter ce nombre, je dois chaque fois faire un copier/coller du process et changer manuellement le n° de la variable.

Un tout grand merci d'avance et mille excuses pour "l'immenserie de mon incultance" comme dirait l'autre

Re: Array

par sirakawa » 30 sept. 2014, 17:04

comme tu as plusieurs variables ton formulaire initial aura cette allure
$chaine = "<form method = 'post' action ='triuc.php' >
for ($i = 1 ; $i <= $nb_produits; $i++)
{
$chaine .= "<input type = 'text' name = 'variable1[$i]' />
"<input type = 'text' name = 'variable2=2[$i]' />";

}
$chaine .= "<button type = 'submit' > envoyer'> </form>";
print "$chaine;et truc.php
for ($i = 1; $i <= $nb_produits; $i++)
{
$variable_1 = $variable1[$i];
$variable_2 = $variable2[$i];
//quil faut exploiter aussitôt
}

Re: Array

par ynx » 30 sept. 2014, 16:44

Salut,

Le tableau sera bien transmis à la page target de la même façon que tous les autres paramètres de ton formulaire.

Voici un petit exemple montrant l'accès au tableau :
<?php
if (!empty($_POST['qte'])) {
	// tableau des quantités
	$tabQte = $_POST['qte'];

	// parcours du tableau des quantités
	foreach ($tabQte as $key => $qte) {
		echo 'Quantite ' . $key . ' : ' . $qte . '<br />';
	}

	// acces direct à une quantité depuis le tableau des quantités
	echo 'Quantite 3 : ' . $tabQte[3] . '<br />';
}
?>

<form method="post">
<?php for ($i = 0; $i < 5; $i++) : ?>
	<input type="text" name="qte[<?php echo $i?>]" value="<?php echo 'test' . $i; ?>" />
<?php endfor; ?>
	<input type="submit" value="Envoyer" />
</form>
Bonne journée

Re: Array

par Philippe_Pairon » 30 sept. 2014, 16:16

On peut écrire
*<input type = 'text" name = 'nom[]' />
etle post récupère un tableau $nom
ou avec une boucle sur $i
<input type = 'text" name = 'nom[$i]' />
Merci, ça me donne déjà une piste mais en fait ceci crée un tableau dans ma page formulaire, si je comprend bien ?
Je pourrais donc remplacer ma création de variables actuelle :

echo '<input type="text" name="qty'.$i.'" id="qty'.$i.'" size="5">';
par
echo '<input type="text" name="'.qty[$i].'" id="'.qty[$i].'" size="5">';

... mais est-ce que ce tableau va passer tout seul dans ma page target ?
Si oui, quelle syntaxe dois utiliser pour afficher une des variables ? $qty[$i] ?
Si non, quelle instruction dois-je mettre dans ma page target pour récupérer ce tableau ?

Merci

Re: Array

par sirakawa » 30 sept. 2014, 14:20

On peut écrire
*<input type = 'text" name = 'nom[]' />
etle post récupère un tableau $nom
ou avec une boucle sur $i
<input type = 'text" name = 'nom[$i]' />

Array

par Philippe_Pairon » 30 sept. 2014, 13:48

Bonjour,
J'ai une page php ou se trouve un formulaire method =post
Dans ce formulaire, il y a une boucle qui mémorise des variables 'dynamiques' (je ne sai pas si c'est le terme exact) avec un n° en fonction du pasage dans la boucle:
ref1 / art1 / priu1 / priq1 / qty1 ..... boucle ..... ref2 / art2 / priu2 / priq2 / qty2 ... etc
Tout va très bien à ce niveau.

Je coince par contre dans ma page target ou je récupère actuellement les variables comme suit :
$ref1 = $_POST["ref1"];
$art1 = $_POST["art1"];
$priu1 = $_POST["priu1"];
$priq1 = $_POST["priq1"];
$qty1 = $_POST["qty1"];

$ref2 = $_POST["ref2"];
$art2 = $_POST["art2"];
$priu2 = $_POST["priu2"];
$priq2 = $_POST["priq2"];
$qty2 = $_POST["qty2"];

... etc jusqu'à 40 !!! (Pour le moment je sais que j'ai un maximum de 40 articles, donc 40 'boucles' sur le fichier de base) ... et la même chose pour le traitement et l'affichage de ce variables avec un if() pour voir si elle existe ou non ... ça fait quelques lignes !!!
Voici le code pour la première variable (1) ... il est mulriplié par 40 !!!
if ($qty1 > 0)
{
echo '<tr>';
echo '<td width="9%" align="left">'; 
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$ref1.'</b></font>';
echo '</td>';
echo '<td width="57%" align="left">'; 
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$art1.'</b></font>';
echo '</td>';
echo '<td width="12%" align="center">'; 
if ($qty1 > 4){
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$priq1.'</b></font>';
}
else {
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$priu1.'</b></font>';
} 
echo '</td>';
echo '<td width="12%" align="center">'; 
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$qty1.'</b></font>';
echo '</td>';
echo '<td width="10%" align="right">'; 
if ($qty1 > 4){
$prixtot1 = ($priq1 * $qty1);
}
else {
$prixtot1 = ($priu1 * $qty1);
}
$prixtot1 = number_format($prixtot1, 2);
echo '<font face="Arial, Helvetica, sans-serif" size="2"><b>'.$prixtot1.'<img src="../images/trans.gif" width="12" height="8" align="absmiddle"></b></font>';
$totalgeneral = ($totalgeneral + $prixtot1);
echo '</td>';
echo '</tr>';
echo '<input type="hidden" name="ref1" id="ref1" value="'.$ref1.'"><input type="hidden" name="art1" id="art1" value="'.$art1.'"><input type="hidden" name="qty1" id="qty1" value="'.$qty1.'"><input type="hidden" name="prixtot1" id="prixtot1" value="'.$prixtot1.'">';
}



Je suis persuadé qu'il existe un moyen de mettre ces variables dans un array et j'ai consulté quelques forums et le code PHP mais je n'y comprends pas grand chose.
Comme mes connaissance en PHP sont plus que limitées (se situent au niveau de la cote 5000 d'une vielle mine désafectée) Je me tourne vers vous pour poser 2 questions :
1°) Comment puis-je mettre ces variables en tableau
2°) Quelle syntaxe dois-je utiliser pour récupérer la variable dans le tableau (ex : $qty1).

Un tout grand merci d'avance