IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requete pas prise en compte quand je met dans mon champ des ' [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut Requete pas prise en compte quand je met dans mon champ des '
    Bonjour a tous.

    Voila j'ai un formulaire basique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <p>
    				<label class="text">First Name :</label><input class="text" name="IFirstname" type="text" size="30" maxlength="30" <?php if (isset($_POST['IFirstname'])) {echo 'value="' .$_POST['IFirstname']. '" ';}?> /><span class="warning">*</span>
    			</p>
     
    			<p>
    				<label class="text">Last Name :</label><input class="text" name="ILastname" type="text" size="30" maxlength="30" <?php if (isset($_POST['ILastname'])) {echo 'value="' .$_POST['ILastname']. '" ';}?> /><span class="warning">*</span>
    			</p>
    ma requête pour ajouter les valeurs est celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fname=$_POST['IFirstname'];
    	$lname=$_POST['ILastname'];
     
    $sql=mysql_query("INSERT INTO `contacts`(Last_name, First_name)

    Tout marche pour le mieux si ce n'est que lorsque je rempli un champ avec des ' ... alors ma requête ne passe plus.

    Comment résoudre ce problème ?

    Merci

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Il faut utiliser mysql_real_escape_string()

  3. #3
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    Il faut utiliser la fonction mysql_real_escape_string.

    Gillou.

  4. #4
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Points : 5 379
    Points
    5 379
    Par défaut
    Teint !! Je ne connaissais pas cette fonction !!
    J'utilise la fonction php addslashes mais je sens que je ne l'utiliserai plus.
    mysql_real_escape_string m'a l'air plus appropriée !!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    Merci pour toutes vos reponses.. alors j'ai essayer pas mal de truc.

    J'ai d'abord essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string()
    je n'ai pas reussi a appliquer cette fonction il me marquer toujours une erreur.

    ensuite j'ai essayer la fonction

    sans résultat : ici la requête passée mais ne m'enregistrer rien.

    puis j'ai trouver ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $photo = str_replace ( "'" , "''" , $photo ); 
    $lname = str_replace ( "'" , "''" , $lname );
    $fname = str_replace ( "'" , "''" , $fname );
    qui marche.
    maitenant je sais pas si avec les autre caractéres speciaux cela marchera toujours mais j'étais surtout embeter avec les simple guillement.

  6. #6
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    et si tu nous donnais l'erreur que cela t'indiquait? ça t'éviterais de ré-inventer la roue par un système qui ne rouleras pas aussi bien

  7. #7
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    En reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fname=mysql_real_escape_string($_POST['IFirstname']);
    $lname=mysql_real_escape_string($_POST['ILastname']);
     
    $sql=mysql_query("INSERT INTO `contacts`(Last_name, First_name)

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    enfaite je passe par une fonction!

    Donc mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <p>
    					<label class="text">First Name :</label><input class="text" name="IFirstname" type="text" size="30" maxlength="30"<?php if (isset($_POST['IFirstname'])) {echo 'value="' .$_POST['IFirstname']. '" ';}?>/><span class="warning">*</span>
    				</p>
     
    				<p>
    					<label class="text">Last Name :</label><input class="text" name="ILastname" type="text" size="30" maxlength="30"<?php if (isset($_POST['ILastname'])) {echo 'value="' .$_POST['ILastname']. '" ';}?>/><span class="warning">*</span>
    				</p>
    ensuite j'ai mes conditions et mes récupérations de variables et j'apelle ma fonction addsales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Check si tout les Champs requis sont définis et non nul
    	if (isset($_POST['IGender']) && isset($_POST['IFirstname']) && isset($_POST['ILastname']) && isset($_POST['ITitle']) && $_POST['IGender']!="" && $_POST['IFirstname']!="" && $_POST['ILastname']!="" && $_POST['ITitle']!="")
    	{
     
    	// Récupération des données  	
     	$lname=$_POST['ILastname'];
     	$fname=$_POST['IFirstname'];
     
    // Connecxion au serveur mysql
     
      	// Connexion a la base de donnée : capgemini
     
    		// Verification si le Nom est deja utilisé
      		$Resultat=mysql_query("SELECT * FROM `sales` WHERE `Last_name` LIKE '$lname'");
      		if (mysql_numrows($Resultat)==0) // Le Nom n'est pas encore utilisé => on enregistre le Sale	
      		{
    		AddSales($photo,$lname,$fname,$gender,$DisciplineCs,$DisciplineOs,$DisciplineTs,$title,$mobile,$mail,$active);	   /* Appel de la fonction qui se charge d'ajouter un sales */	
    		}
    et ensuite voici ma fonction addsales simplifiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function AddSales($photo,$lname,$fname,$gender,$DisciplineCs,$DisciplineOs,$DisciplineTs,$title,$mobile,$mail,$active)
    {  	
     
    $photo = str_replace ( "'" , "''" , $photo ); 
    $lname = str_replace ( "'" , "''" , $lname );
    $fname = str_replace ( "'" , "''" , $fname );
     
     
    				$sql=mysql_query("INSERT INTO `sales`(Last_name, First_name, Gender, Cs, Os, Ts, Title, Mobile, Email, Photo, Datecreation, Active) VALUES('$lname','$fname', '$gender', '$DisciplineCs', '$DisciplineOs', '$DisciplineTs', '$title', '$mobile', '$mail', '$nomphoto', '".date("Y-m-d")."', '$active')");

  9. #9
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Je me permets de te re-soumettre mon code

    Citation Envoyé par RideKick Voir le message
    En reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fname=mysql_real_escape_string($_POST['IFirstname']);
    $lname=mysql_real_escape_string($_POST['ILastname']);
     
    $sql=mysql_query("INSERT INTO `contacts`(Last_name, First_name)

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Points : 146
    Points
    146
    Par défaut
    mille excuse !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fname=mysql_real_escape_string($fname);
    $lname=mysql_real_escape_string($lname);
    marche parfaitement!

    c'est juste que j'avais fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string($lname);
    Merci a tous :p je passe en resolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Modification de requete pas prise en compte
    Par Pierre-alain dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/04/2011, 14h12
  2. Réponses: 1
    Dernier message: 11/04/2007, 16h11
  3. [XSLT] accolades pas prises en compte
    Par audreym31 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/12/2005, 14h07
  4. Annulation pas prise en compte
    Par Anduriel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/10/2005, 12h56
  5. [XSL] Mes entités ne sont pas prises en compte
    Par trent94 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/07/2005, 18h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo