Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 09h21   #1
Membre à l'essai
 
Inscription : septembre 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 140
Points : 23
Points : 23
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 :
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 :
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 !
evevev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 10h03   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
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 :
SELECT COUNT(id) AS nbId FROM TABLE WHERE IDloc=...
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 10h12   #3
Membre à l'essai
 
Inscription : septembre 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 140
Points : 23
Points : 23
ok, merci de ta réponse !
evevev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h09.


 
 
 
 
Partenaires

Hébergement Web