Voilà, je suis confronté à une étrangerie sur laquelle je cale.
J'utilise des fichiers csv comem modèle pour importer des données.
J'ai un formulaire permettant de modifier un modèle au choix.
La page d'édition transforme le fichier cvs choisi, en tableau avec des valeurs tirées du CSV. Pour certaines valeurs, j'impose une ligne de valeurs possibles tirées d'une table chacune. Le csv est épluché par un while le tableau de valeurs s'affiche comme il se doit.
A chaque linge j'incrémente un compteur dont je veux envoyer la valeur lors du submit du formulaire.
Si une ligne n'a pas le premier champs sous forme d'heure, elle est zappée par un continue; .
Seulement, lorsque je soumet le formulaire, si le fichier csv a plus de 111 lignes, la valeur (malgré que je l'affiche bien en bas du tableau d'édition, n'est pas envoyée.
Voici le code du forumulaire d'édition du modèle (pour simplifier, je mets la version sans liste de valeurs tirées de tables sql car le problème est le même dnas les deux cas) :
<form name="edit_result" action="edit_result.php" method="POST">
<table border="1">
<tr>
<td>Arrivee_T</td>
<td>Liaison</td>
<td>Prestaire</td>
<td>Provenance</td>
<td>Véhic.</td>
<td>TBEF</td>
<td>Commentaire</td>
</tr>
<?
$id = $_GET["idFile"] ;
$idFile = $id;
$id = '../importer/models/'.$id ;
$File = fopen($id, "r");
$counter = '0';
while (($objArr = fgetcsv($File, 10000, ";")) !== FALSE)
{
$databaseTimePattern = '/^(0[0-9]|(1[0-9])|(2[0-3])):[0-5][0-9]:[0-5][0-9]$/'; //Matches times in the form hh:mm
$value = $objArr[0];
if (preg_match($databaseTimePattern, $value)) {
$counter = $counter + 1;
?>
<input type="hidden" name="id" value="<? echo $id; ?>">
<input type="hidden" name="idFile" value="<? echo $idFile; ?>">
<tr>
<td><input type="time" name="arrivee_t<? echo $counter; ?>" value="<? echo substr("$objArr[0]",0 ,5); ?>"></td>
<td><input type="text" name="liaison<? echo $counter; ?>" value="<? echo $objArr[1]; ?>"></td>
<td><input type="text" name="presta<? echo $counter; ?>" value="<? echo $objArr[2]; ?>"></td>
<td><input type="text" name="come_from<? echo $counter; ?>" value="<? echo $objArr[3]; ?>"></td>
<td><input type="text" name="vehic<? echo $counter; ?>" value="<? echo $objArr[4]; ?>"></td>
<td><input type="time" name="tbef<? echo $counter; ?>" value="<? echo substr("$objArr[5]",0 ,5); ?>"></td>
<td><input type="text" name="comment<? echo $counter; ?>" value="<? echo $objArr[6]; ?>"></td>
</tr>
<?
} else {
continue;
}
}
fclose($File);
?>
</table>
<? echo $counter; ?>
<input type="hidden" name="counter" value="<? echo $counter; ?>">
<input name="file" type="submit" name="submit" value="Enregistrer les modifications">
</form>
Dans la page edit_result.php , je récupère la variable $counter et je l'affiche :
$counter = $_POST["counter"];
echo $counter;
Si le fichier a <= 111 lignes, la valeur de $counter s'affiche, si il a plus de 111 lignes, je reçois une belle insulte " Notice: Undefined index: counter in D:\ww .... ".Là je cale sérieusement car pourquoi 11 lignes et pas plus ni moins ? Et même pourquoi cette limite ?
Donc si quelq'un a un tuyau, je suis preneur
M'ciiiiii !
Couin