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 :

Modifier une double requête [Débutant(e)] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 223
    Points : 68
    Points
    68
    Par défaut Modifier une double requête
    Bonjour,
    Je cherche à modifier une requête mais avec les changements que je fais, ça ne marche pas, plus aucune donnée ne rentre dans la bdd.
    Voilà ma requête d'origine (sur une table COMPTEUR avec un champ IDloc et un champ NOMBRE) :
    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
     
    if(isset($_POST['id_loc'])) {
    	$id_loc = htmlentities($_POST['id_loc']);
     
    	// on sélectionne la location
    	$requete = "SELECT * FROM compteur WHERE IDloc = ". $id_loc ."";
    	// on exécute la requête
    	$resultat = mysql_query($requete) or die(mysql_error()); 
    	// on compte le nombre de lignes
    echo ($requete);
     
    	$existe = mysql_num_rows($resultat);
     
    	if($existe != 0) {
    		// la location existe
    		$requete2 = "UPDATE compteur SET nombre = nombre + 1 WHERE IDloc = ". $id_loc ."";
    	} else {
    		// la location n'existe pas
    		$requete2 = "INSERT into compteur(IDloc, nombre) values(".$id_loc.", 1)";
    	}
    	// on exécute la requête
    	$resultat2 = mysql_query($requete2);
    }
    Elle rajoute 1 au champ nombre si l'IDloc existe déjà dans la table ; si l'IDloc n'existe pas, elle crée la ligne et mets le compteur a 1. Cette requête fonctionne.
    Je voudrais la simplifier en supprimant le fait de vérifier si la ligne existe, et je voudrais que, à chaque fois, une nouvelle ligne se crée avec 1 dans le champ NOMBRE.
    Donc j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if(isset($_POST['id_loc'])) {
    	$id_loc = htmlentities($_POST['id_loc']);
     
    	// on sélectionne la location
    	$requete = "SELECT * FROM compteur WHERE IDloc = ". $id_loc ."";
    	// on exécute la requête
    	$resultat = mysql_query($requete) or die(mysql_error()); 
     
    	$requete2 = "INSERT into compteur(IDloc, nombre) values(".$id_loc.", 1)";
    	}
    	// on exécute la requête
    	$resultat2 = mysql_query($requete2);
    }
    ... mais rien ne se passe, vous savez pourquoi ? Merci de votre aide !

  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,

    Ce que tu veux faire ne relève pas d'une simple simplification : le deuxième bloc de code n'est pas équivalent au premier.
    Dans le deuxième tu ne fais qu'insérer des données au lieu de les incrémenter. Par ailleurs il se pourrait que tu aies une contrainte d'unicité sur le champ IDloc et du coup tu ne puisses pas "dupliquer" cette valeur à chaque insertion.
    A moins d'avoir une table gigantesque, il est préférable de faire un
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(id) AS nbId FROM table WHERE IDloc=...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 223
    Points : 68
    Points
    68
    Par défaut
    ok, merci de ta réponse !

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

Discussions similaires

  1. Comment faire une double requête sur une table
    Par giova_fr dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/06/2010, 18h08
  2. [AC-2003] Comment construire une double requête ?
    Par [ZiP] dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/02/2010, 11h42
  3. Modifier une requête par des données différente
    Par leloup84 dans le forum Requêtes
    Réponses: 9
    Dernier message: 06/03/2006, 14h23
  4. Modifier une requête dans toutes ces tables...
    Par SnickeursMan dans le forum Requêtes
    Réponses: 6
    Dernier message: 14/12/2005, 13h08
  5. Modifier une requête en fonction de boutons d'option
    Par JahRastafari dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 13h42

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