Page 1 sur 2

Petit probleme d'update

Posté : 08 déc. 2005, 05:10
par alexdarcy
Bonjour à tous
J'ai un petit probleme d'update sans message d'erreur.
Tout est bien sauf que l'actualisation ne se fait pas !
J'ai des membres avec un espace privé pour chacun. Cet espace privé sert à la gestion d'une fiche pour chacun des membres. Dans cet espace privé il y a un formulaire nommé Actualité, actualité qui doit s'imprimer sur la fiche.
Or cela ne se fait pas. J'ai 5 fichiers :

1 - la fiche où sont imprimées les actualitées : fiche_actualité.php et fiche_actualité html. Avec eux pas de probleme : si dans le champ "actualite" de la table "membres" je rentre à la main un mot sur un id précis, le mot s'imprime sur la fiche correspondante à cet id. Donc de ce coté pas de probleme.

2 - le formulaire de gestion où sont entrées les actualitées : actualite.php et actualite.html avec eux non plus pas de probleme.

3 et dernier - le script update : update_actualite.php. C'est avec lui que j'ai des probleme puisque l'update ne se fait pas.
Voici le script :
<?
session_start();
session_register(sess_id);

include_once("../../config/conf.inc.php");

if 

(!isset($sess_id)){
	echo "	<script language='JavaScript'>
         	

document.location.replace('$verification');
         	</script>";
}


//sécurisation du système --> On empeche 

l'insertion de tags html
$actualite=strip_tags($actualite);



//construction de la query SQL
$sql = "UPDATE 

membres SET actualite='$actualite', last_modif=now() WHERE id='$sess_id' ";

//echo $sql;
$base = new 

class_db($sql);
$base->free();


//redirection sur la loge
echo 	"<script language='JavaScript'>
  

document.location.replace('./../tableau.php');
 </script>";
?>
Quelqu'un peut-il me dire où se trouve ce fichu probleme ?
Merci

:cry:

Posté : 08 déc. 2005, 09:58
par Cyrano
Le problème vient probablement de la clause WHERE de ta requête : tu pointes sur un ID qui est probablement inexistant dans la base. L'identifiant de session est différent à chaque nouvelle connexion. Il te faut donc utiliser une autre manière d'identifier les lignes dans ta table. Un entier auto-incrémenté est souvent utilisé pour ce genre de choses.

Posté : 08 déc. 2005, 15:27
par alexdarcy
Le problème vient probablement de la clause WHERE de ta requête : tu pointes sur un ID qui est probablement inexistant dans la base. L'identifiant de session est différent à chaque nouvelle connexion. Il te faut donc utiliser une autre manière d'identifier les lignes dans ta table. Un entier auto-incrémenté est souvent utilisé pour ce genre de choses.
Oui, chaque membre à son propre id (id=23 par exemple) et donc chaque fiche correspond à l'id de l'id ! Et le champ id est bien en auto-incrémenté !

Au lieu de mettre - WHERE id='$sess_id' - je dois mettre - WHERE id='$fiche_id' - ???
C'est ça ? le probleme ?

:wink:

Posté : 08 déc. 2005, 15:33
par alexdarcy
Ben non cé po ça, l'update ne se fait toujours po !!!

Pffffffffffffff
:cry:

Posté : 08 déc. 2005, 15:36
par pitt
essaie de faire avec un id qui existe pour voir si ca marche pour le moment

ensuite essaie d'éxécuter la requete dans phpmyadmin voir si pas d'erreur de syntaxe et dis nous quoi

Posté : 08 déc. 2005, 15:41
par alexdarcy
essaie de faire avec un id qui existe pour voir si ca marche pour le moment
ensuite essaie d'éxécuter la requete dans phpmyadmin voir si pas d'erreur de syntaxe et dis nous quoi
CAD avec un id qui existe ? je remplace quoi ?

Pour information voici le champ "actualite" dans la table :
actualite varchar(255) Oui NULL

:oops:

Posté : 08 déc. 2005, 16:18
par sadeq
....Le problème vient probablement de Au lieu de mettre - WHERE id='$sess_id' - je dois mettre - WHERE id='$fiche_id' - ???
C'est ça ? le probleme ?

:wink:
Mais il faut transmettre $fiche_id à cette page et le récupèrer par GET ou POST ou par Session.

Posté : 08 déc. 2005, 16:25
par alexdarcy
....Le problème vient probablement de Au lieu de mettre - WHERE id='$sess_id' - je dois mettre - WHERE id='$fiche_id' - ???
C'est ça ? le probleme ?

:wink:
Mais il faut transmettre $fiche_id à cette page et le récupèrer par GET ou POST ou par Session.
Ouh là ! si tu n'explique pas mieux je ne vais rien y comprendre moi dsl
:oops:

Posté : 08 déc. 2005, 16:27
par pitt
$sql = "UPDATE membres SET actualite='$actualite', last_modif=now() WHERE id=23";
 
Par exemple ou un autre id présent dans ta base et regarde si la modif est faite

Posté : 08 déc. 2005, 16:33
par alexdarcy
$sql = "UPDATE membres SET actualite='$actualite', last_modif=now() WHERE id=23";
 
Par exemple ou un autre id présent dans ta base et regarde si la modif est faite
Beh non je viens de le faire marche po non plus !
Pour information voici le script d'un autre update utilisé et pour la même table et pour la même base, script qui fonctionne parfaitement. Je l'ai pris en exemple pour celui de "actualite"
<?
session_start();
session_register(sess_id);

include_once("../../config/conf.inc.php");

if (!isset($sess_id)){
	echo "	<script language='JavaScript'>
         	document.location.replace('$verification');
         	</script>";
}


//On créé la liste des matieres
$matieres_taille = count($matieres);
for ($i=0; $i<$matieres_taille; $i++){
	$matieres_definies .= $matieres[$i];
	$matieres_definies .= ":";
}


//sécurisation du système --> On empeche l'insertion de tags html
$theatre=strip_tags($theatre);
$long_metrage=strip_tags($long_metrage);
$court_metrage=strip_tags($court_metrage);
$television=strip_tags($television);
$chant=strip_tags($chant);
$danse=strip_tags($danse);
$cv = addslashes(nl2br($cv));


//construction de la query SQL
$sql = "UPDATE membres SET theatre = '$theatre', long_metrage = '$long_metrage', court_metrage = '$court_metrage', television = '$television', chant = '$chant', danse = '$danse', autre_experience = '$autre_experience', last_modif=now() WHERE id='$sess_id' ";
$sql2 = "UPDATE cv SET cv_blob='$cv' WHERE id_user='$sess_id'";
//echo $sql;
$base = new class_db($sql);
$base->query($sql2);
$base->free();


//redirection sur la loge
echo 	"<script language='JavaScript'>
        	document.location.replace('./../tableau.php');
       	</script>";
?>
Nous remarquons que WHERE est identique :
"UPDATE cv SET cv_blob='$cv' WHERE id_user='$sess_id'";

:cry:

Posté : 08 déc. 2005, 16:47
par alexdarcy
N'oubliez po mon probleme svp, merci. Je suis dessus depuis 2 nuits et ça commence à m'enerver ...

[-o<

Posté : 08 déc. 2005, 16:51
par pitt
essaie
$now=now();
$sql = "UPDATE membres SET actualite='$actualite', last_modif='$now' WHERE id='$sess_id' "; 

Posté : 08 déc. 2005, 16:55
par alexdarcy
essaie
$now=now();
$sql = "UPDATE membres SET actualite='$actualite', last_modif='$now' WHERE id='$sess_id' "; 
Yo yo ça marche po non plus .... :axe:

Posté : 08 déc. 2005, 17:21
par alexdarcy
Hum ! je me demande si je vais résoudre mon probleme ici, moi !!!
:cry:

Posté : 08 déc. 2005, 17:51
par pitt
tas pas moyen d'afficher les erreurs sql?