Rechercher : dans
Par :

Erreur php/mysql

Dernière réponse le 6 jui 2009 à 13:56:04 Tulifer, le 6 jui 2009 à 10:31:09 
 Signaler ce message aux modérateurs

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

1

resalut, le 6 jui 2009 à 10:41:22

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

Répondre à resalut

2

Tulifer, le 6 jui 2009 à 10:49:40

Merci de t'as réponse, mais sa ne marche pas.

Répondre à Tulifer

3

le père, le 6 jui 2009 à 11:14:15
  • +1

Bonjour

unexpected T_IF
Tu as oublié le ; à la fin de la ligne précédente

Répondre à le père

4

Tulifer, le 6 jui 2009 à 11:19:58

Ah oui merci bien.

Mais maintenant $avatar_net ne s'enregistre pas pour le if

Répondre à Tulifer

5

le père, le 6 jui 2009 à 11:26:39

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']."')");

Répondre à le père

6

Tulifer, le 6 jui 2009 à 11:31:04

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.

Répondre à Tulifer

7

le père, le 6 jui 2009 à 11:41:01

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 ?

Répondre à le père

8

Tulifer, le 6 jui 2009 à 11:47:21

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.

Répondre à Tulifer

9

le père, le 6 jui 2009 à 11:59:09

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.

Répondre à le père

10

Tulifer, le 6 jui 2009 à 13:38:03

Oui

Répondre à Tulifer

11

le père, le 6 jui 2009 à 13:50:22

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

Répondre à le père

12

 Tulifer, le 6 jui 2009 à 13:56:04

Ok merci bien :).

Répondre à Tulifer
Collection CommentÇaMarche.net