Petit probleme d'update

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Petit probleme d'update

par alexdarcy » 10 déc. 2005, 07:22

sadeq merci ... mais avant de trop se poser de question, voici ci dessous le même script php update qui fonctionne très bien sur la même base, la même table :
<? 
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>"; 
?> 
ce que je voulais simplement faire c'est l'adapter à un nouvel espace nommé actualités, avec un update actualite. Ainsi il faut enlever certaines données et adapter certaines autres, et apparement c'est là que je me suis trompé.
Par exemple je pense que c'est ceci qui deconne :
//On créé la liste des matieres 
$matieres_taille = count($matieres); 
for ($i=0; $i<$matieres_taille; $i++){ 
    $matieres_definies .= $matieres[$i]; 
    $matieres_definies .= ":"; 
dois je remplacer matières par actualite, etc...
C'est ici à mon avis qu'il y a probleme ...

:cry:

par sadeq » 09 déc. 2005, 10:21

Bon, prenons les choses en main et reprenons depuis le début.
Dans ton script d'origine, on a déjà relevé des bizareries que tu n'as pas encore expliqué :

En effet, les variables sess_id, actualite et verification n'ont aucune origine connue.
Une variable reste formcement vide si tu ne lui affecte pas une valeur. Dans notre cas les valeurs de sess_id, actualite et verification doivent (je le présume) provenir de sources externes au programme comme $_SESSION si l'origine est la session, $POST ou $_GET si l'origine est un formulaire HTML ou un paramètre passé dans l'URL.

Voici une proposition de correction qui suppose que sess_id et $actualite proviennent de paramètres passés dans l'URL ou d'un formulaire en mode GET.
Quant à la variable $verification, je ne peux me prononcer.

Pour exécuter ce code tapez l'URL : http ://le_site_web/nom_de_la_page.php?sess_id=1&actualite=blabla
C'est à dire qu'on vient de démarrer le programme en lui passant deux valeurs : 1 pour sess_id et "blabla" pour actualite
<? 
session_start(); 

//Récupèrer les valeurs externes (ici elles sont passées par la méthode GET dans l'URL)
$sess_id = $_GET["sess_id"];
$actualite = $_GET["actualite"];

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>"; 
?>
Voici pour les erreurs de formalisme PHP, mais fait attention, si la valeur de $sess_id que tu passe à ton programme ne correspond à aucun enregistrement dans la table membre, le UPDATE ne fait rien. Ce qui est normal.

par alexdarcy » 08 déc. 2005, 19:41

Ajoute une ligne pour faire afficher ta requête echo($sql);
Copie la requête affichée et teste la directement dans phpMyAdmin: tu auras le message d'erreur directement et en principe clair et explicite.

Simplement dire "Ça marche pas" ne nous aide pas du tout.
ben oui mais je ne recois pas de message d'erreur ! donc ke dois je dire d'autre ?
je vais essayer ton conseil merci
:wink:

par Cyrano » 08 déc. 2005, 19:06

Ajoute une ligne pour faire afficher ta requête echo($sql);
Copie la requête affichée et teste la directement dans phpMyAdmin: tu auras le message d'erreur directement et en principe clair et explicite.

Simplement dire "Ça marche pas" ne nous aide pas du tout.

par alexdarcy » 08 déc. 2005, 18:56

mouai merci les gars !!! Chacun vient mettre son grain de sel, mais personne ne trouve la solus apparement ... dommage !

merci qd meme
:cry:

par alexdarcy » 08 déc. 2005, 18:01

qu'est-ce que cela signifie :
//On créé la liste des matieres 
$matieres_taille = count($matieres); 
for ($i=0; $i<$matieres_taille; $i++){ 
    $matieres_definies .= $matieres[$i]; 
    $matieres_definies .= ":"; 
ça se trouve dans l'autre script update. Est-ce nécéssaire pour un update ?

:oops:

par alexdarcy » 08 déc. 2005, 17:54

tas pas moyen d'afficher les erreurs sql?
nop ! comment fait-on pour afficher les erreurs sql ?? Donne moi un exemple concret stp..
:oops:

par pitt » 08 déc. 2005, 17:51

tas pas moyen d'afficher les erreurs sql?

par alexdarcy » 08 déc. 2005, 17:21

Hum ! je me demande si je vais résoudre mon probleme ici, moi !!!
:cry:

par alexdarcy » 08 déc. 2005, 16:55

essaie
$now=now();
$sql = "UPDATE membres SET actualite='$actualite', last_modif='$now' WHERE id='$sess_id' "; 
Yo yo ça marche po non plus .... :axe:

par pitt » 08 déc. 2005, 16:51

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

par alexdarcy » 08 déc. 2005, 16:47

N'oubliez po mon probleme svp, merci. Je suis dessus depuis 2 nuits et ça commence à m'enerver ...

[-o<

par alexdarcy » 08 déc. 2005, 16:33

$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:

par pitt » 08 déc. 2005, 16:27

$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

par alexdarcy » 08 déc. 2005, 16:25

....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: