BEsoin d'aide débutant en PHP

Fermé
BenoitKiwi - 2 juin 2009 à 15:35
 BenoitKiwi - 3 juin 2009 à 14:37
Bonjour, je dois créer une page en php dans laquelle apparraissent deux listes déroulantes afin de consulter les hauteurs d'eau en fonction des heures de marée.
je dispose pour cela d'un fichier txt dans lequel sont répertoriées les hauteurs en fonction du jour et de l'heure.
J'ai créer les listes avecles jours et heures mais je n'arrive pas à afficher la hauteur d'eau correspondante après avoir cliqué sur "OK".
quelqu'un peut-il m'aider svp?
Voici le code que j'ai utilisé:
<HTML>
<HEAD>
<BODY>
<?php
$idf=fopen("maree.txt.csv","r");
if(!$idf)
{
echo"problème d'ouverture du fichier";
exit();
}
$idf = fopen("maree.txt.csv","r");
if(!$idf)
{
echo"problème d'ouverture du fichier";
exit();
}
echo"<select>";
while(!feof($idf))
{
$data=fgets($idf);
$jour = explode("\t",$data);
echo"<option>".$jour[0]."<option>";
}
echo "</select>";
fclose($idf);
$idf = fopen("maree.txt.csv","r");
if(!$idf)
{
echo"problème d'ouverture du fichier";
exit();
}
echo"<select>";
$data=fgets($idf);
$heure = explode("\t",$data);
for($i=0;$i<count($heure);$i++)
{
echo "<option>".$heure[$i]."</option>";
}
echo "</select>";
if (empty($jour)OR empty ($heure))
print "veuillez sélectionner un jour et une heure svp";
?>
<input type="submit"value="OK"> <br><br>
</BODY>
</HEAD>
</HTML>
<?php
fclose($idf);
?>
A voir également:

3 réponses

utilise une base de donnée mysql en exportant ton fichiers texte dans une table. Puis tu effectue une requete
exemple pour afficher la hauteur d'eau du 18/11/2009 à 15H00

SELECT hauteurd'eau From MAREE WHERE horaire=$horaireselectionner AND jour=$jourselectionnee

MAree correspondant la table que tu as créer
0
Il n'y a pas une solution sans passer par MySQL?
Mon prof veut que si il utilise un autre fichier txt avec des hauteurs différentes, l'affichage se refasse sans modification du code.
Sinon j'ai refondu un peu mon code, toujours le même résultat mais ça me paraît plus propre.
<HTML>
<HEAD>
<BODY>
<form name="jour" method="get"action="">
Jour : <select name="jour">
<?php
$idf = fopen("maree.txt.csv","r");
if(!$idf)
{
echo"problème d'ouverture du fichier";
exit();
}
while(!feof($idf))
{
$data=fgets($idf);
$jour = explode("\t",$data);
echo"<option>".$jour[0]."<option>";
}
$end=fclose($idf);
?>
</select>
Heure : <select name="heure">
<?php
$idf = fopen("maree.txt.csv","r");
if(!$idf)
{
echo"problème d'ouverture du fichier";
exit();
}
$data=fgets($idf);
$heure = explode("\t",$data);
for($i=0;$i<count($heure);$i++)
{
echo "<option>".$heure[$i]."</option>";
}
$end=fclose($idf);
?>
</select>
<input type="submit"value="OK"> <br><br>
</BODY>
</HEAD>
</HTML>
0
Re-bonjour, on a pas mal bosser cette nuit et on arrive à un résultat presque concluant, sans passer par MySQL.
Par contre il y a un pb aux lignes 31 et 43 (undefined index) et je ne vois pas où.
31: <option value="<?php echo $i ?>" <?php if($_POST["jour"]==$i){echo "selected"; } ?> ><?php echo $heure[$i][0] ?></option>

43: <option value="<?php echo $i ?>"<?php if($_POST["heure"]==$i){echo "selected"; } ?>><?php echo $heure[0][$i] ?></option>

Voici le code complet:

<html>
<head>
<title>Hauteur de marée</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php
//on lit le fichier texte en placant chaque ligne dans une case de tableau
$heure =file('maree.txt.csv');
foreach ($heure as $key => $valeur)
{
$heure[$key]=explode(" ",$heure[$key]);
}
if(isset($_POST["jour"]))
{
//affichage de la hauteur d'eau
echo "<p>Jour : ".$heure[$_POST["jour"]][0]." Heure : ".$heure[0][$_POST["heure"]]." maree : ".$heure[$_POST["jour"]][$_POST["heure"]]."</p>";
}
?>

<form method="post" action="tpphp1.php">
<p>
<label for="jour">Selectionnez le jour</label><br />
<select name="jour" id="jour">
<?php
// création du menu déroulant
for ($i=1;$i<count($heure);$i++)
{
?>
<option value="<?php echo $i ?>" <?php if($_POST["jour"]==$i){echo "selected"; } ?> ><?php echo $heure[$i][0] ?></option>
<?php
}
?>
</select><br />
<label for="heure">Selectionnez l'heure</label><br />
<select name="heure" id="heure">
<?php
// On preend chaque élément de la première ligne, c'est à dire les heures.
for ($i=1;$i<count($heure[0]);$i++)
{
?>
<option value="<?php echo $i ?>"<?php if($_POST["heure"]==$i){echo "selected"; } ?>><?php echo $heure[0][$i] ?></option>
<?php
}
?>
</select><br />
<input type="submit" /> <br><br>
</p>
</form>
</body>
</html>


On doit aussi ajouter une nouvelle liste déroulante avec tous les 1/4 d'heures et une fonction permettant de calculer la hauteur de la marée a ces heures (on considère que la hausse du niveau est linéaire).

J'ai commencé le php la semaine dernière et je dois rendre cela cet après-midi, HELP PLEASE!
0
Tu dois pouvoir le faire en parcourant l'ensemble des ligne de ton fichier donne moi un exemple de ton fichier et je vais regarder
0
0h 1h 2h 3h 4h 5h 6h 7h 8h 9h 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 20h 21h 22h 23h
*lun 1 363 301 255 242 278 351 438 515 565 578 546 480 401 328 269 235 250 309 389 467 522 547 532 483
mar 2 418 355 303 266 264 306 375 450 512 551 555 520 458 389 327 275 251 273 330 401 467 513 532 516
mer 3 470 413 360 311 278 279 319 381 447 503 538 541 509 452 391 332 282 261 281 334 399 459 505 526
jeu 4 515 475 422 369 318 282 280 315 373 437 494 533 542 514 461 399 337 283 258 273 323 388 453 506
ven 5 536 531 493 438 378 318 273 263 295 356 426 493 543 559 534 477 408 336 273 239 251 304 378 455
sam 6 522 562 561 519 453 379 305 249 232 266 337 421 503 565 589 562 495 412 327 252 208 220 284 374
dim 7 468 551 600 598 544 462 370 281 213 192 235 322 425 524 599 625 590 508 409 308 220 170 189 270
*lun 8 380 494 589 643 634 563 462 352 248 169 150 208 315 438 554 636 661 612 513 396 281 183 133 165
mar 9 266 397 528 632 684 662 572 453 326 210 126 116 192 317 459 586 672 688 622 507 376 250 146 103
mer 10 154 275 422 565 672 717 677 570 435 297 173 90 94 189 330 485 617 699 700 618 491 351 220 117
jeu 11 87 158 294 453 600 702 734 676 556 412 269 143 68 91 200 352 512 640 711 695 600 465 324 195
ven 12 100 89 177 322 485 626 717 732 659 531 386 246 126 66 106 225 381 534 651 705 673 570 435 301
sam 13 181 101 109 208 356 512 640 714 710 628 500 362 233 126 85 139 261 411 549 646 681 636 531 406
dim 14 285 180 119 144 247 389 530 636 691 673 587 466 344 232 143 121 183 301 435 551 627 645 593 493
*lun 15 383 281 193 151 187 288 416 533 617 654 627 545 439 337 244 173 165 229 336 449 540 597 604 551
mar 16 464 373 289 218 189 229 321 429 522 587 611 583 510 423 341 265 209 208 267 357 449 521 566 568
0