Probleme avec un script PHP

Hicham
WRInaute discret
WRInaute discret
 
Messages: 81
Inscription: 5 Jan 2004

Probleme avec un script PHP

Message le Ven Oct 14, 2005 22:04

Bonsoir :)

J'ai un tit soucis avec un script PHP masi je ne trouve pas d'ou vient l erreur :
Voila le script consiste a corriger un edito en ligne donc je n ai peut etre pas ete au plus simple mais en gros si on rentre le titre et la "signature" du dernier edito le script fait un update masi le proleme c est que meme si je rentre le bon titre et la bonne signature il me dit que ca n'existe pas :evil: alors si qq peut m aider ca sera cool :) voila le script :
Code: Tout sélectionner
<?
$titre_page = "ADMINISTRATION SU SITE ****";
include ('modele/entete.inc.php');
if (isset($_POST['submit']))
{
   function echappement ($data)
      {
         global $bd;
         if (ini_get('magic_quotes_gpc'))
         {
            $data = stripslashes($data);
         }
         return mysql_escape_string($data);
      }
   require_once ('modele/mysql_connect.php');
   
   $message = NULL;
   if (empty($_POST['titre']))
   {
      $T = FALSE;
       $message .= '<p>le titre est vide...</p>';
   }
   else
   {
      $T = echappement ($_POST['titre']);
   }

   if (empty($_POST['edito']))
   {
      $E = FALSE;
       $message .= '<p>Tu as oulié ton édito ...</p>';
   }
   else
   {
      $E = echappement ($_POST['edito']);
   }

   if (empty($_POST['signature']))
   {
      $S = FALSE;
       $message .= '<p>Tu as oublié de signer ton édito ...</p>';
   }
   else
   {
      $S = echappement ($_POST['signature']);
   }

   if ($T && $E && $S)
   {   
      $rq = "SELECT titre FROM edito_tb
            WHERE (titre= '$T' AND signature='$S')";
      $result = mysql_query($rq);
      if ($nb == 1)
      {
         $ligne = mysql_fetch_array($result, MYSQL_NUM);
         $rq = "UPDATE edito_tb SET edito=('$E') WHERE signature=$ligne[3]";
         $result = mysql_query($rq);
         if (mysql_affected_rows() == 1)
         {
            echo "<p>Ton édito vient d'étre modifié.</p>";
            include ('pied_page.inc.php');
            exit();
         }
         else
         {
            $message .="<p> Ton édito n\'a pas pu étre modifié il y a une erreur système : <p></p>" . mysql_error()."<p></p>";
         }
      }
      else
      {
         $message .="<p>Ta signature et le titre de l'édito ne correspondent pas à ceux dejà enregistrés.</p>";
      }
      mysql_close();
   }
   else
   {
      $message .= '<p> il faut recommencer</p>';
   }
}
if(isset($message))
{
   echo "$message";
}
?>


je me suis pris la tete dessus toute la journee et la je commence a voir flou ca se trouve c est tout petit truc de rien enfin j'espere
d'avance merci

Hicham

fbparis
WRInaute impliqué
WRInaute impliqué
 
Messages: 685
Inscription: 1 Fév 2005

Message le Ven Oct 14, 2005 22:14

if ($nb ==1)

$nb n'est defini nul part donc c un peu normal qu'il passe tout de suite au else...

je suppose que ici on devrait avant avoir un truc du genre :

$nb = mysql_num_rows($result);

Hicham
WRInaute discret
WRInaute discret
 
Messages: 81
Inscription: 5 Jan 2004

Message le Ven Oct 14, 2005 22:49

ouf Merci beaucoup beaucoup beaucoup :wink:

Hicham
WRInaute discret
WRInaute discret
 
Messages: 81
Inscription: 5 Jan 2004

Message le Dim Oct 16, 2005 11:32

nouveau probleme avec mon script que j'ai pas mal modifié, donc comme j'ai deja expliqué la fonction de ce script est de pouvoir modifier un edito donc je reprends 2 varibales (titre et signature) et je verifie si elles existent si oui alors je update ma base masi le probleme c'est que pour je ne sais quel raison il n update pas et le pire c est que je n'ai pas de message d'erreur precis de mysql alors du coup j'ai du mal a trouver l erreur si quelqu un peux jeter un coup d oeil au script car j ai tellement passer de temps dessus que maintenant je suis incapable de voir s il y a erreur ou pas meme si elle est flagrante :


Code: Tout sélectionner
<?
$titre_page = "ADMINISTRATION SU SITE ****";
include ('modele/entete.inc.php');
if (isset($_POST['submit']))
{
   function echappement ($data)
      {
         global $bd;
         if (ini_get('magic_quotes_gpc'))
         {
            $data = stripslashes($data);
         }
         return mysql_escape_string($data);
      }
   require_once ('modele/mysql_connect.php');
   
   $message = NULL;
   if (empty($_POST['titre']))
   {
      $T = FALSE;
       $message .= '<p>tu as oublié le titre de ton édito ...</p>';
   }
   else
   {
      $T = echappement ($_POST['titre']);
   }

   if (empty($_POST['edito']))
   {
      $E = FALSE;
       $message .= '<p>Tu as oulié ton édito ...</p>';
   }
   else
   {
      $E = echappement ($_POST['edito']);
   }

   if (empty($_POST['signature']))
   {
      $S = FALSE;
       $message .= '<p>Tu as oublié de signer ton édito ...</p>';
   }
   else
   {
      $S = echappement ($_POST['signature']);
   }

   if ($T && $E && $S)
   {   
      $rq = "SELECT titre FROM edito_tb WHERE (titre= '".$T."' AND signature='".$S."')";
      $result = mysql_query($rq);
      $nb = mysql_num_rows($result);
      if ($nb == 1)
      {
         $ligne = mysql_fetch_array($result, MYSQL_NUM);
         $rq = "UPDATE edito_tb SET edito='$E' WHERE signature='". $S ."'"; 
         $result = mysql_query($rq) or die(mysql_error().'<br>'.$rq); 
         if (mysql_affected_rows() == 1)
         {
            echo "<p>Ton édito vient d'étre modifié.</p>";
            include ('pied_page.inc.php');
            exit();
         }
         else
         {
            $message .="<p> Ton édito n'a pas pu étre modifié il y a une erreur système : <p></p>" . mysql_error()."<p></p>";
         }
      }
      else
      {
         $message .="<p>Ta signature et le titre de l'édito ne correspondent pas à ceux dejà enregistrés.</p>";
      }
      mysql_close();
   }
   else
   {
      $message .= '<p> il faut recommencer</p>';
   }
}
if(isset($message))
{
   echo "$message";
   echo "$rq";
}
?>


Merci d'avance
Hicham

fbparis
WRInaute impliqué
WRInaute impliqué
 
Messages: 685
Inscription: 1 Fév 2005

Message le Dim Oct 16, 2005 12:30

C'est pas trs propre ton truc hein :)

Deja, je vois que tu identifies toujours un article par son titre et sa signature, mais pour l'update tu ne prends que la signature, ca veut dire que si ca marche, tous les articles signes de la meme personne vont etre remplaces par le nouveau contenu ; je ne pense pas que ce soit le but souhaite..

je t'encourage vivement a assigner un identifiant unique a tes articles, ca simplifiera un peu je pense :)

Pour le reste j'ai regarde en vitesse, je ne sais pas trop, je dirais qu'il y a peut etre un probleme d'echappement (tu as essaye de faire des updates simples, sans ' ni " dans le contenu et la signature pour voir si ca marche ?

Par ailleurs, si tu retapes un contenu identique pour ton edito, rien ne sera modifie et mysql_affected_rows retournera 0.

Hicham
WRInaute discret
WRInaute discret
 
Messages: 81
Inscription: 5 Jan 2004

Message le Dim Oct 16, 2005 12:41

ok merci je vais essayer de refaire ca bien propre
merci encore

Hicham


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité