Page 1 sur 2

pb update variable "image"

Posté : 04 juin 2006, 23:09
par YVES
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();
?> 

Posté : 04 juin 2006, 23:51
par Cyrano
La concaténation avec un "+", c'est du JavaScript, en PHP, on utilise le point ".", ceci explique peut-être celà.

Posté : 04 juin 2006, 23:52
par Truc
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 ?

Posté : 05 juin 2006, 10:34
par Ryle
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 :)

Posté : 05 juin 2006, 11:54
par Truc
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).

Posté : 08 juin 2006, 00:19
par YVES
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]

Posté : 08 juin 2006, 07:41
par Invité
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 .";";

Posté : 08 juin 2006, 11:55
par Invité
D'accord, merci je testerai celà ce soir 8)

Posté : 08 juin 2006, 22:20
par YVES
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....

Posté : 09 juin 2006, 00:23
par Truc
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 ?

Posté : 09 juin 2006, 23:18
par YVES
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();
?> 

Posté : 10 juin 2006, 00:14
par YVES
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:

Posté : 10 juin 2006, 00:22
par YVES
donc c'est déjà 1 pb de Update !

Posté : 10 juin 2006, 00:28
par YVES
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)...................................

Posté : 10 juin 2006, 00:33
par YVES
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();
?>