PHP array dans une boucle while

  • Auteur de la discussion Auteur de la discussion webac
  • Date de début Date de début
WRInaute occasionnel
Bonjour à tous,

j'ai un petit soucis avec une boucle dans laquelle j'ai un array qui s'alimente par cette même boucle.

je ne sais pas comment faire pour extraire les valeurs de mon array afin de les utiliser dans une requête.

voici mon code :

Code:
while ($i<=count(@$tableau)){ 
  $ean =substr($tableau[$i],6,6);
  $qte =substr($tableau[$i],26,7)/100;


$lib="SELECT lib, qtecolis FROM produits WHERE code='$ean'";
$res=mysql_query($lib);
while ($cl=mysql_fetch_array($res)){
$codimport= array("montab"=>array($i=>$ean));
$import =$codimport["montab"][$i];

$i++;

}


Pouvez vous m'éclairer sur lamaniere dont je dois proceder pour effectuer la requête suivante qui ne sera pas dans cette même boucle :

Code:
$sql = "SELECT * from produits WHERE commande='oui' AND NOT IN ('$import') ORDER BY cat ASC";

Merci d'avance
 
WRInaute occasionnel
implode va effectivement m'être utile mais mon soucis principal est d'extraire les valeurs de mon array, je n'arrive a récupérer que le dernier enregistrement.

Avez vous une piste.
 
WRInaute occasionnel
non je souhaite récupérer toutes les valeurs du tableau mais je n'arrive à récuperer que la derniere.
 
WRInaute impliqué
T'aurais pas plus facile avec un foreach() plutot qui while() ?

bon sinon c'est pas très clair et le code est incomplet donc c'est pas évident de comprendre ce que tu cherche à faire :?
 
WRInaute occasionnel
j'obtiens Notice: Array to string conversion in ........

une autre idée peut être?

voici mon code complet (soyez indulgents je sais que ce n'est pas très propre):

Code:
<?
session_start();
//si la variable de session login n'existe pas cela siginifie que le visiteur n'a pas de session ouverte, il n'est donc pas logué ni autorisé à acceder à l'espace membres
if(!isset($_SESSION['login'])) {
  echo '<center>Vous n\'êtes pas authentifié et donc pas autorisé à acceder à cette zone<br>merci de vous identifier</center>';
  include('login.php');
  exit;
}
?>
<style type="text/css">  
#cache {
    position:absolute; top:200px; z-index:10; visibility:hidden;
}
</style>
<div id="cache"><table width=400 bgcolor=#000000 border=0 cellpadding=2 cellspacing=0><tr><td align=center valign=middle><table width=100% bgcolor=#FFFFFF border=0 cellpadding=0 cellspacing=0><tr><td align=center valign=middle><font face="Verdana" size=4 color=#000000><br>Import de la commande en Cours...<br><img src="loading.gif"></img><br><br></font></td></tr></table></td></tr></table></div>

<SCRIPT LANGUAGE="JavaScript">
var nava = (document.layers);
var dom = (document.getElementById);
var iex = (document.all);
if (nava) { cach = document.cache }
else if (dom) { cach = document.getElementById("cache").style }
else if (iex) { cach = cache.style }
largeur = screen.width;
cach.left = Math.round((largeur/2)-200);
cach.visibility = "visible";

function cacheOff()
	{
	cach.visibility = "hidden";
	}
window.onload = cacheOff
</SCRIPT>


<?
include ('connexion.php'); 

//PARCOURS LE REPERTOIRE DES VIDAGES LE FICHIER CORRESPONDANT
if ($handle = opendir('X:/')) {    
while (false !== ($file = readdir($handle))) {        
//cherche le fichier CMZnumerovideor.XXX
if (preg_match('`CZM'.$_SESSION['videor'].'\.([0-z])`', $file)){           
//place les lignes du fichier texte correspondant dans un tableau
@$tableau = @file("X:/$file");        
}   
}    
closedir($handle);}
$ean = ""; 
$qte="";
//debut de lecture du fichier à la ligne n°2 et recup code + qte
$i=1;
$t=0;//Variable pour le total colis
echo '<center><h1>Récapitulatif de votre Commande</h1></center><br>';
echo '<form id=form1 name=form1 method=post>';
echo '<center><table cellspacing=5 width=50%>';
echo '<tr><td align=center bgcolor=#9AB096><font size=3 color=black><b>Photo</td><td align=center bgcolor=#9AB096><font size=3 color=black><b>Code</td><td align=center bgcolor=#9AB096><font size=3 color=black><b>Libellé</td><td align=center bgcolor=#9AB096><font size=3 color=black><b>Qté/Colis</td><td align=center bgcolor=#9AB096><font size=3 color=black><b>Quantité</td><tr>';
while ($i<=count(@$tableau)){ 
  @$ean =substr($tableau[$i],6,6);//position du code dans le fichier
  @$qte =substr($tableau[$i],26,7)/100;//position de la quantité dans le fichier

if ($qte!='0' ){ 
$couleur = "#9AB096";
	if ($i % 2 ==1)
	{
	$couleur = "#F7FCD7";
	}
//Recupération du libellé correspondant au code
$lib="SELECT lib, qtecolis FROM produits WHERE code='$ean'";
$res=mysql_query($lib);
while ($cl=mysql_fetch_array($res)){
$codimport= array("montab"=>array($i=>$ean));
@$import =$codimport["montab"][$i];
$test= implode (",", array_values($codimport));
echo $test;



$libelle=$cl['lib'];
$colis=$cl['qtecolis'];}
//affichage du tableau
echo "<tr><td bgcolor=$couleur><center><span title=\"header=[<center><img src='photos/$ean.jpg' style='vertical-align:middle'>&nbsp;&nbsp;] body=[$libelle]\" style=\"vertical-align:middle;font-family:arial;font-size:20px;font-weight:bold;color:#ABABAB;cursor:pointer\"><img src=\"photos/$ean.jpg\" height=30 border=0></img></center></span></td>\n";
echo "</td><td bgcolor=$couleur>\n";
echo"<center><input type=\"hidden\" name=\"code[]\" value=\"$ean\"><font size=2 color=black><b>$ean</b></font></center>\n"; 
echo "<td bgcolor=$couleur><font size=2 color=black><img src=photos\pdt3100.png height=30 border=0 alt='Produit importé depuis le vidage PDT3100'></img><b>$libelle</b></font>\n"; 
echo "</td><td bgcolor=$couleur>\n";
echo"<center><font size=2 color=black><b>$colis</b></center></td><td bgcolor=$couleur>\n";
echo"<center><input type=\"text\" name=\"qte[]\" value=\"$qte\" size=\"3\"></center>\n";
echo"</tr>\n";}
$i++;
//incrementation total colis
$t=$t+$qte;
} 
//echo '</table></center>';

//Message en cas de fichier non trouvé
if($t==0){echo '<center>Commande non trouvée ou vide<br>Merci de scanner votre commande en mode Commande avec votre PDT3100<BR>et de la vider via Communication Portable MultiUser ou de la saisir manuellement ci-dessous</center><br><br>';}
echo "<center><img src=photos\pdt3100.png height=30 border=0 alt='Produit importé depuis le vidage PDT3100'></img>signifie que le produit à été importé depuis le vidage PDT3100</center>";
//Tableau ensemble des produits

$date = date("Y-m-d"); 
$magasin= $_SESSION['login'];

$numsemaine=strftime("%U");
$recupidcom="SELECT Idcom FROM commande WHERE Mag='$magasin' AND Sem='$numsemaine'";
$res= mysql_query($recupidcom);
if ($cl = mysql_fetch_array($res)){$idcom=$cl['Idcom'];}
else{$idcom = date ('dmYHms');}

@$sql = "SELECT * from produits WHERE commande='oui' AND code NOT IN ('$import') ORDER BY cat, condi, sec1, sec2 ASC";

$resultat = mysql_query ($sql);

@$nblignes = mysql_num_rows($resultat); 
$i = 0;
while (@$cl = mysql_fetch_array ($resultat))
{

$couleur = "#F7FCD7";
$i++;

	if ($i % 2 ==1)
	{
	$couleur = "#9AB096";
	}
  $lib       = $cl['lib'];
  $cod       = $cl['code'];
  $qtecolis  = $cl['qtecolis'];
  $sec1      = $cl['sec1'];
  $sec2      = $cl['sec2'];
  $condi     = $cl['condi'];
  @$pvc      = $cl['pvc'];
  $pvm       = $cl['pvm'];

  
  echo "<tr BGCOLOR=$couleur>";
  echo "<td align=center><span title=\"header=[<center><img src='photos/$cod.jpg' style='vertical-align:middle'>&nbsp;&nbsp;] body=[$lib <br>$condi <br>Prix de vente: $pvc €]\" style=\"vertical-align:middle;font-family:arial;font-size:20px;font-weight:bold;color:#ABABAB;cursor:pointer\"><img src=\"photos/$cod.jpg\" height=30 border=0></img></center></span>";
  echo "<td align=left><input type='hidden' name='code[]' value='$cod' /><font size=2 color=black><b>$cod<b>";
  echo "<td align=left><input type='hidden' name='commande[]' value='$lib' /><font size=2 color=black><b>$lib $condi<b>";
  echo "<td align=center><font size=2 color=black><b>$qtecolis</b><input type='hidden' name='qtecolis[]' value='$qtecolis' /><input type='hidden' name='pvm[]' value='$pvm'>";
  echo "<input type='hidden' name='magasin[]' value='$magasin' />
  <input type='hidden' name='idcom[]' value='$idcom' />
  <input type='hidden' name='dat[]' value='$date' /></font></td>";
  echo "<td><center><font size=2 color=black><b><input type='text' name='qte[]' size='3'/></font></center</td>";
  echo "</tr>";
}

echo "</table>";

//Suppression du fichier texte après traitement
if ($handle = opendir('X:/')) {    
while (false !== ($file = readdir($handle))) {        
if (preg_match('`CZM'.$_SESSION['videor'].'\.([0-z])`', $file)){  
unlink("X:/$file");
}
}
closedir($handle);}
echo $import;
mysql_close()

?>
      </span><br />
    </div>
    <div align="center"><img src="../distriservices/valid.gif" style="cursor: pointer" onClick="Cloturer();" tabindex=<? echo $i ;?>></div>

<script src="boxover.js"></script>

<!--
<center>Total Colis : <? //echo $t;?></center>
-->
 
Nouveau WRInaute
L'affectation d'une valeur dans un tableau se définit ainsi : $array[] = ...

Dans ton code, $import est une chaîne, pas un tableau.
 
WRInaute occasionnel
peux tu approfondir, je débute avec les tableaux et j'avoue ne pas avoir compris ta réponse Genesys
 
WRInaute occasionnel
UP

Quelqu'un pourrait m'aiguiller?
j'ai beau parcourir les docs sur internet je n'arrive pas a faire ce que je veux.
 
Discussions similaires
Haut