décomposer un nombre

Petit nouveau ! | 6 Messages

16 oct. 2010, 14:36

Bonjour j'apprendre le php petite à petit et en ce moment j'essaye de faire une page forumlaire qui enregistre un nombre qui une fois envoyé affiche sur une autre page la décomposition jusqu'à 1 du nombre par exemple :

Page1 affiche :

saisir votre nombre : ___________ [Valider]

Avec le code page 1 :

<html>
<head><title>suite</title><head>
<body>
<form action="reponse.php" method="get">

saisir un nombre :
<input name="nb" type="text">
<input name="" type="submit">

</form>
</body>
</html>


Page 2 affiche : (si par exemple le nombre = 5)

54321

avec le code page 2 :

<html>
<head>
<title>réponse</title>
</head>

<body>
<?php
$nb = $_GET['nb'];

for($nb;$nb < $_GET['nb'];$nb-1)
echo .$nb;
?>

</body>
</html>


Voilà, le problème d’après mon navigateur (google chrome) se trouve à la ligne 11 c'est à dire: echo .$nb;
mais je ne comprend pas bien ? peut être que ce n'est pas la bonne boucle que j'utilise ?

Merci pour votre aide

ViPHP
xTG
ViPHP | 7331 Messages

16 oct. 2010, 15:09

Enlèves le point. ^_-

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 oct. 2010, 15:33

Autre problème, ta condition d'arrêt dans ta boucle for() n'est pas bonne : for($nb;$nb < $_GET['nb'];$nb-1)

Tu commences avec la valeur $nb = $_GET['nb'], donc la condition $nb < $_GET['nb'] est d'ors et déjà fausse et la boucle ne sera pas exécutée. Attention également, si ta condition se base uniquement sur la valeur de $_GET['nb'], ton code affichera bien 4, 3, 2 et 1 qui sont inférieurs à 5, mais également 0, -1, -2, -3, ... et ainsi de suite si tu ne lui dis pas de s'arrêter ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

16 oct. 2010, 16:03

merci beaucoup de m'avoir répondu aussi vite j'ai trouvé le code un peu compliqué

alors je l'ai refait avec while :

<html>
<head>
<title>réponse 2</title>
</head>

<body>
<?php
$nb = $_GET['nb']+1;

while($nb>0)
echo $nb=$nb-1;
?>

</body>
</html>

et ça fonctionne ! :)

Petit nouveau ! | 6 Messages

16 oct. 2010, 16:23

j'aurai une dernière question svp, en effet j'aimerai intégrer un tableau avec 1 ligne et autant de colonne que la décomposition du nombre pour afficher le résultat du programme.
Par exemple si le nombre est 3 j'aurai : |3|2|1|

Mais dans :
<body>
<?php
$nb = $_GET['nb']+1;

while($nb>0)
echo $nb=$nb-1;
?>

</body>

Je ne vois pas ou intégrer <table border="3"> et les <tr> <td></td> </tr> à chaque fois je me retrouve avec des erreurs ^^

Merci !

ViPHP
xTG
ViPHP | 7331 Messages

16 oct. 2010, 16:30

<?php
$nb = $_GET['nb']+1;

if( $nb > 0 )
{
  echo "<table><tr>";
  while($nb>0)
  {
    echo "<td>" . $nb . "</td>";
    $nb--;
  }
  echo "</tr></table>";
}
?> 
Ainsi. :)

Petit nouveau ! | 6 Messages

16 oct. 2010, 17:08

mercii xTg super =D>

Petit nouveau ! | 6 Messages

16 oct. 2010, 19:41

juste une chose lorsque j'essaye de grossir la bordure du tableau en rajoutant border : echo "<table border="1"><tr>"
il y une erreur qui apparaît est ce normal :?:
merci

ViPHP
xTG
ViPHP | 7331 Messages

16 oct. 2010, 20:16

echo "ceci est "un test" de quotes";
echo "ceci est un \"test\" de quotes";
;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 oct. 2010, 20:22

Oui c'est normal :) (mais je ne suis pas convaincu que cela t'avance beaucoup plus de le savoir ;))

Ta chaine est délimitée par des guillemets, du coup si à l'intérieur tu mets des guillemets, php pense que la chaine est terminée, et va considérer que le texte qui suit est du code php, alors que ce n'est pas le cas.

Pour éviter cela, tu as deux options :
- protéger tes guillemets avec des antislashes (comme ça php sait qu'il s'agit juste du caractère guillemet et que la chaine n'est pas terminée) :
echo "<table border=\"1\"><tr>";
- utiliser des apostrophes pour délimiter ta chaine (du coup php ne se trompe pas sur les guillemets, mais il faudra par contre protéger les apostrophes éventuelles que ta chaine pourrait contenir :))
echo '<table border="1"><tr>';
Nota entre guillemets la variables php sont interprétées, mais ce n'est pas le cas si la chaine est entre apostrophes, il faut dans ce cas sortir la variable de la chaine :
$chaine1 = "numero 1";
$chaine2 = 'numero 2';

echo "Ma chaine est : $chaine1"; // affiche : Ma chaine est : numero 1

echo 'Ma chaine est : $chaine1'; // affiche : Ma chaine est : $chaine1 (la variable n'est pas interprétée)

echo 'Ma chaine est : ' . $chaine1; // affiche : Ma chaine est : numero 1
Edit : damn ! grillé ! ... ça m'apprendra à être aussi bavard ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

16 oct. 2010, 20:32

j'en aurai appris des choses en voulant faire ça merci à vous tous pour toutes ces explications qui m'ont permis de bien avancer :D