Requête UPDATE problématique sur le serveur distant

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 : Requête UPDATE problématique sur le serveur distant

par Victor BRITO » 16 nov. 2006, 11:25

Salut!

J'ai procédé autrement, en effectuant les requêtes d'insertion à la fin et modifiant le code comme suit pour ne pas perdre trace de l'adresse courriel (transmise par un champ caché):
<?php 
if (!isset($question1) && empty($question1)){
...
}
else{
  $courriel=$_POST['courriel'];
  ...
}
?>
Et tout marche, aussi bien localement que sur le serveur distant.

par Aureusms » 15 nov. 2006, 23:47

Bonsoir je ne sais pas si cela a quelque chose à voir mais j'ai eu le même problème.Mon serveur apache n'acceptait pas les 'nom' mais les `nom` dans mes requêtes. Ne me demande pas pourquoi, je n'y comprends rien non plus.

Requête UPDATE problématique sur le serveur distant

par Victor BRITO » 15 nov. 2006, 17:27

Salut à tous!

Toujours dans mon questionnaire, j'ai un souci concernant l'enregistrement des champs sur la base de données.

Dès que l'adresse électronique est correctement saisie, une requête insérant ladite adresse se produit. Jusqu'ici, tout va bien.

En revanche, dès que l'on coche non à la question 1 (ou oui et que tous les champs des questions restantes sont dûment renseignés), une requête UPDATE se produit, qui permet d'enregistrer le reste là où le champ contenant l'adresse électronique contient celle précédemment enregistrée. En local, tout va bien, les enregistrements sont effectués; mais, sur le serveur distant, la requête est vouée à l'échec. :shock:

Voici le code:
<?php 
session_start();
include ("mysql.php");

// Récupération des données des formulaires
// Les variables correspondant aux champs "courriel" et "question*", que je ne vous présente plus
if (isset($courriel) && !empty($courriel)) $_SESSION['courriel']=$courriel;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Enqu&ecirc;te vente priv&eacute;e - Questionnaire en ligne</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Questionnaire</h1>
<?php 
if (!isset($question1) || empty($question1)){
  // Affichage du premier formulaire
  if (!isset($courriel) || empty($courriel)){
?>
<!-- Formulaire courriel -->
<?php 
  }
  else{
    $requete_courriel_insertion="INSERT INTO questionnaire (email) VALUES ('".mysql_real_escape_string($courriel)."')";
    mysql_query($requete_courriel_insertion);
    if (mysql_insert_id()==0){
?>
<p>Un probl&egrave;me est survenu. Veuillez r&eacute;essayer plus tard.</p>
<?php 
    }
    else{
?>
<!-- Question 1 -->
<?php 
    }
  }
}
else{
  $session=$_SESSION['courriel'];
  if ($question1==1){
    $requete_reponses_insertion="UPDATE questionnaire SET question1='".intval($question1)."' WHERE email='".mysql_real_escape_string($session)."'";
    mysql_query($requete_reponses_insertion);
    if (mysql_affected_rows()==0){
?>
<p>La saisie a &eacute;chou&eacute;. Veuillez r&eacute;essayer plus tard.</p>
<?php 
    }
    else{
?>
<p>Merci pour votre r&eacute;ponse, etc.</p>
<?php 
    }
  }
  else{
    // Affichage du dernier formulaire (questions 2 à 4)
    if (!isset($question2) || empty($question2)
 || !isset($question3a) || empty($question3a)
 || !isset($question3b) || empty($question3b)
 || !isset($question3c) || empty($question3c)
 || !isset($question4) || empty($question4)
 || ($question4==3 && (!isset($question4a) || empty($question4a)))){
?>
<!-- Questions 2 à 4 -->
<?php 
    }
    else{
      if (isset($question5a) && !empty($question5a)
 && isset($question5b) && !empty($question5b)
 && isset($question5c) && !empty($question5c)
 && isset($question6) && !empty($question6)
 && isset($question7a) && !empty($question7a)
 && isset($question7b) && !empty($question7b)
 && isset($question8) && !empty($question8)
 && (($question6==2 && isset($question6a) && !empty($question6a) && $question6a!=0)
 xor ($question6!=2 && (!isset($question6a) || empty($question6a) || $question6a==0)))
 && (($question8==2 && isset($question8a) && !empty($question8a))
 xor ($question8!=2 && (!isset($question8a) || empty($question8a))))){
        $requete_reponses_insertion="UPDATE questionnaire  SET question1='".intval($question1)."', question2='".intval($question2)."',
 question3a='".intval($question3a)."', question3b='".intval($question3b)."', question3c='".intval($question3c)."',
 question4='".intval($question4)."', question4a='".mysql_real_escape_string(decodage_html($question4a))."',
 question5a='".intval($question5a)."', question5b='".intval($question5b)."', question5c='".intval($question5c)."',
 question6='".intval($question6)."', question6a='".intval(decodage_html($question6a))."',
 question7a='".intval($question7a)."', question7b='".intval($question7b)."',
 question8='".intval($question8)."', question8a='".mysql_real_escape_string(decodage_html($question8a))."'
 WHERE email='".mysql_real_escape_string($session)."'";
        mysql_query($requete_reponses_insertion);
        if (mysql_affected_rows()==0){
?>
<p>La saisie a &eacute;chou&eacute;. Veuillez r&eacute;essayer plus tard.</p>
<?php 
        }
        else{
?>
<p>Merci d'avoir pris le temps de r&eacute;pondre &agrave; notre enqu&ecirc;te, etc.</p>
<?php 
        }
      }
      // Affichage du dernier formulaire (questions 5 à 8 )
      else{
?>
<!-- Questions 5 à 8 -->
<?php 
      }
    }
  }
}
?>
</body>
</html>
Il me semble cerner le problème du côté des requêtes UPDATE, mais j'ignore si la variable $_SESSION['courriel'] est en cause.