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 :

Requête SQL non pris en compte


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut Requête SQL non pris en compte
    Bonjour,

    J'aimerais avoir un peu d'aide car je bloque depuis deux jours.

    J'ai écrit un truc simple en phpavec 3 requête SQL. Je suis chez free en hébergeur ça peut peut être être important.

    J'ai un formulaire avec 4 champ qui fait appel au fichier ci-dessous afin d'insérer, modifier ou supprimer des informations dans la bdd.

    Mais j'ai pas l'impression que la connexion à la base ne fonctionne pas du coup mes requêtes non plus. voilà le code utilisé :

    Je me suis servit d'un vieux bouquin php/mysql alors est-ce que la syntaxe ne fonctionne plus :/

    Merci par avancepour votre aide.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    $serveur = "sql.free.fr";
    	$nom_base = "1blabla";
    	$login = "blabla";
    	$pwd = 'blabla';
     
    	if($db = mysql_connect($serveur, $login, $pwd)) {
        if($dbb = mysql_select_db($nom_base)) {
            mysql_close();
        } else {
            die("connexion à la base $nom_base impossible");
        }
    } else {
        die("connexion au serveur $serveur impossible");
    }
     
    	if (isset($insert))
    		$requete = "INSERT INTO tennis (numlicence, nomlic, prelic, annee) VALUES ('$numlicence', '$nomlic', '$prelic', '$annee')";
    	if (isset($modif))
    		$requete = "UPDATE tennis SET numlicence=$numlicence, nomlic=$nomlic, prelic=$prelic, annee=$annee ";
    	if (isset($suppr))
    		$requete = "DELETE FROM tennis WHERE numlicence = '$numlicence'";
     
    		//Execution de la requête SQL
     
    		$resultat = mysql_query ($requete);
    		echo "<HR> La requête $requete a été effectuée.\n";

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Lis bien ce que tu as codé en ligne 8/9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($dbb = mysql_select_db($nom_base)) {
        mysql_close();
    }
    Concrètement ces lignes veulent dire : quand la sélection de la base réussit alors fermer la connexion !

    Cela devrait être plus de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $serveur  = "sql.free.fr";
    $nom_base = "1blabla";
    $login    = "blabla";
    $pwd      = 'blabla';
     
    $cnx = mysql_connect($serveur, $login, $pwd);
     
    if ($cnx === false) {
        die("connexion au serveur $serveur impossible");
    }
     
    if (mysql_select_db($nom_base) === false) {
        die("connexion à la base $nom_base impossible");        
    }
    Ensuite je t'invite à potasser un peu tout ça parce que là il me semble que tu vas galérer. Par ici pour la lecture et les exemples pour l'inspiration

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Merci pour ton aide je vais tester.

    Après quand tu dis galérer tu parles de quel point ?

    Mis à part la connexion à la bdd ou serveur qui ne fonctionne pas les requêtes fonctionnent correctement taper dans l'interface phpmyadmin directement.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par nikko2028777 Voir le message
    Mis à part la connexion à la bdd ou serveur qui ne fonctionne pas
    Je te rappelle une chose : comme chez la plupart des hébergeur, l'accès à la base de données ne peut être fait qu'en local. L'accès distant est désactivé.
    Pour être plus clair, si tu essaie d'ouvrir une connexion à partir de ton environnement de développement sur ton pc vers la base de données distante, la tentative échouera. Le seul moyen de t'y connecter c'est de l'ouvrir à partir d'un script hébergé sur le serveur free.

    Enfin c'est généralement le cas, maintenant je ne sais pas dans quel cas d'utilisation des services free tu te ranges.

    Après quand je dis galérer c'est qu'au niveau de ton script, il n'y a aucune sécurité et if faut essayer d'être cohérent sur le typage des données.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Points : 491
    Points
    491
    Par défaut
    Les variables que tu passe a ta requêtes SQL doivent etre controllées sinon tu risque d'avoir des attaques de type injection.
    utilise mysql_real_escape_string() pour les variable de type string, et pour les entier il faut convertir (caster le type) la variable en entier, si tu lui passes une chaîne non numérique, ça te donnera 0.
    Sinon le mieux c'est de passer par PDO
    Ta requêtes pourrais etre écrite de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //Préparer la requête
    $sql = 'INSERT INTO tennis (numlicence, nomlic, prelic, annee) VALUES (?, ?, ?, ?)';
    $query = $pdo->prepare($sql);
    //Associer des valeurs aux place holders
    $query->bindValue(1, $numlicence, PDO::PARAM_STR);
    $query->bindValue(2, $nomlic, PDO::PARAM_STR);
    $query->bindValue(3, $prelic, PDO::PARAM_STR);
    $query->bindValue(4, $annee, PDO::PARAM_STR);
    //Compiler et exécuter la requête
    $query->execute();
    $query->closeCursor();
    $query = NULL;
    Remplace PARAM_STR par PARAM_INT pour les variables en entier.

  6. #6
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Je te rappelle une chose : comme chez la plupart des hébergeur, l'accès à la base de données ne peut être fait qu'en local. L'accès distant est désactivé.
    Pour être plus clair, si tu essaie d'ouvrir une connexion à partir de ton environnement de développement sur ton pc vers la base de données distante, la tentative échouera. Le seul moyen de t'y connecter c'est de l'ouvrir à partir d'un script hébergé sur le serveur free.

    Enfin c'est généralement le cas, maintenant je ne sais pas dans quel cas d'utilisation des services free tu te ranges.

    Après quand je dis galérer c'est qu'au niveau de ton script, il n'y a aucune sécurité et if faut essayer d'être cohérent sur le typage des données.
    J'ai pas du m'exprimer correctement désolé mais mon fichier est bien sur le serveur free. Il ne fonctionne pas que ce soit hébergé chez free ou que je test en local.

    Après effectivement mon code n'est pas "optimisé" mais je veux déjà le faire fonctionner et suivre les étapes de mon bouquin. Le chapitre suivant explique comment améliorer son code.

    Mais avec le code du bouquin je suis déjà bloqué au niveau de l'accès à la base de donnée. Ce qui fait que mes requêtes ne fonctionnent pas je suppose.

    Pour la qualité du code je viendrai poster mon test quand il sera terminé, pour le moment il faut déjà que je solutionne mon problème d'accès à la base pour pouvoir faire mumuse

    Merci pour vos conseils en tout cas.

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon essaie avec ça et dis nous ce que tu reçois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $cnx = mysql_connect($serveur, $login, $pwd);
     
    if ($cnx === false) {
        die(mysql_error());
    }
     
    if (mysql_select_db($nom_base) === false) {
        die(mysql_error());
    }

  8. #8
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    J'ai pas de message d'erreur :



    Mais rien n'est inséré en base :/

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut

    Si l'insertion ne fonctionne pas, est-ce que la sélection fonctionne ?

  10. #10
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    J'ai modifié ma requête par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	if (isset($insert))
    		$requete = "SELECT * from Tennis";
    Cela ne me retourne rien.

    Par contre si je fais via sql.free.fr la même requête cela fonctionne après est-ce que c'est la fonction isset qui n'est pas écrite correctement ?

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Il faudrait peut être te retourner sur les forums de free. Il y a forcément un raté quelque part. Si la connexion s'ouvre sans erreur mais que tu ne récupères absolument rien c'est peut être une question de droits...
    Je ne connais pas les services de free question hébergement...

  12. #12
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Je vais regarder de ce coté merci. Je viendrai faire un retour si je trouve quelque chose

  13. #13
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Bon je ne trouve rien de bien convaincant, je pense que c'est un problème au niveau de l'écriture peut être la déclaration des variables.

    Ce soir je posterai le code des deux fichiers c'est pas long car je pense que c'est pas grand chose mais plus une erreur de ma part.

Discussions similaires

  1. [MySQL] Paramètre de requête non pris en compte
    Par designrf dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/03/2010, 09h43
  2. Réponses: 1
    Dernier message: 08/08/2007, 11h26
  3. [SQL] Requête SQL non prise en compte
    Par Petit bateau dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/07/2007, 10h43
  4. [ASE][SQL]WHERE non pris en compte
    Par Benjamin78 dans le forum Sybase
    Réponses: 1
    Dernier message: 24/03/2006, 12h00
  5. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 10h57

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