Erreur T_else introuvable!!

Petit nouveau ! | 4 Messages

15 nov. 2013, 08:19

Bonjour/Bonsoir

Alors voila, j'ai récupérer un script sur le net modifié un peu et executé!

Mais il me sort une erreur T_ELSE sur laquelle ca fait bien 2/3heures que je suis dessus mais je l'a trouve pas!
Et mes yeux sont en train de décéder!
Voila le fameu code!
<?php
include('config.php');
?>
<?php session_start()?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" type="text/css" href="style.css" />        
		<title>Nouveau MP</title>
    </head>
    <body>
        <header id="head" >
			<p align="right"><a href="deconnection.php"><font color='#ffffff'>D&eacute;connexion</font></a><p>
		</header>
<?php
//On verifie si lutilisateur est connecte
if(isset($_SESSION['username']))
{
$form = true;
$otitle = '';
$orecip = '';
$omessage = '';
//On verifie si le formulaire a ete valide
if(isset($_POST['title'], $_POST['recip'], $_POST['message']))
{
        $otitle = $_POST['title'];
        $orecip = $_POST['recip'];
        $omessage = $_POST['message'];
        //On enleve lechappement si get_magic_quotes_gpc est active
        if(get_magic_quotes_gpc())
        {
                $otitle = stripslashes($otitle);
                $orecip = stripslashes($orecip);
                $omessage = stripslashes($omessage);
        }
        //On verifie si tout les champs ont ete remplis
        if($_POST['title']!='' and $_POST['recip']!='' and $_POST['message']!='')
        {
                //On echappe les variables pour les utiliser dans une requette SQL
                $title = mysql_real_escape_string($otitle);
                $recip = mysql_real_escape_string($orecip);
                $message = mysql_real_escape_string(nl2br(htmlentities($omessage, ENT_QUOTES, 'UTF-8')));
                //On verifie que le destinataire existe
                $sql='SELECT id as recipid FROM users as u WHERE u.username="'.$recip.'"'; //ligne 40
				$dn1 = mysql_fetch_array(mysql_query($sql));
			if($dn1['recip']==1) {
                {
                        //On verifie que le destinataire nest pas lutilisateur meme
                        if($dn1['recipid']!=$_SESSION['userid'])
                        {
                                $id = $dn1['npm']+1;
                                //On envoi le message
                                if(mysql_query('insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", "1", "'.$title.'", "'.$_SESSION['userid'].'", "'.$dn1['recipid'].'", "'.$message.'", "'.time().'", "yes", "no")'))
                                {
        ?>
        <div class="message">Le message a bien &eacute;t&eacute; envoy&eacute;.<br />
        <a href="list_pm.php">Liste de mes messages priv&eacute;s</a></div>
        <?php
                                        $form = false;
                                }
                                else
                                {
                                        //Sinon, on dit quune erreur sest produite
                                        $error = 'Une erreur c\'est produite lors de l\'envoi du message.';
                                }
                        }
                        else
                        {
                                //Sinon, on dit quil ne peut pas envoyer un message a lui meme
                                $error = 'Vous ne pouvez pas envoyer un message &agrave; vous m&ecirc;me.';
                        }
                }
		else
                {
                        //Sinon, on dit que le destinataire nexiste pas
                        $error = 'Le destinataire de votre message n\'existe pas.';
                }
        }
    else
        {
                //Sinon on dit quun champ nest pas rempli
                $error = 'Un des champs n\'est pas rempli.';
        }
}
elseif(isset($_GET['recip']))
{
        //On recupere le nom dutilisateur si disponible
        $orecip = $_GET['recip'];
}
if($form)
{
//On affiche lerreur sil ya lieu
if(isset($error))
{
        echo '<div class="message">'.$error.'</div>';
}
//On affiche le formulaire
?>
<div class="content">
        <h1>Nouveau message priv&eacute;</h1>
    <form action="new_pm.php" method="post">
                Veuillez remplir ce formulaire pour envoyer le MP.<br /><br />
        <ul>
				<li>
					 <label for="title">&nbsp;Titre</label><input type="text" value="<?php echo htmlentities($otitle, ENT_QUOTES, 'UTF-8'); ?>" id="title" name="title" width="32" /><br />
				</li>
				<li>
					<label for="recip">&nbsp;Destinataire<span class="small">(Nom d'utilisateur)</span></label><input type="text" value="<?php echo htmlentities($orecip, ENT_QUOTES, 'UTF-8'); ?>" id="recip" name="recip" width="32" /><br />
				</li>
				<li>	
					<label for="message">&nbsp;Message<br /></label><textarea cols="75" rows="7" id="message" name="message"><?php echo htmlentities($omessage, ENT_QUOTES, 'UTF-8'); ?></textarea><br />
				</li>
				<li>
					<input type="submit" value="Envoyer" /><br />
				</li>
		</ul>
 </form><br />
</div><br />
<?php
}
}
else
{
        echo '<div class="message">Vous devez &ecirc;tre connect&eacute; pour acc&eacute;der &agrave; cette page.</div>';
}
?>
                <div class="foot"><a href="list_pm.php">Retour &agrave; mes messages priv&eacute;s</a> - <a href="">INSERER UN LIEN ICI</a></div>
        </body>
</html>
Si des personnes aimables voulaient bien m'aider je leur en serais grandement reconnaissable!
Merci d'avance!
Modifié en dernier par moogli le 15 nov. 2013, 10:02, modifié 1 fois.
Raison : bbcode php

Eléphant du PHP | 170 Messages

15 nov. 2013, 09:14

Bonjour,

tu as 16 "{" et 15 "}"

Mammouth du PHP | 2278 Messages

15 nov. 2013, 09:17

Commence par numéroter et / ou commenter les accolades:
if (condition)
{//1 condition


}
else
{//1

}//1
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 4 Messages

15 nov. 2013, 09:27

Ah oui exact, Merci bien! il manquait } juste avant la ligne 74 ( ou il y avait le else) pourtant jsuis sur d'avoir essayé ça! Enfin bon! Faut que j'arrête les nuits blanches!

Autres problèmes maintenant, en fait la page est censée envoyer un MP, seulement quand je met un destinataire (valide) :) il me répond que le destinataire n'existe pas.!!! what the F#ck!

Le code lié à la vérification de l'existence de ce dernier ce trouve ligne 44/46

Code : Tout sélectionner

$sql='SELECT id as recipid FROM users as u WHERE u.username="'.$recip.'"'; $dn1 = mysql_fetch_array(mysql_query($sql)); if($dn1['recip']==1) { {
Quelqu'un aurait une idée svp?

mama

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

15 nov. 2013, 10:08

salut,

tu compare l'id que tu récupère en base à la valeur 1.
Il y a peu de chance que l'id de ton utilisateur soit 1 ?
il faut que tu compare avec $_POST['recip'].

je t'invite a prendre connaissance de l'extension mysqli pour remplacer l'extension mysql que tu utilise et qui est vouée à disparaître dans un future plus ou poins proche.

ta façon de faire t'embarque vers de possible ennuie pour trouver tes erreurs lorsque tu imbrique les mysql_query et mysql_fetch_array.
il est important de les séparer et de tester les valeurs de retour des ces fonctions car si la requête n'est pas bonne mysql_query retourne false. S'il n'y a pas de résultat c'est mysql_fetch_array qui retourne false et dans les deux cas tu auras une erreur non gérée et c'est pas top du tout ;)

pour ton problème de {} essai un IDE (eclipse, netbeans etc) il t'indiquera les erreurs de syntaxe (et parfois même te proposera de les corriger :) )


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 4 Messages

15 nov. 2013, 10:16

Encore merci pour vos réponse, le truc c'est que j'ai le même résultat si je fais:

Code : Tout sélectionner

$sql='SELECT id as recipid FROM users as u WHERE u.username="'.$recip.'";'; $dn1 = mysql_fetch_array(mysql_query($sql)); if($dn1){
Pour les tester séparément, jsuis pas trop calé en écriture,disons que je bidouille des codes qui existent déjà et que j'ai pu trouver sur le net!
Alors si vous vous sentez charitable, vous pouvez m'aider! :)

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

15 nov. 2013, 12:29

je t'ai mis comment tu devais faire ton test; quand ne pas imbriquer les fonctions c'est simple
<?php
$sql='SELECT id as recipid FROM users as u WHERE u.username="'.$recip.'";'; 
$ret = mysql_query($sql);
if($ret !== false) {
$dn1 = mysql_fetch_array($ret);
if($dn1['recipid '] == $_POST['recip']){
// insert
}
}else {
// erreur SQL
echo 'Erreur SQL '.mysql_error();
}

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 4 Messages

15 nov. 2013, 18:02

Merci pour le code moogli, jvais tester ca ce soir! Et jvous tiendrais au courant!