PHP array dans une boucle while

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par webac, 30 Avril 2009.

  1. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    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
     
  2. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
  3. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    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.
     
  4. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    Le dernier élément d'un tableau ?

    Code:
    $dernier = array_pop($a);
     
  5. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    non je souhaite récupérer toutes les valeurs du tableau mais je n'arrive à récuperer que la derniere.
     
  6. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    759
    J'aime reçus:
    0
    Essaie peut-être array_values()
     
  7. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    728
    J'aime reçus:
    0
    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 :?
     
  8. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    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>
    -->
     
  9. Genesys
    Genesys Nouveau WRInaute
    Inscrit:
    2 Mars 2004
    Messages:
    36
    J'aime reçus:
    0
    L'affectation d'une valeur dans un tableau se définit ainsi : $array[] = ...

    Dans ton code, $import est une chaîne, pas un tableau.
     
  10. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    peux tu approfondir, je débute avec les tableaux et j'avoue ne pas avoir compris ta réponse Genesys
     
  11. webac
    webac WRInaute occasionnel
    Inscrit:
    4 Mars 2005
    Messages:
    385
    J'aime reçus:
    0
    UP

    Quelqu'un pourrait m'aiguiller?
    j'ai beau parcourir les docs sur internet je n'arrive pas a faire ce que je veux.
     
Chargement...
Similar Threads - PHP array boucle Forum Date
Tri tableau array en PHP Développement d'un site Web ou d'une appli mobile 26 Février 2019
PHP -Problème retraitement données Mysql avant envoit dans un tableau array Développement d'un site Web ou d'une appli mobile 28 Décembre 2016
array PHP Développement d'un site Web ou d'une appli mobile 4 Avril 2014
Tri array multidimensionnel PHP Développement d'un site Web ou d'une appli mobile 16 Mai 2012
[php] Conversion xls en array() Développement d'un site Web ou d'une appli mobile 24 Septembre 2010
PHP : changer les clés d'un array Développement d'un site Web ou d'une appli mobile 15 Juillet 2010
PHP toutes les occurrences SQL dans un tableau array( Développement d'un site Web ou d'une appli mobile 8 Juin 2010
PHP: Récupérer valeur array 2 dim d'un formulaire HTML Développement d'un site Web ou d'une appli mobile 16 Octobre 2009
formulaire de contact sans php Développement d'un site Web ou d'une appli mobile 5 Avril 2020
Ne pas mettre à jour forum Phpbb Administration d'un site Web 19 Février 2020
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice