Problème de code ,,,

Signaler
Messages postés
77
Date d'inscription
vendredi 24 novembre 2000
Statut
Membre
Dernière intervention
28 novembre 2007
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Salut, j'ai un problème ... Voici le code :

$fichier = 'donnee/Regular Season Schedule.csv';
if(file_exists($fichier))
{
$fp = fopen("$fichier", "r");
  while (!feof($fp))
  { 
  $ligne = fgets($fp,4096);
  $liste = explode(",", "$ligne");
  $liste = str_replace('"', '', $liste);
  $liste = str_replace('®', '', $liste);
  $liste = str_replace('?', '', $liste);
  $liste = str_replace('/', '', $liste);
  // Regarde le nombre de colonne //
  $resultat = count($liste);
  $nb = $resultat ;
  echo $resultat ;
  //////////////////////////////////
  
  /* while(isset($ligne[0][$i]))
  {
  $i = 0;
  $retour = FindMaxType($ligne, $i);
  $requete = "";
  $requete .= "`".mysql_escape_string(strtr($ligne[0][$i], " ", "_"))."`";  $requete .(($retour[1] "Y") ? " INT($retour[0])" : " VARCHAR($retour[0])");
  } */
  /* echo $requete ; */
  $date = $liste[1];
  $home = $liste[2];
  $away = $liste[3];
  $vs = 'vs';
  print "$date      $home VS $away
";
   // print "$liste";
  }
  for ($i=0; $i<$nb;$i++)
  {
  echo("
".$i." Je poserais des questions claires sur CS
");
  }
}

Le problème ses que $nb vaut 1 et il devrait valoir 17...

6 réponses

Messages postés
77
Date d'inscription
vendredi 24 novembre 2000
Statut
Membre
Dernière intervention
28 novembre 2007

Oupss voici code

$fichier = 'donnee/Regular Season Schedule.csv';
if(file_exists($fichier))
{
$fp = fopen("$fichier", "r");
  while (!feof($fp))
  { 
  $ligne = fgets($fp,4096);
  $liste = explode(",", "$ligne");
  $liste = str_replace('"', '', $liste);
  $liste = str_replace('®', '', $liste);
  $liste = str_replace('?', '', $liste);
  $liste = str_replace('/', '', $liste);
  // Regarde le nombre de colonne //
  $resultat = count($liste);
  $nb = $resultat ;
  echo $resultat ;
  //////////////////////////////////
  $date = $liste[1];
  $home = $liste[2];
  $away = $liste[3];
  $vs = 'vs';
  print "$date &nbsp;&nbsp;&nbsp;&nbsp; $home VS $away
";
   // print "$liste";
  }
  for ($i=0; $i<$nb;$i++)
  {
  echo("
".$i." Je poserais des questions claires sur CS
");
  }
}
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
Bonjour,

Pour lire lex fichiers 'csv', il y a une fonction : fgetcsv().
D'autre part, la variable '$liste' n'est pas un tableau, et elle est donc écrasée à chaque tour de boucle. En final, il ne reste que la dernière valeur, donc longueur = 1.

Ton code (simplifié) pourrait être comme ça (pas testé) :
<?php
    $fichier = 'donnee/Regular Season Schedule.csv';
    if(file_exists($fichier))
    {
        $i = 0;
        $fp = fopen("$fichier", "r");
        while (!feof($fp))
        {
            $liste[$i] = fgetcsv($fp, 4096, ',', '"');
            $aRemplacer = array('®', '?', '/');
            $liste[$i] = str_replace($aRemplacer, '', $liste[$i]);
            // Regarde le nombre de colonne //
            $resultat = count($liste);
            $nb = $resultat ;
            echo $resultat ;
        }
    }
?>

Cordialement.

JC
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
Pas réveillé ce matin :

<?php
    $fichier = 'donnee/Regular Season Schedule.csv';
    if(file_exists($fichier))
    {
        $i = 0;
        $fp = fopen("$fichier", "r");
        while (!feof($fp))
        {
            $liste[$i] = fgetcsv($fp, 4096, ',', '"');
            $aRemplacer = array('®', '?', '/');
            $liste[$i] = str_replace($aRemplacer, '', $liste[$i]);
            $i ++;
        }
        // Regarde le nombre de colonne //
        echo count($liste);
    }
?>

Cordialement.

JC
Messages postés
77
Date d'inscription
vendredi 24 novembre 2000
Statut
Membre
Dernière intervention
28 novembre 2007

Sa ne fonctionne pas ...
Ce code :
$fichier = 'donnee/Regular Season Schedule.csv';
if(file_exists($fichier))
{
$fp = fopen("$fichier", "r");
  while (!feof($fp))
  { 
  $ligne = fgets($fp,4096);
  $liste = explode(",", "$ligne");
  $liste = str_replace('"', '', $liste);
  $liste = str_replace('®', '', $liste);
  $liste = str_replace('?', '', $liste);
  $liste = str_replace('/', '', $liste);
  // Regarde le nombre de colonne //
  $resultat = count($liste);
  $nb = $resultat ;
  echo $resultat ;
  //////////////////////////////////
  $date = $liste[1];
  $home = $liste[2];
  $away = $liste[3];
  $vs = 'vs';
  print "$date &nbsp;&nbsp;&nbsp;&nbsp; $home VS $away
";
   // print "$liste";
  }
  for ($i=0; $i<$nb;$i++)
  {
  echo("
".$i." Je poserais des questions claires sur CS
");
  }
}

Maffiche : www.sipinformatique.ca/nhle/easports.php

Ton code maffiche : http://www.sipinformatique.ca/nhle/test.php
Messages postés
77
Date d'inscription
vendredi 24 novembre 2000
Statut
Membre
Dernière intervention
28 novembre 2007

ses supposé afficher le nombre de colonne 17
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

si tu regardes bien ton output, tu verras que ton $nb vaut 17 pour toutes les lignes, sauf...la dernière. Parce que ton code lit trop loin : ton fichier csv se finit sur un retour chariot, et la dernière ligne est celle d'après ce retour chariot : elle ne contient rien, aucun champ csv. Ou du moins un champ vide. Et comme tu écrases ton $nb à chaque ligne, jusqu'à la dernière...ben à la dernière, $nb vaut 1 apparemment puisque ton affichage se fait une fois.