update sur base de données

ludo_object
Invité n'ayant pas de compte PHPfrance

06 avr. 2011, 11:18

Bonjour,

Une qui récupère les données d'une base mysql
Une autre qui Update ma base.

Voici le code de la première:

Code : Tout sélectionner

<?php include_once("../config.inc2.php"); /* connexion à la base de données */ mysql_connect($config['mysql']['host'], $config['mysql']['user'], $config['mysql']['pass']); mysql_select_db($config['mysql']['db']); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>administration / modification des données</title> <style type="text/css"> <!-- .principal {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px} a { color: black; text-decoration: none; } a:hover { color: red; } --> </style> </head> <body class="principal"> <h2>modification d'une depeche</h2> <hr size="1"> <?php //récupération de la variable d'URL, //qui va nous permettre de savoir quel enregistrement modifier $nid = $_GET["nid"] ; //requête SQL: $sql = "SELECT * FROM node_revisions WHERE nid = '".addslashes($_GET['nid'])."' LIMIT 1" ; $sql1 = "SELECT * FROM content_type_news_entreprises WHERE nid = '".addslashes($_GET['nid'])."' LIMIT 1" ; //exécution de la requête: $requete = mysql_query( $sql ) ; $requete1 = mysql_query( $sql1 ) ; //affichage des données: if(( $result = mysql_fetch_object( $requete )) && ( $result1 = mysql_fetch_object( $requete1 ))) { ?> <form name="insertion" action="modification3.php?nid=<?php echo($nid) ;?>" method="POST"> <table border="1" align="center" cellspacing="2" cellpadding="2" width="100%" > NID: <input type="text" name="nid" value="<?php echo($nid) ;?>"><br> Theme<br> <input type="text" name="field_theme_news_entreprises_value" value="<?php echo($result1->field_theme_news_entreprises_value) ;?>" style="width: 100%"> <br> titre<br> <input type="text" name="title" value="<?php echo($result->title) ;?>" style="width: 100%"> <br> Chapeau<br> <textarea name="field_chapeau_news_entreprises_value" style="width: 100%; height: 200px"><?php echo($result1->field_chapeau_news_entreprises_value) ;?></textarea> <br> body<br> <textarea name="body" style="width: 100%; height: 500px"><?php echo($result->body) ;?></textarea> <br> Complement-news<br> <textarea name="field_complement_news_entreprise_value" style="width: 100%; height: 200px"><?php echo($result1->field_complement_news_entreprise_value) ;?></textarea> <br> Auteur<br> <input type="text" name="field_auteur_news_entreprises_value" value="<?php echo($result1->field_auteur_news_entreprises_value) ;?>" style="width: 100%"> <br> Entreprise<br> <input type="text" name="field_sous_theme_news_entreprise_value" value="<?php echo($result1->field_sous_theme_news_entreprise_value) ;?>" style="width: 100%"> <br> Sourcer<br> <input type="text" name="field_source_news_entreprises_value" value="<?php echo($result1->field_source_news_entreprises_value) ;?>" style="width: 100%"> <br> mots clefs<br> <input type="text" name="field_mots_cles_news_entreprises_value" value="<?php echo($result1->field_mots_cles_news_entreprises_value) ;?>" style="width: 100%"> <br> TID<br> <input type="text" name="field_term_data_tid_news_entrepr_value" value="<?php echo($result1->field_term_data_tid_news_entrepr_value) ;?>" style="width: 100%"> <br> Entreprise<br> <input type="text" name="field_sous_theme_news_entreprise_value" value="<?php echo($result1->field_sous_theme_news_entreprise_value) ;?>" style="width: 100%"> <br> <tr align="center"> <td colspan="2"><input type="submit" value="modifier"></td> </tr> </table> </form> <?php }//fin if ?> </body> </html>
Cette page fonctionne, elle récupère bien les données.

Et voici la deuxième:

Code : Tout sélectionner

<?php //connection au serveur include_once("../config.inc2.php"); mysql_connect($config['mysql']['host'], $config['mysql']['user'], $config['mysql']['pass']); mysql_select_db($config['mysql']['db']);   //récupération des valeurs des champs: //field_theme_news_entreprises_value: $title = isset($_POST['title']) ? $_POST['title'] : ''; $body = isset($_POST['body']) ? $_POST['title'] : '';   //récupération de l'identifiant de la personne: $nid = isset($_GET['nid']) ? $_GET['nid'] : '';   //création de la requête SQL: $sql = "UPDATE node_revisions SET `title` = '".$title."',`body` = '".$body."' WHERE node_revisions.nid = '".$nid."'" ;   //exécution de la requête SQL: $requete = mysql_query($sql) or die( mysql_error() );     //affichage des résultats, pour savoir si la modification a marchée: if($requete) { echo("La modification à été correctement effectuée") ; } else { echo("La modification à échouée") ; } ?>
Là, rien ne se passe. Les données ne sont pas modifier dans ma base.

Je ne vois pas mes erreurs.

Merci de votre aide.

ViPHP
xTG
ViPHP | 7331 Messages

06 avr. 2011, 12:36

Que donnes la requête si tu l'affiches ?

PS : on n'utilise pas addslahes() mais mysql_real_escape_string() pour protéger des champs dans une requête.

ludo_object
Invité n'ayant pas de compte PHPfrance

06 avr. 2011, 12:40

Quand j'affiche la requete ?

Je ne comprend pas. Il ne se passe rien, j'ai un écran blanc. :(

ViPHP
xTG
ViPHP | 7331 Messages

06 avr. 2011, 14:23

Si tu as un écran blanc c'est que tu as une erreur PHP mais que tu ne les affiches pas.
Il y a dans le php.ini la configuration error_reporting.

ludo_object
Invité n'ayant pas de compte PHPfrance

06 avr. 2011, 14:48

Humm, je ne vois pas mon erreur et je n'ai pas accés au fichier php.ini sur le serveur :(

ViPHP
xTG
ViPHP | 7331 Messages

06 avr. 2011, 15:38

echo $sql;
Essayes de lancer la requête générée via phpMyAdmin, cela te renseignera.
Du moins si tu as l'affichage, si tu ne l'as pas c'est que le problème vient avant, donc sans doute la connexion.

ludo_object
Invité n'ayant pas de compte PHPfrance

06 avr. 2011, 15:40

Comment, je peux tester la requete générée ?

Merci de ton aide

ludo_object
Invité n'ayant pas de compte PHPfrance

06 avr. 2011, 15:47

Non, pas d'affichage.
Pourtant, c'est la meme connexion que sur la première page.

Est il possible que la table soit protéger en Update ? Et si oui, comment le vérifier ?

ludo_object
Invité n'ayant pas de compte PHPfrance

06 avr. 2011, 17:10

Re,

J'ai repris le script, il fonctionne bien sur une table mais pas sur 2. Je pense que mon erreur vient de mes boucles if:

Code : Tout sélectionner

if((mysql_query($sql)) && (mysql_query($sql1)))
Est ce que ce je viens de faire est bon (la syntaxe du if ) ?

Merci de votre aide