[Correction PHP] Un IF un peu long...

Résolu/Fermé
geogeolharicot - Modifié par geogeolharicot le 13/06/2010 à 10:44
 geogeolharicot - 13 juin 2010 à 16:58
Bonjour !
Je débute en PHP avec un tutoriel pour les débutants. Mais, comme j'ai vraiment hâte de savoir programmer en PHP, je crois que j'ai sauté pas mal de trucs... Je me suis dit que je ferait bien de faire un petit exercice de remémoration. Mais bon, il fallait s'y attendre, ca foire... J'ai beau éplucher tout le script aussi grand qu'il est, je ne trouve pas d'où vient l'erreur.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
    <head> 
        <title>Page de test de fonctions ameliorée</title> 
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    </head> 
 <body> 
<h2>Bienvenue sur cette page de fonctions !</h2> 
<p>Nous allons ici tester quelques fonctions. Par exemple :</p> 
<h3>> Un script qui donne nous dit votre nom et votre prénom !</h3> 
<div style="border: dashed 2px blue"><?php 
if (isset($_GET['nom'])) AND (isset($_GET['prenom'])) AND (isset($_GET['repete'])) AND (isset($_GET['repetition'])) AND (strlen($_GET['prenom'] <= 15)) AND (strlen($_GET['nom'] <= 20)) AND (strlen($_GET['repete'] <= 30)) AND ($_GET['repetition'] < 100) 
{ 
 echo '<p><strong>Voilà vos informations !</strong></p><table><thead><tr><th>Information</th><th>Valeur</th></tr></thead><tbody><tr><td><em>Prenom :</em></td><td>'.$_GET['prenom'].'<td/></tr><tr><td><em>Nom :</em></td><td>'.$_GET['nom'].'<td/></tr></tbody></table><p><strong>Voilà la phrase que vous vouliez répéter !</strong>'; 
 for ($r = $r = 0 ; $_GET['repetition'] ; $r++) 
  { 
  echo $_GET['repete'].'<br />'; 
  } 
} 
elseif (isset($_GET['nom'])) OR (isset($_GET['prenom'])) OR (isset($_GET['repete'])) OR (isset($_GET['repetition'])) 
{ 
 echo 'Vous avez probablement oublié un champ ou un champ est faussé. Réessayez.'; 
} 
else 
{ 
 echo 'Ici s\'affichera vos coordonnées'; 
} 
?></div> 
<form method="get" action="index.php"><fieldset><legend>Esssayez !</legend> 
<label for="prenom">Entrez votre nom : </label><input type="text" id="prenom" name="prenom" maxlength="15" /><br /> 
<label for="nom">Entrez votre nom : </label><input type="text" id="nom" name="nom" maxlength="20" /><br /> 
<label for="repete">Entrez une phrase à répeter : </label><input type="text" id="repete" name="repete" maxlength="30" /><br /> 
<label for="repetition">Entrez le nombre de fois où la valeur doit etre répétée : </label><input type="text" id="repetition" name="repetition" maxlength="2" /><br /><br /> 
<input type="submit" /><input type="reset" /> 
</fieldset></form> 
</body></html>


Ça me fait "Parse Error" à la ligne 12, la ligne du grand IF.

Merci de m'aider à trouver l'erreur (les) !


A voir également:

5 réponses

if (isset($_GET['nom']) AND (isset($_GET['prenom'])) AND (isset($_GET['repete'])) AND (isset($_GET['repetition'])) AND (strlen($_GET['prenom'] <= 15)) AND (strlen($_GET['nom'] <= 20)) AND (strlen($_GET['repete'] <= 30)) AND ($_GET['repetition'] < 100)){


Essaye ça
0
louloute300 Messages postés 335 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 28 novembre 2012 29
13 juin 2010 à 12:14
if ((isset($_GET['nom'])) AND (isset($_GET['prenom'])) AND (isset($_GET['repete'])) AND (isset($_GET['repetition'])) AND (strlen($_GET['prenom'] <= 15)) AND (strlen($_GET['nom'] <= 20)) AND (strlen($_GET['repete'] <= 30)) AND ($_GET['repetition'] < 100) )
{



essaye ca

Parenthèses entourant toutes les conditions du IF
0
geogeolharicot
13 juin 2010 à 12:23
Merci beaucoup !
En effet, j'ai oublié un truc fondamental !
Je vous remercie beaucoup, et puis je vais résoudre aussi la boucle à répeter, en effet : celle-ci est infinie !
0
Donc voilà ! Le code va déjà mieux !
Mais il y a un problème auquel je ne peux résoudre.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Page de test de fonctions ameliorée</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
	<body>
<h2>Bienvenue sur cette page de fonctions !</h2>
<p>Nous allons ici tester quelques fonctions. Par exemple :</p>
<h3>> Un script qui donne nous dit votre nom et votre prénom !</h3>
<div style="border: dashed 2px blue"><?php
if ( (null != $_POST['nom']) AND (null != $_POST['prenom']) AND (null != $_POST['repete']) AND (null != $_POST['repetition']) AND (strlen($_POST['prenom'] <= 15)) AND (strlen($_POST['nom'] <= 20)) AND (strlen($_POST['repete'] <= 30)) AND ($_POST['repetition'] < 100) )
{
 echo '<p><strong>Voilà vos informations !</strong></p><table><thead><tr><th>Information</th><th>Valeur</th></tr></thead><tbody><tr><td><em>Prenom :</em></td><td>'.strip_tags($_POST['prenom']).'<td/></tr><tr><td><em>Nom :</em></td><td>'.strip_tags($_POST['nom']).'<td/></tr></tbody></table><p><strong>Voilà le texte que vous vouliez répéter !</strong><br />';
 for ( $r = 1 ; $r <= $_POST['repetition'] ; $r++)
  {
  echo '(n°'.$r.') '.strip_tags($_POST['repete']).'<br />';
  }
}
elseif ( (isset($_POST['nom'])) OR (isset($_POST['prenom'])) OR (isset($_POST['repete'])) OR (isset($_POST['repetition'])) )
{
 echo 'Vous avez probablement oublié un champ ou un champ est faussé. Réessayez.';
}
else
{
 echo 'Ici s\'affichera vos coordonnées';
}
?></div>
<form method="post" action="index.php"><fieldset><legend>Esssayez !</legend>
<label for="prenom">Entrez votre prénom : </label><br/><input type="text" id="prenom" name="prenom" maxlength="15" /><br />
<label for="nom">Entrez votre nom : </label><br/><input type="text" id="nom" name="nom" maxlength="20" /><br />
<label for="repete">Entrez une texte à répeter : </label><br/><textarea type="text" id="repete" name="repete" maxlength="300"></textarea><br />
<label for="repetition">Entrez le nombre de fois où la valeur doit etre répétée : </label><br/><input type="text" id="repetition" name="repetition" maxlength="2" /><br /><br />
<input type="submit" /><input type="reset" />
</fieldset></form>
</body></html>


Lorsque je lance la page, je veux que le div affiche "Ici s'affichera vos coordonnées", mais le PHP me signale que aucune valeur $_GET['nom'] n'existe. Logique puisqu'elle n'a pas étée crée...

A moins de faire ce script sur deux pages ( ce qui était mon contre-objectif ), je ne vois pas la solution... Ce n'est pas génant pour le reste du script, mais le visiteur a à se demmander...

Merci d'avance !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
geogeolharicot
13 juin 2010 à 16:58
Finalement j'ai trouvé tout seul !
Il ne faut pas verifier de variable qui n'existe pas sauf avec isset.
Si un if n'est pas retenu, son contenu n'est pas exploré, donc ca marche !

<h3>> Un script qui donne nous dit votre nom et votre prénom !</h3>
<div style="border: dashed 2px blue; overflow: hidden;"><?php


if ( (isset($_POST['nom'])) OR (isset($_POST['prenom'])) OR (isset($_POST['repete'])) OR (isset($_POST['repetition'])) )
{
 if ( (null != $_POST['nom']) AND (null != $_POST['prenom']) AND (null != $_POST['repete']) AND (null != $_POST['repetition']) AND (strlen($_POST['prenom'] <= 15)) AND (strlen($_POST['nom'] <= 20)) AND (strlen($_POST['repete'] <= 300)) AND ($_POST['repetition'] < 100) )
 {
   echo '<p><strong>Voilà vos informations !</strong></p><table><thead><tr><th>Information</th><th>Valeur</th></tr></thead><tbody><tr><td><em>Prenom :</em></td><td>'.strip_tags($_POST['prenom']).'<td/></tr><tr><td><em>Nom :</em></td><td>'.strip_tags($_POST['nom']).'<td/></tr></tbody></table><p><strong>Voilà le texte que vous vouliez répéter !</strong><br />';
   for ( $r = 1 ; $r <= $_POST['repetition'] ; $r++)
    {
    echo '(n°'.$r.') '.strip_tags($_POST['repete']).'<br />';
    }
 }
 else
 {
  echo 'Vous avez probablement oublié un champ ou un champ est faussé. Réessayez.';
 }
}
else
{
 echo 'Ici s\'afficheront vos coordonnées';
}
?></div>
<form method="post" action="index.php"><fieldset><legend>Esssayez !</legend>
<label for="prenom">Entrez votre prénom : </label><br/><input type="text" id="prenom" name="prenom" maxlength="15" /><br />
<label for="nom">Entrez votre nom : </label><br/><input type="text" id="nom" name="nom" maxlength="20" /><br />
<label for="repete">Entrez une texte à répeter : </label><br/><textarea type="text" id="repete" name="repete" maxlength="300"></textarea><br />
<label for="repetition">Entrez le nombre de fois où la valeur doit etre répétée : </label><br/><input type="text" id="repetition" name="repetition" maxlength="2" /><br /><br />
<input type="submit" /><input type="reset" />
</fieldset></form>


Voilà, si ca peut aider quelqu'un !
Au revoir !
0