PHP array dans une boucle while


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

PHP array dans une boucle while

Message le Jeu Avr 30, 2009 8:25

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: Tout sélectionner
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: Tout sélectionner
$sql = "SELECT * from produits WHERE commande='oui' AND NOT IN ('$import') ORDER BY cat ASC";


Merci d'avance


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2216
Inscription: 10 Avr 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 9:27

Salut,

Si j'ai bien compris, ça peut peut-être t'aider : http://fr.php.net/manual/fr/function.implode.php

Code: Tout sélectionner
implode(",", $array);


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 9:36

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.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2216
Inscription: 10 Avr 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 10:06

webac a écrit:je n'arrive a récupérer que le dernier enregistrement.

Avez vous une piste.


Le dernier élément d'un tableau ?

Code: Tout sélectionner
$dernier = array_pop($a);


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 12:12

non je souhaite récupérer toutes les valeurs du tableau mais je n'arrive à récuperer que la derniere.

Tilt
WRInaute impliqué
WRInaute impliqué
 
Messages: 858
Inscription: 26 Mar 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 12:20

webac a écrit:non je souhaite récupérer toutes les valeurs du tableau mais je n'arrive à récuperer que la derniere.

Essaie peut-être array_values()


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 12:26

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 :?


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 12:29

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: Tout sélectionner
<?
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>
-->

Genesys
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 32
Inscription: 2 Mar 2004

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 13:02

L'affectation d'une valeur dans un tableau se définit ainsi : $array[] = ...

Dans ton code, $import est une chaîne, pas un tableau.


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 13:08

peux tu approfondir, je débute avec les tableaux et j'avoue ne pas avoir compris ta réponse Genesys


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 374
Inscription: 4 Mar 2005

Re: PHP array dans une boucle while

Message le Jeu Avr 30, 2009 14:50

UP

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


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités