pb update variable "image"

Eléphant du PHP | 250 Messages

04 juin 2006, 23:09

Bonsoir,

j'ai un petit soucis avec ce bout de code, il semble que l'update fonctionne mais au lieu de changer d'image dans la base et ensuite d'afficher la nouvelle image sur la page, m'incrémente un vulgaire "0" en db (qui d'ailleurs ne s'affiche meme pas sur la page) ! :D


$sql= " SELECT vehicule FROM membres WHERE id = ". $id; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,vehicule));
if ($data== './objet/apied.gif')
       {
    echo '<center><font color="red">Vous n\'avez pas besoin d\'utiliser vos jambes pour vous déplacer, cela se fait automatiquement!</font></center>
<center><font color="black"><a href="gestion.php">retour page gestion</a></font></center>';
	}
	else
	{
$sql = "UPDATE membres SET etatvehicule=etatvehicule+'./images/go.gif' WHERE id = ".id;  
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
   $_SESSION['etatvehicule']=$_SESSION['etatvehicule']+'./images/go.gif';
}
header("Location: gestion.php");
}
mysql_close();
?> 

Mammouth du PHP | 19672 Messages

04 juin 2006, 23:51

La concaténation avec un "+", c'est du JavaScript, en PHP, on utilise le point ".", ceci explique peut-être celà.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 juin 2006, 23:52

Salut,

2 erreur d'inattention
$sql = "UPDATE membres SET etatvehicule=etatvehicule+'./images/go.gif' WHERE id = ".id;
Même erreur ici:
$_SESSION['etatvehicule']+'./images/go.gif'
Le "+" sert pour les addition or je ne pense pas que tu veuilles additionner ces deux valeurs.
Que voulais tu faire ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

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

05 juin 2006, 10:34

Objection votre honneur ! :)

Pour la requête sql, le + sert bien à la concatenation (il reprend la valeur du champ en base qu'il complete), en revanche il manque un $ à $id :)

Pour la session en revanche, c'est bien un soucis de concatenation php :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 juin 2006, 11:54

Pour la requête sql, le + sert bien à la concatenation (il reprend la valeur du champ en base qu'il complete)
Hum... oui c'est ça quand on fait bien les choses on ne connait pas cette tournure. :)

un CONCAT() est bien mieux (suivant le sens de la requête).

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

08 juin 2006, 00:19

Bon, j'ai rajouté le "$" oublié à la requète d'update et ai laissé le reste (les "+") qui foutent un "0" dans la base au lieu de changer l'image....

En fait, j'aimerais que cette requète mette l'image "go.0gif" en base et s'affiche ensuite (via la session déclarée plus bas)....
$sql = "UPDATE membres SET etatvehicule=etatvehicule+'./images/go.gif' WHERE id = ".$id;  
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
   $_SESSION['etatvehicule']=$_SESSION['etatvehicule']+'./images/go.gif';
}
header("Location: gestion.php");
}
mysql_close();
?> 
je n'ai pa sencore testé avec "CONCAT" car je ne connais pas cette commande :( [/php]

Invité
Invité n'ayant pas de compte PHPfrance

08 juin 2006, 07:41

La fonction CONCAT comme son nom l'indique fait une concaténation de chaînes. Ta requête ressemblerait alors à ceci :
$sql = "UPDATE membres ".
       "SET etatvehicule = CONCAT(etatvehicule, './images/go.gif') ".
       "WHERE id = ". $id .";";

Invité
Invité n'ayant pas de compte PHPfrance

08 juin 2006, 11:55

D'accord, merci je testerai celà ce soir 8)

Eléphant du PHP | 250 Messages

08 juin 2006, 22:20

bien, en reprenant le code de l'invité ci dessus, la mise à jour dans la base donne celà:

./images/stop.gif./images/go.gif

C'est à dire que la requète ajoute l'image nouvelle à l'ancienne au lieu de la substituer...

J'ai remodifié le code ainsi:
$sql = "UPDATE membres SET etatvehicule = CONCAT(etatvehicule, './images/go.gif') WHERE id = ".$id;	
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
   $_SESSION['etatvehicule']=$_SESSION['etatvehicule']+'./images/go.gif';
}
header("Location: gestion.php");
}
mysql_close();
?> 
résultat= néant, que ce soit dans la base ou sur la page, rien ne change....

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 juin 2006, 00:23

On va reprendre doucement...

as tu été voir la doc pour CONCAT() ?

En regardant de près tu t'appercevra que ce n'est pas ce dont tu as besoin. Tu veux remplacer le contenu par un autre une simple requête de mise à jour suffirait sans concaténer le contenu déjà présent au nouveau contenu.
... etatvehicule='./images/go.gif' ...
Il n'y a pas toute la requête faut la compléter :wink:

Ensuite tu as ceci:
if($res)
C'est quoi $res ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

09 juin 2006, 23:18

Voici le code modifié...
Mais je n'arrive pas à mettre la valeur à jour en session ni en table (toujours un "0" à la place de la nouvelle image, go.gif)...............
<?php
session_start();
?>
<?php
$db= mysql_connect(localhost, xxx, xxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql= " SELECT vehicule FROM membres WHERE id = ". $id; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,vehicule));
if ($data== './objet/apied.gif')
       {
    echo '<center><font color="red">Vous n\'avez pas besoin d\'utiliser vos jambes pour vous déplacer, cela se fait automatiquement!</font></center>
<center><font color="black"><a href="gestion.php">retour page gestion</a></font></center>';
	}
	else
	{
$sql = "UPDATE membres SET etatvehicule = etatvehicule='./images/go.gif' WHERE id = ".$id;	
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
   $_SESSION['etatvehicule']= $_SESSION['etatvehicule=./images/go.gif'];
}
header("Location: gestion.php");
mysql_close();
?> 

Eléphant du PHP | 250 Messages

10 juin 2006, 00:14

Bon, y'a 1 léger mieux avec le meme code que juste au dessus avec ceci de modifié:
$sql = "UPDATE membres SET etatvehicule = etatvehicule='./images/go.gif' WHERE id = ".$id;	
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
     $_SESSION['etatvehicule']='./images/go.gif';
}
header("Location: gestion.php");
mysql_close();
?> 
la nouvelle image s'affiche bien dans la page mais pas dans la bse de données ! (j'ai toujours mon zéro en lieu et place du chemin de l'image) :roll:

Eléphant du PHP | 250 Messages

10 juin 2006, 00:22

donc c'est déjà 1 pb de Update !

Eléphant du PHP | 250 Messages

10 juin 2006, 00:28

RECAPITULATIF
<?php
session_start();
?>
<?php
$db= mysql_connect(localhost, xxx, xxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql= " SELECT vehicule FROM membres WHERE id = ". $id; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,vehicule));
if ($data== './objet/apied.gif')
       {
    echo '<center><font color="red">Vous n\'avez pas besoin d\'utiliser vos jambes pour vous déplacer, cela se fait automatiquement!</font></center>
<center><font color="black"><a href="gestion.php">retour page gestion</a></font></center>';
	}
	else
	{
$sql = "UPDATE membres SET etatvehicule = etatvehicule='./images/go.gif' WHERE id = ".$id;	
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
$_SESSION['etatvehicule']='./images/go.gif';
}
header("Location: gestion.php");
}
mysql_close();
?> 
cela affiche bien l'image mais me met un "0" dans la db au lieu du chemin d el'image (./images/go.gif)...................................

Eléphant du PHP | 250 Messages

10 juin 2006, 00:33

Ca y est à force de persévérer :D

voilà ce qui est juste !
$sql = "UPDATE membres SET etatvehicule = './images/go.gif' WHERE id = ".$id;	
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
$_SESSION['etatvehicule']='./images/go.gif';
}
header("Location: gestion.php");
}
mysql_close();
?>