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

Eléphant du PHP | 152 Messages

06 juil. 2005, 12:23

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

Eléphant du PHP | 152 Messages

06 juil. 2005, 14:44

UP :roll:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 15:38

Donnes nous le code que tu utilise pour lire les données de Excel stp
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 15:50

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...

Eléphant du PHP | 152 Messages

06 juil. 2005, 16:01

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

Mammouth du PHP | 1353 Messages

06 juil. 2005, 16:03

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 !
Modifié en dernier par guilt92 le 06 juil. 2005, 16:13, modifié 1 fois.

Mammouth du PHP | 1353 Messages

06 juil. 2005, 16:09

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...

Eléphant du PHP | 152 Messages

07 juil. 2005, 08:38

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

Eléphant du PHP | 152 Messages

07 juil. 2005, 08:41

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

Mammouth du PHP | 1353 Messages

07 juil. 2005, 09:27

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

Eléphant du PHP | 152 Messages

07 juil. 2005, 09:58

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

Eléphant du PHP | 152 Messages

07 juil. 2005, 10:23

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

Mammouth du PHP | 1353 Messages

07 juil. 2005, 10:31

$ARRAY=array_reverse($ARRAY,false);
juste après $width=sizeof($ARRAY[0]);

Eléphant du PHP | 152 Messages

07 juil. 2005, 10:56

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