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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    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 confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    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
    Membre averti
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    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 confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    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 chevronné
    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
    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
    Membre averti
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    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 confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    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());
    }

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