Page 1 sur 1

billeterie en php affichage de données saisie

Posté : 09 juil. 2007, 11:07
par neofuturoxx
bonjour tout le monde, je suis entrain de modifier un code php fait par un stagiaire qui porte sur une billeterie , on m'a demandé d'ajouter une option oui ou non, je ne veux pas la faire avec l'option liste mais l'utilisateur va devoir taper "o" pour oui et 'n' pour non le tout est geré par des fichiers txt ;
mon probleme est de savoir comment dois je afficher le resultat saisi je vous met le code pour me donner des indications votre aide me sera vraiment utile merci

ici on saisi le choix
****************

Code : Tout sélectionner

<td><b></b></td> <td><font size="+1"><b>place payante obligatoire(O/N)</b></font></td> <td><input name="choix" type="text" size="5" maxlength="5"></td><!-- permet la saisie du choix --> </tr> <tr>

ici c'est le tableau recapitulatif
**************************

Code : Tout sélectionner

</center> <table width="150%" border="1" cellpadding="0"><!-- tableau récapitulatif des dates --> <tr> <td width="22"><font size="+1">N°</font></td> <td width="44"><font size="+1">Jour</font></td> <td width="67"><font size="+1">place payante obligatoire</font></td> </tr> <tr> [color=red]ici je passe directement a l'affichage du champ qui m'interesse les autre champs nous importe peu[/color] là c'est l'affichage *************** <td width="20"><div align="left"><font size="+1"><? $fp=fopen("c1.txt", "r"); $choix=fgets($fp,255); fclose($fp); echo $choix; ?></font></div></td> <!--affiche le choix saisi-->
mais curieusement il m'affiche pas les oui et non saisie dans les champs mais plus tot les information d'un autre champs qui se trouve juste a coté si vous voulez le code en entier je vous le met aussi j'ai besoin d'aide svp merci

Posté : 09 juil. 2007, 11:23
par Ryle
C'est normal, ton champ se nomme "choix" et tu récupère sa valeur en utilisant la variable $choix (à noter qu'il serait plus judicieux d'utiliser $_POST['choix'] ou $_GET['choix'] selon la méthode d'envoi du formulaire). Hors, tu écrases cette valeur en faisant le fgets() :)

Essaye de changer le nom de ta variable ou de ton champ (genre "obligatoire" serait probablement plus explicite), ou bien pour l'affichage des données transmises par l'utilisateur, sers toi de la superglobale qui convient ($_POST ou $_GET) :)

Posté : 09 juil. 2007, 11:29
par neofuturoxx
bonjour modo ryle la methode d'envoi est bien

Code : Tout sélectionner

$choix=$_POST["choix"]
je vais changer le nom de ma variable comme tu viens de me le dire genre $choix=$_post["obligatoire"] je vais le modifier depuis la saisie biensure en tout cas merci de m'aider

Posté : 09 juil. 2007, 11:33
par Ryle
C'est surtout au niveau du nom de la variable qu'il te faut le changer. En effet si tu gardes "$choix" pour stocker $_POST["obligatoire"] (attention les majuscules à $_POST sont importantes), tu vas quand même écraser la valeur de $choix ici :
<? $fp=fopen("c1.txt", "r"); $choix=fgets($fp,255); fclose($fp); echo $choix; ?>
;)

Posté : 09 juil. 2007, 11:38
par neofuturoxx
en faite ce que je saisi dans le champs choix il l'ecrit bien dans mon fichier txt mais sur ma page il m'affiche la donnée d'un autre champs qui se trouve juste a coté je suis un peu perdu

Posté : 09 juil. 2007, 14:06
par Ryle
Montre nous un peu plus de code :)

Sachant que dans le code que tu as donné jusqu'à présent, la variable $choix que tu affiches ne contient pas la saisie de l'utilisateur mais la premiere ligne du fichier "c1.txt" ...

Posté : 09 juil. 2007, 15:33
par neofuturoxx
ah modo ryle en faite ça marche maintenant , en faite le fichier txt ce crée automatiquement quand on choisi une ligne donnée ce qui nous concerne le plus c'est l'affichage du resultat , donc le champs de saisi j'ai ceci

Code : Tout sélectionner

<td><b></b></td> <td><font size="+1"><b>place gratuite obligatoire (O/N)</b></font></td> <td><input name="obliga" type="text" size="5" maxlength="5"></td><!-- permet d'indiquer si oui ou non la places est gratuite --> </tr> <tr>
donc la variable qui reçoit la donnée saisi j'ai gardé la meme chose donc $obliga qui se presente comme suit

Code : Tout sélectionner

$obliga=$_POST["obliga"];
et là y'a pas un probleme d'ecrasement :)

le code plus bats est la partie qui lis et ecrit dans le fichier txt

lecture dans le fichier txt
**********************

Code : Tout sélectionner

if($obliga==""){ if($num=="1"){//on vient lire $fp=fopen("c1.txt","r");//le fichier qui contient $obliga=fgets($fp,255);//l'heure fclose($fp);//pour chaque numéro } if($num=="2"){ $fp=fopen("c2.txt","r"); $obliga=fgets($fp,255); fclose($fp); } // ici on refait la meme chose jusqu'au if($num=="49"){ $fp=fopen (c49.txt","R");
et ici on ecrit dans le fichier txt maintenant:
************************************


Code : Tout sélectionner

else { if($num=="1"){//on vient ecrire dans $fp=fopen("c1.txt","w");//le fichier qui contient fputs($fp,$obliga);//le choix fclose($fp);//pour chaque numéro } if($num=="2"){ $fp=fopen("c2.txt","w");//le fichier qui contient fputs($fp,$obliga); fclose($fp);//pour chaque numéro // ici on refait la meme chose jusqu'au if($num=="49"){ $fp=fopen("c49.txt","w");//le fichier qui contient fputs($fp,$obliga); fclose($fp);//pour chaque numéro }
et quand je visualise tout marche bien il ecrit bien dans les fichier et affiche les resultats sur la page mais j'ai des erreurs egalement sur la page je dirai meme losque la ligne obligatoire n'est pas renseigné j'ai ceci
Warning: fopen(c5.txt) [function.fopen]: failed to open stream: No such file or directory in C:\projet\www\mon site\administrateur.php on line 264

Warning: fgets(): supplied argument is not a valid stream resource in C:\projet\www\mon site \administrateur.php on line 264

Warning: fclose(): supplied argument is not a valid stream resource in C:\projet\www\mon site \administrateur.php on line 264
et ces erreurs je les ai jusqu'au c49.txt quand ces lignes ne sont pas renseigné quand c'est renseigné on ne voit pas les erreurs

voila merci pour la lumiere que tu me donne

Posté : 09 juil. 2007, 16:12
par Ryle
Content que cela fonctionne :)

Sinon, histoire de réduire un peu ton code, au lieu d'écrire tes 49 if() à la suite, pourquoi ne pas faire une boucle ?
for ($i=1; $i<50; $i++) { // on boucle de 1 à 49
  if ($num==$i) { // si $num correspond au fichier
    $fp = fopen("c".$i.".txt","w"); // on créer le fichier en utilisant $i (ou $num) dans le nom
    fputs($fp, $obliga);
    fclose($fp);
  } 
}
Quant à tes warnings, c'est je pense parce que tu essayes de lire le fichier avant qu'il n'ait été écrit... il y a peut être un soucis de chronologie dans le traitement. Sinon pour éviter le message, il suffit de tester si le fichier existe avant de vouloir l'ouvrir :
if($num=="1" && is_file("c1.txt") ){//on vient lire 
      $fp=fopen("c1.txt","r");//le fichier qui contient 
         $obliga=fgets($fp,255);//l'heure 
      fclose($fp);//pour chaque numéro 
   } 
Tu peux naturellement utiliser une boucle for() de la même manière que ci-dessus pour remplacer la tartine de if() de la lecture des fichiers :)

Posté : 09 juil. 2007, 16:36
par neofuturoxx
yeah ryle !!! j'ai fais plus simple lolll j'ai entré des blanc dans tous les champs ou y'avait des erreur et tout fonctionne a merveille , c'est comme si je formatais pour pouvoir ecrire dedans :lol: c'est bete mais ça marche bien je te remerci vraiment pour ton aide j'ai pu avancé ouic'est vrai la tartine de if avec du miel c'est très lourd je vais mettre la boucle :wink: une fois de plus merci et longue vie a php france