Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 14/10/2006, 17h58   #1
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
Par défaut [SQL] valeur dans la bdd

Salut,
j'ai sur ma page une valaur dans l'url du type page.php?search=qqchose

J'ai dans ma base une table recherche, avec les lignes : recherche et nombre

Je voudrais récupérer la valeur dans l'url de search et l'insérer dans ma bdd dans la table recherche et mettre la valeur search dans recherche et si cette valeur n'existe pas encore dans la table mettre 1 en nombre sinon faire +1.

Comment faire?

Merci
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 18h08   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Les variables passés en URL font partis, en PHP, d'un élément qu'on appel Tableau Super Global.

Pour récupérer la valeur de ta variable passé en URL, tu appalé ce tableau :

Code :
1
2
 
$_GET['nom_variable']
£_GET correspond à toute les variables passés en URL (dans cette URL : search?mot=voila, "mot" représente le nom de la variable, et "voila" le contenu de la variable...)

Apès, pour passer cette variable en BDD, rien de plus simple : tu fais une requette SQL avec le contenu de la variable, et voila !!!

viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 18h14   #3
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
En fait , mon problème est ma requete car elle ne fonctionne pas.
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 19h17   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Je suis Madame Irma : surtout ne nous donne pas ta requête, c'est plus simple pour moi de t'aider sans savoir ce qui pose problème
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 19h39   #5
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
 
 
$serveur="*";
$login="recherche";
$password="*";
$base="recherche";
$table="recherche";
 
 
$db = mysql_connect($serveur, $login, $password); 
mysql_select_db($base,$db);
 
 
 
		$query = "UPDATE recherche SET nombre=nombre+1 WHERE recherche =caca"; 
		$result = mysql_query($query);
 
 
		$query = "INSERT INTO `recherche` ( `recherche` , `nombre` ) VALUES ('$search', '1')";
		$result = mysql_query($query);
 
?>
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 20h17   #6
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Je pense que tu ne dois pas faire tes calculs numériques dans ta requête:

ton code:
Code :
1
2
3
 
$query = "UPDATE recherche SET nombre=nombre+1 WHERE recherche =caca"; 
$result = mysql_query($query);
Une solution?
Code :
1
2
3
4
 
$nouveauNb = nombre+1;
$query = "UPDATE recherche SET nombre=" . $nouveauNombre . " WHERE recherche =caca"; 
$result = mysql_query($query);
sinon, ton nombre devrait être une valeur et non la chaîne de caractère "nombre"...

Peux tu détailler le contenu de ta table de bdd?

++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 20h58   #7
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
Sa ne change rien, ca rajoute un champ.

Code :
1
2
3
4
CREATE TABLE `recherche` (
  `recherche` varchar(255) NOT NULL default '',
  `nombre` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Code :
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
<?php
 
 
 
$serveur="***";
$login="recherche";
$password="***";
$base="recherche";
$table="recherche";
 
 
$db = mysql_connect($serveur, $login, $password); 
mysql_select_db($base,$db);
 
 
 
		$nouveauNb = nombre+1;
$query = "UPDATE recherche SET nombre=" . $nouveauNombre . " WHERE recherche =$search"; 
$result = mysql_query($query);
 
 
		$query = "INSERT INTO `recherche` ( `recherche` , `nombre` ) VALUES ('$search', '1')";
		$result = mysql_query($query);
 
?>
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 21h02   #8
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
tu n'utilise pas la bonne variable

Code :
1
2
3
4
$nouveauNb = nombre+1;
$query = "UPDATE recherche SET nombre=" . $nouveauNombre . " WHERE recherche =$search"; 
$result = mysql_query($query);
++
JC
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 21h07   #9
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
C'est toi qui m'avait donné comme ca, sinon ca ne change rien, si la valeur est la même sa rajoute une ligne dans la bdd avec la valeur et 1 comme nombre et je voudrais que si c'est la même valeur, de rajouter +1 à nombre de la valeur existante.
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 23h35   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
1) Donne un format de nombre à ton champ... 'nombre' ! => INT, BIGINT...
2) Ensuite, tout se fait en 1 ou 2 requêtes :
a) un update sur le terme de recherche, en incrémentant le champ 'nombre'
b) un insert si la recherche n'existait pas.

Je te file un coup de main pour ne pas y passer la nuit.
Code :
1
2
3
4
5
6
$query = 'UPDATE recherche SET nombre=nombre+1 WHERE recherche ="'.$search.'"'; 
$result = mysql_query($query);
if (mysql_affected_rows()!==1) {
  $query='INSERT INTO recherche (recherche, nombre) VALUES ("'.$search.'", 1)';
  $result=mysql_query($query);
  }
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 15h53   #11
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
Merci de ton aide, ca marche parfaitement.

Merci ++
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 13h09   #12
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Et l'autre Hé !!!!

VG comme tu te la pète !!!!
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 14h43   #13
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
J'ai donc mis ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
 
 
$serveur="*";
$login="recherche";
$password="*";
$base="recherche";
$table="recherche";
 
 
$db = mysql_connect($serveur, $login, $password); 
mysql_select_db($base,$db);
 
 
 
	$query = 'UPDATE recherche SET nombre=nombre+1 WHERE recherche ="'.$search.'"'; 
$result = mysql_query($query);
if (mysql_affected_rows()!==1) {
  $query='INSERT INTO recherche (recherche, nombre) VALUES ("'.$search.'", 1)';
  $result=mysql_query($query);
  }
 
?>
Je voudrais juste en fait que à chaque fois il mette dans la ligne 'date', la date et l'heure actuel de ce style : 14:42 18/10/2006

Comment?
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 15h46   #14
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par viviboss
Et l'autre Hé !!!!

VG comme tu te la pète !!!!
Je dois avouer être un peu sec dans cette affaire... Mais c'est pour le bien de Kevinf qui depuis presque 500 messages a tendance à poser les questions avant d'avoir réfléchi à la réponse
Mais je ne désespère pas ! Et heureusement (surtout pour mes élèves, les pauvres ) je ne suis pas toujours comme ça !
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 15h49   #15
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par kevinf
Je voudrais juste en fait que à chaque fois il mette dans la ligne 'date', la date et l'heure actuel de ce style : 14:42 18/10/2006

Comment?
Exemple typique de ma réflexion ci-dessus
Allez, un coup de main :
1) Tu crées un champ (pas une "ligne") date, avec comme format DATE, DATETIME... au choix.
2) Tu utilises la fonction SQL NOW() pour insérer la date du jour dans ta base.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 15h50   #16
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
...et sinon comment je fais moi pour rajouter une requète dans les 2 cas?
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 15h54   #17
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Alors précise clairement que que tu veux. Veux tu garder la date de la dernière recherche, ou garder la date de toutes les recherches sur chaque mot ?
Pour obtenir de l'aide, tu dois poser des questions très clairement. Et tu verras que la solution vient souvent d'elle-même.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 16h48   #18
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
Je veux garder la date de la dernière recherche.
__________________
KevinF
kevinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 18h02   #19
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Code :
1
2
3
$query = 'UPDATE recherche SET nombre=nombre+1, date=NOW() WHERE recherche ="'.$search.'"';
 
$query='INSERT INTO recherche (recherche, nombre, date) VALUES ("'.$search.'", 1, NOW())';
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 18h13   #20
Membre actif
 
Avatar de kevinf
 
Développeur informatique
Inscription : juin 2005
Messages : 839
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2005
Messages : 839
Points : 165
Points : 165
Parfait, merci.
__________________
KevinF
kevinf 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 17h22.


 
 
 
 
Partenaires

Hébergement Web