Page 1 sur 1

php-excel=>inverser l'ordre de lecture des cellules d'un

Posté : 06 juil. 2005, 12:23
par lefox88500
Bonjour a tous
je bosse dans une entreprise qui me demande de faire un site , je vous explique mon probleme :

J'ai du texte (information du genre news) chaque news est dans une ligne de la colonne B mais bien sur le probleme c'est que les la news B2 est plus ancienne que la news B1

il faut donc que sur ma page il aparaisse seulement les 3 news les plus recente c'est a dire les 3 news avec le numero derriere B le plus grand ( en gros inverser la lecture par rapport a excel)

j'aurai vraiment besoin de se code pour finir se portail interne


je remercie d'avance tout ceux qui vont me repondre

Posté : 06 juil. 2005, 14:44
par lefox88500
UP :roll:

Posté : 06 juil. 2005, 15:38
par zeus
Donnes nous le code que tu utilise pour lire les données de Excel stp

Posté : 06 juil. 2005, 15:50
par mere-teresa
Ben dans ton code, tu essaies de choper le plus grand numéro (fonction max()par exemple) entre toutes les données de la mm colonne.
Et tu décrémentes dans ta boucle une variable $i...et tu affiches les 3 premiers résultats.

Si tu as des trous entre les données (3, 4 , 6, 8 , 9 , 25...), je te conseille de mettre ces données dans un tableau PHP. Il existe plein de fonctions pour les manipuler...

Posté : 06 juil. 2005, 16:01
par lefox88500
merci beaucoup pour ce debut d'aide je precise je suis un vrai debutant 3 jour de php

je precise j'ai repris une partie sur un site car je ne savais pas du tout comment faire

voici mon code:
html>
<head>
<title>MVM</title>
</head>
<body>
<TABLE border=2 width=975>
<tr>
<td width=158 height=173>
<img src="logo.jpg" width="157.5" height="172.5" alt="" border="0" />
</td>
<td valign="top">
<FONT SIZE=2>
<FONT COLOR="#0000FF">
<div align="right">
<?php
$date = date("d-m-Y");
Print("Nous sommes le $date");
?>
<br>
<FONT SIZE=2>
 <?php
$heure = date("H:i");
Print("il est $heure");
?>
</div>
</FONT>
</td>
</tr>
<tr>
<td width=500 height=200>
<?
$separateur=",";
$champ="c:\EasyPHP1-8\www\champ.csv";
function read_csv( $champ, $separateur)      // transfert le fichier dans un tableau
{
 if ( $FILE=fopen($champ,"r") )               // ouverture du fichier
 {
  while ($ARRAY[]=fgetcsv($FILE,1024,$separateur));   // lire ligne par ligne et coupe colonne par colonne
  fclose($FILE) ;
  array_pop($ARRAY);                               // ferme le fichier                                   // efface la derniere ligne
  return $ARRAY ;                              // renvoie le tableau
 }
}
$ARRAY=read_csv($champ,$separateur);      // lit le fichier
?>
 <?
$heigh=sizeof($ARRAY);            // compte le nombre de ligne
$width=sizeof($ARRAY[0]);
echo"width $width";
echo"heigh $heigh"; 
     // nombre de colonne par ligne       
 echo "<TABLE>";                          // ouvre la tableau HTML
for($i=0;$i<$heigh;$i++)                 // les données du tableau
 {
   
	echo "<TR>\n";                       // Nouvelle ligne
    for($j=0;$j<$width;$j++)           // affiche colonne par colonne
    {
     echo "<TD>";

     if( $ARRAY[$i][$j]=="" )         // si la case est vide
         echo "&nbsp;";               // n'affiche rien
     else                        // sinon 
     {
         echo "<center>";
   echo htmlspecialchars($ARRAY[$i][$j], ENT_QUOTES);// affiche les données
         echo "</center>";
     }
     echo "</TD>\n";               // ferme la colonne
    }
    echo "</TR>\n";                  // ferme la ligne
}

echo "</TABLE>\n";                     // tableau terminé                         // Fin tableau
?>

</td>
</tr>
</table>
</body>
</html>
merci pour les reponses futur

Posté : 06 juil. 2005, 16:03
par guilt92
réedite ton message en ajoutant les balises

Code : Tout sélectionner

[php][/php]
autour du code stp pour le rendre lisible

mere-teresa : je suis trop gentille, je lui ai fait !

Posté : 06 juil. 2005, 16:09
par guilt92
Si tu ne veux que les 3 derniers élément ne suffit il pas de faire
for($i=$heigh;$i<$heigh-3;$i--) 
?

Je ne suis pas certain d avoir compris le probleme :oops:
: je suis trop gentille, je lui ai fait !


C'est la qu on se rend compte que ce pseudo te va a merveille...

Posté : 07 juil. 2005, 08:38
par lefox88500
merci pour cette aide ceci semble logique mais le probleme c'est que G aucun affichage des donnéesvenant du tableau

pourriez vous verifiez pourquoi y a se probleme ?

merci d'avance

Posté : 07 juil. 2005, 08:41
par lefox88500
je precise que quand j'utilise le debugueur de easyphp etape par etape il lit la ligne for (...........) et il passe directement a fin de tableau cest a dire a la fin d ela boucle

je sais pas si cela a de l'importance ?

merci d'avnace

Posté : 07 juil. 2005, 09:27
par guilt92
Lorsque tu fais ca
echo"width $width";
echo"heigh $heigh"; 
cela affiche la bonne taille ou pas ? (savoir si il y a quelque chose dans le tableau)

De même tu pourrais tester ton
fgetcsv($FILE,1024,$separateur))
dans le while histoire de voir ce qui est inscrit dans le tableau.
Si tout est ok dans la construction après il faudra voir l affichage mais je pense qu il faut commencer par la.

Bon courage

Posté : 07 juil. 2005, 09:58
par lefox88500
voici mon tableau csv
g 7
f 6
e 5
d 4
c 3
b 2
a 1

mes deux test echo me donne
heigh = 7
width = 1

tu peut me dire quoi taper dans le while stp ?

ps: j'ai trouvé la fonction array_inverse sa peut etre uen solution ou sa s'applique pas a mon probleme ?

merci beaucoup de m'aider

Posté : 07 juil. 2005, 10:23
par lefox88500
voici le code
<html>
<head>
<title>MVM</title>
</head>
<body>
<TABLE border=2 width=975>
<tr>
<td width=158 height=173>
<img src="logo.jpg" width="157.5" height="172.5" alt="" border="0" />
</td>
<td valign="top">
<FONT SIZE=2>
<FONT COLOR="#0000FF">
<div align="right">
<?php
$date = date("d-m-Y");
Print("Nous sommes le $date");
?>
<br>
<FONT SIZE=2>
 <?php
$heure = date("H:i");
Print("il est $heure");
?>
</div>
</FONT>
</td>
</tr>
<tr>
<td width=500 height=200>
<?
$separateur=",";
$champ="c:\EasyPHP1-8\www\champ.csv";
function read_csv( $champ, $separateur)      // transfert le fichier dans un tableau
{
 if ( $FILE=fopen($champ,"r") )               // ouverture du fichier
 {
  while ($ARRAY[]=fgetcsv($FILE,1024,$separateur));   // lire ligne par ligne et coupe colonne par colonne
  fclose($FILE) ;
  array_pop($ARRAY);                               // ferme le fichier                                   // efface la derniere ligne
  return $ARRAY ;                              // renvoie le tableau
 }
}
$ARRAY=read_csv($champ,$separateur);      // lit le fichier
?>
 <?
$heigh=sizeof($ARRAY);            // compte le nombre de ligne
$width=sizeof($ARRAY[0]);
echo"width $width";
echo"heigh $heigh";      // nombre de colonne par ligne       
echo "<TABLE>";                          // ouvre la tableau HTML
for($i=0;$i<$heigh;$i++)                 // les données du tableau
 {
	echo "<TR>\n";                       // Nouvelle ligne
    for($j=0;$j<$width;$j++)           // affiche colonne par colonne
    {
     echo "<TD>";

     if( $ARRAY[$i][$j]=="" )         // si la case est vide
         echo "&nbsp;";               // n'affiche rien
     else                        // sinon 
     {
         echo "<center>";
         echo htmlspecialchars($ARRAY[$i][$j], ENT_QUOTES);// affiche les données
         echo "</center>";
     }
     echo "</TD>\n";               // ferme la colonne
    }
    echo "</TR>\n";                  // ferme la ligne
}

echo "</TABLE>\n";                     // tableau terminé                         // Fin tableau
?>

</td>
</tr>
</table>
</body>
</html>
[/php ]


et voici la sortie php

width 1heigh 7g;7 
f;6 
e;5 
d;4 
c;3 
b;2 
a;1

Posté : 07 juil. 2005, 10:31
par guilt92
$ARRAY=array_reverse($ARRAY,false);
juste après $width=sizeof($ARRAY[0]);

Posté : 07 juil. 2005, 10:56
par lefox88500
<html>
<head>
<title>MVM</title>
</head>
<body>
<TABLE border=2 width=975>
<tr>
<td width=158 height=173>
<img src="logo.jpg" width="157.5" height="172.5" alt="" border="0" />
</td>
<td valign="top">
<FONT SIZE=2>
<FONT COLOR="#0000FF">
<div align="right">
<?php
$date = date("d-m-Y");
Print("Nous sommes le $date");
?>
<br>
<FONT SIZE=2>
 <?php
$heure = date("H:i");
Print("il est $heure");
?>
</div>
</FONT>
</td>
</tr>
<tr>
<td width=500 height=200>
<?
$separateur=",";
$champ="c:\EasyPHP1-8\www\champ.csv";
function read_csv( $champ, $separateur)    
{
 if ( $FILE=fopen($champ,"r") )              
 {
  while ($ARRAY[]=fgetcsv($FILE,1024,$separateur));  
  fclose($FILE) ;
  array_pop($ARRAY);                                                               
  return $ARRAY ;                             
 }
}
$ARRAY=read_csv($champ,$separateur);      
?>
 <?
$heigh=sizeof($ARRAY);           
$width=sizeof($ARRAY[0]);
$ARRAY=array_reverse($ARRAY,false); 
echo "<TABLE>";                          
for($i=0;$i<$heigh;$i++)                
 {
	echo "<TR>\n";                      
      $j=1;     
     echo "<TD>";
     if( $ARRAY[$i][$j]=="" )         
         echo "&nbsp;";              
     else                         
     {
		 echo "<center>";
         echo htmlspecialchars($ARRAY[$i][$j], ENT_QUOTES);
         echo "</center>";
     }
     echo "</TD>\n";
	               
    echo "</TR>\n";                  
}

echo "</TABLE>\n";                     
?>

</td>
</tr>
</table>
</body>
</html>