Erreur de code (Débutant)

Résolu/Fermé
Tom - 30 nov. 2013 à 18:23
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 5 déc. 2013 à 19:10
Salut je débute dans le php je voudrais savoir ou est mon erreur ?

<center>
<form action="" method="post"/>
Quell age a tu ?:
<input name="textbox" type="text" autofocus tabindex="0" />
<input name="button" type="submit" tabindex="1" value="Entrer" />
</form>
</center>

<?php



if $_POST['textbox'] < 18 {

echo 'Tu est trop jeune'

else }


<a href="site.html">la page 2</a>

}

}

?>


Merci

3 réponses

varley Messages postés 66 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 28 septembre 2018 12
30 nov. 2013 à 20:09
salut Tom !

l'erreur se situe au niveau de ton code php

1.t'as mal positionné tes accolades après le if et else
2.t'as mal introd8 ta balise html entre <?php ?> une balise html doit tjrs etre en dehor du code php
3.faut définir ceci if(isset($_POST['button']) l'action qui doit s'effectuer quand
l'utilisateur appui sur le bouton Entrer

<?php

if(isset($_POST['button'])){

if ($_POST['textbox'] < 18 ){

echo 'Tu est trop jeune';

}else {
?>

<a href="site.html">la page 2</a>
<?php
}
}

?>
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
Modifié par mpmp93 le 1/12/2013 à 14:06
<?php if(isset($_POST['button'])): ?>
<?php if ($_POST['textbox'] < 18 ): ?>
Tu es trop jeune
<?php else: ?>
<a href="site.html">la page 2</a>
<?php endif; ?>
<?php endif; ?>
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 déc. 2013 à 10:15
Perso, je préfère largement une notation du style :
<?php
if(isset($_POST['button']))
{
    if ($_POST['textbox'] < 18 )
        echo 'Tu es trop jeune';
    else
        echo '<a href="site.html">la page 2</a>';
}
?>


Mais bon, les goûts et les couleurs...
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
5 déc. 2013 à 12:05
Le problème avec "votre" écriture, c'est qu'un IDE (Netbeans par exemple) ne va plus pouvoir analyser les imbrications HTML, donc valider le code HTML.

Si vous écrivez:

echo "<td>$data";


netbeans ne valide pas le TD

Si vous écrivez:

<td><?php echo $data; ?>

Netbeans verra et signalera que </td> manque en HTML.

la manière d''écrire telle que je l'ai indiqué fait partie des "Best Practices" PHP/HTML:

- un fichier ne contenant QUE du code PHP a l'extension php et ne doit pas jouer sur la structuration du code HTML;
- un fichier qui contient du code HTML a l'extension phtml (cas général des templates) ou php (cas d'un fichier index.php) mais on ne passe pas du HTML -> php -> HTML. Exemple de grosse erreur:

<table>
<?php if($condition) { ?>
<thead>
<tr>
<?php if($data=='') {
echo "<td> -NC- </td>";
} else {
echo "<td>$data</td>";
} ?>
</tr>
</thead>
<?php } ?>

Ce genre de sac de noeud passe très mal avec un analyseur de code. Et j'en vois souvent....

Si le HTML imbrique du PHP, on considère que PHp est un "moteur de template" et il faut préférer l'écriture que j'ai donné en exemple dans le précédent POST.

Références concernant ces Best Practices (bonnes pratiques):
https://framework.zend.com/manual/2.0/en/modules/zend.view.renderer.php-renderer.html

Extrait:

<?php if ($this->books): ?>

<!-- A table of some books. -->
<table>
<tr>
<th>Author</th>
<th>Title</th>
</tr>

<?php foreach ($this->books as $key => $val): ?>
<tr>
<td><?php echo $this->escapeHtml($val['author']) ?></td>
<td><?php echo $this->escapeHtml($val['title']) ?></td>
</tr>
<?php endforeach; ?>

</table>

<?php else: ?>

<p>There are no books to display.</p>

<?php endif;?>

Tous les bons professionnels programment ainsi....

A+
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 déc. 2013 à 19:10
« Tous les bons professionnels programment ainsi.... »
Hum hum...
Ce n'est pas la peine d'être insultant, hein !
Il faut aussi savoir rester ouvert d'esprit...

Ta version a également des inconvénients... Elle est inutilement chargée et difficile à lire pour un être humain, sans parler de la pénibilité du codage... J'imagine que tu as un raccourci dans ton IDE pour mettre les balises <?php à chaque ligne, mais du coup tu deviens dépendant de ton IDE, ce qui n'est jamais une bonne idée.
0
TWinter85 Messages postés 2 Date d'inscription jeudi 24 novembre 2011 Statut Membre Dernière intervention 5 décembre 2013
5 déc. 2013 à 08:49
<center>
<form action="" method="post"/> Quell age a tu ?:
<input name="textbox" type="text" autofocus tabindex="0" />
<input name="button" type="submit" tabindex="1" value="Entrer"/>
</form>
</center>
<?php
if ($_POST['textbox'] < 18) {
echo "Tu est trop jeune";
}
else {
<a href="site.html">la page 2</a>
}
?>
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 déc. 2013 à 10:18
@TWinter85
Ton code ne peut pas marcher, il manque un echo ou des balises ?> <?php pour la balise <a>.
0