2010-12-09 36 views
-1

J'ai ce type d'enregistrement dans une table HTML:Seulement LAST tuple affiché comme tableau HTML est rempli avec le fichier délimité par PHP

<tr class="simplehighlight" onclick="window.location.href='./games/game191.php';"> 
<td>06/09/2007</td><td>Jennifer Woods Memorial Grand Prix</td><td>C54</td> 
<td>Nikolayev, Igor</td><td>2431</td><td>Parry, Matt</td><td>2252</td><td class="text-center">1-0</td></tr> 

Je veux lire dans un fichier délimité, faire un tableau, et remplir la table: (échantillon enregistrement)

game191|06/09/2007|Jennifer Woods Memorial Grand Prix|C54|Nikolayev, Igor|2431|Parry, Matt|2252|1-0 

j'ai essayé, mais il affiche seulement le dernier enregistrement du fichier de données (/games.csv)

<?php 
// open delimited data file "|" if needed and read. 
//game191|06/09/2007|Jennifer Woods Memorial Grand Prix|C54|Nikolayev, Igor|2431|Parry,   Matt|2252|1-0 

if(!isset($_SESSION['games_array'])) {$file = $_SERVER['DOCUMENT_ROOT'].'/games.csv'; 
$fp = fopen($file,"r"); $list = fread($fp, filesize($file)); 
$_SESSION['games_array'] = explode("\n",$list); fclose($fp);} 

// extract variables from each tuple by iteration 
foreach ($_SESSION['games_array'] as $v);{ 
$token = explode("|", $v); 

//write the table row and table data 
echo "<tr class=\"simplehighlight\" onclick=\"window.location.href='./games/"; 
echo $token[0]; echo ".php';\">"; 
echo "<td>";echo $token[1];echo "</td>"; echo "<td>";echo $token[2];echo "</td>"; 
echo "<td>";echo $token[3];echo "</td>"; echo "<td>";echo $token[4];echo "</td>"; 
echo "<td>";echo $token[5];echo "</td>"; echo "<td>";echo $token[6];echo "</td>"; 
echo "<td>";echo $token[7];echo "</td>"; 
echo "<td class=\"text-center\">"; echo $token[8];echo "</td>"; 
echo "</tr>";}; 
?> 

Qu'est-ce qui me manque?

Répondre

4
foreach ($_SESSION['games_array'] as $v);{ 

devrait être

foreach ($_SESSION['games_array'] as $v) { 
+0

Si j'avais un centime pour chaque fois que j'ai fait cette erreur ... eh bien, j'aurais quelques pièces de dix cents de toute façon. – AgentConundrum

+0

+1 pour les yeux tranchants – devrooms

0

Essayez avec le fichier():

$lines = file('filename'); 

foreach ($lines as $line_num => $line) { 
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n"; 
} 
0

vous avez les permissions nécessaires pour accéder à ce fichier? votre php error_reporting est-il configuré pour afficher toutes les erreurs? vous pourriez essayer d'utiliser uniquement des chemins relatifs, avez-vous essayé cela? essayez d'utiliser file_get_contents ...

0

C'était plus simple que je ne le pensais ... J'ai commis une erreur en réutilisant du vieux code indésirable d'un autre script.

J'ai trouvé ça et ça marche! Faites-moi savoir si vous constatez des améliorations ou des fonctions plus rapides.

<?php 
$text = file('games.csv'); foreach($text as $line) {$token = explode("|", $line); 
echo "<tr class=\"simplehighlight\" onclick=\"window.location.href='./games/"; 
echo $token[0]; echo ".php';\">"; 
echo "<td>";echo $token[1];echo "</td>"; echo "<td>";echo $token[2];echo "</td>"; 
echo "<td>";echo $token[3];echo "</td>"; echo "<td>";echo $token[4];echo "</td>"; 
echo "<td>";echo $token[5];echo "</td>"; echo "<td>";echo $token[6];echo "</td>"; 
echo "<td>";echo $token[7];echo "</td>"; 
echo "<td class=\"text-center\">"; echo $token[8]; echo "</td>"; 
echo "</tr>";}; 
?> 

Je vous remercie !

+0

Cela fonctionne parce que votre 'foreach' utilise la syntaxe correcte, alors que votre exemple original ne le fait pas (voir ma réponse ci-dessus). Et une autre suggestion: utilisez l'indentation appropriée - cela vous aidera à attraper ce genre d'erreur. – Lee

+0

J'utilise principalement des guillemets simples. De cette façon, vous pouvez utiliser des guillemets doubles dans votre chaîne sans l'échapper. Rendre le code plus lisible. Et lorsque vous utilisez le style de guillemets simples, la chaîne ne sera pas analysée. Cependant, la performance n'est pas vraiment une grosse différence. – PeeHaa