Erreur php/mysql

Résolu
Bonjour,

Je suis en train de faire un système de profils sur mon site et j'ai un problème :/.
Quand je veut accéder à ma page j'ai cette erreur.
Parse error: syntax error, unexpected T_IF in /home/b/bepien/html/option/profil.php on line 21

La ligne 21 c'est sa:
if ($donnees['avatar'] = '') // Pas d'avatar donc on insert un le lien de l'image

Ma page entière.

<div id="corps">
<form method="post">
<input type="text" name="avatar_net" id="avatar_net" /><br/>
<input type="submit" value="Envoyer" />
</form>

<?php
//D'abord, je me connecte à la base de données
mysql_connect("****", "****", "*******");
mysql_select_db("*****");

$avatar_net = ($_POST['avatar_net']);

$retour = mysql_query('SELECT * FROM connexion WHERE pseudo=\''.$_SESSION['pseudo'].'\'');
$donnees = mysql_fetch_array($retour)

if ($donnees['avatar'] = '') // Pas d'avatar donc on insert un le lien de l'image
{
mysql_query("INSERT INTO connexion VALUES avatar='" . $avatar_net . "' WHERE pseudo='".$_SESSION['pseudo']."' ");
}
else
{
mysql_query("UPDATE connexion SET avatar='" . $avatar_net . "' WHERE pseudo='".$_SESSION['pseudo']."' ");
}

?>
<img src="<?php echo''.$donnees['avatar'].'';?>" />

</div>


Merci de vos réponse bonne journée :) .
Configuration: Windows Vista
Firefox 3.5

12 réponses

  1. Bonjour

    unexpected T_IF
    Tu as oublié le ; à la fin de la ligne précédente
    1
    1. c'est pas = mais == car = veut dire que tu attribue la variable et == dis ke la variable est egale à ...

      mais plus simple remplace
      if ($donnees['avatar'] = '') // Pas d'avatar donc on insert un le lien de l'image
      par
      if (empty($donnees['avatar'] )) //Pas d'avatar donc on insert un le lien de l'image
      0
      1. Merci de t'as réponse, mais sa ne marche pas.
        0
        1. Ah oui merci bien.

          Mais maintenant $avatar_net ne s'enregistre pas pour le if
          0
          1. mysql_query("INSERT INTO connexion VALUES avatar='" . $avatar_net . "' WHERE pseudo='".$_SESSION['pseudo']."' ");

            Cette requête est incorrecte. Il n'y a pas de WHERE dans un INSERT. En effet, un INSERT crée un nouvel enregistrement, alors que le WHERE teste une condition sur un enregistrement existant.

            Si tu cherches à créer un nouvel avatar pour le même pseudo, ce serait plutôt :
            mysql_query("INSERT INTO connexion (avatar,pseudo) VALUES ('" . $avatar_net . "','".$_SESSION['pseudo']."')");
            0
            1. En faite ma table est comme ceci
              id pseudo passe verif email avatar

              Et je veut enregistrer $avatar_net dans avatar. J'avais mis WHERE pseudo='".$_SESSION['pseudo']."' Pour que $avatar_net s'enregistre dans avatar du membre qui est connecté.

              PS: j'ai essayé votre code mais il ma créer 3 nouvelle id avec le lien de l'avatar.
              0
              1. Normal, si tu as une premier enregistrement avec un pseudo mais sans avatar, chaque appel va faire un INSERT. Mais c'est ton code qui est écrit comme ça.

                Dans quel cas veux-tu faire un INSERT et dans quel cas veux-tu faire un UPDATE ?
                0
                1. Bah je veut faire un insert quand l'utilisateur n'as pas encore mis d'avatar et un update quand il veut changer son avatar.

                  Sinon je vais essayer de faire deux update.
                  0
                  1. Quand l'utilisateur n'a pas encore mis son avatar, y a-t-il quand même une ligne avec son pseudo dans la table ou non ? Car ça change tes tests et les requêtes à faire.
                    0
                    1. Si le pseudo existe déjà, tu n'as qu'un UPDATE à faire, ça ne sert à rien de distinguer le cas où l'avatar est vide de celui où l'avatar n'est pas vide .

                      Par contre, il ne faut faire cet UPDATE que si le login existe :

                      $retour = mysql_query('SELECT * FROM connexion WHERE pseudo=\''.$_SESSION['pseudo'].'\'');
                      $donnees = mysql_fetch_array($retour)

                      if ($donnees !== false ) // le pseudo existe
                      {
                      mysql_query("UPDATE connexion SET avatar='" . $avatar_net . "' WHERE pseudo='".$_SESSION['pseudo']."' ");
                      }
                      else echo " pseudo inexistant"; // le pseudo n'existe pas
                      0