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 05/10/2011, 22h36   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
Par défaut INSERT aprés un SELECT qui ne marche pas

Bonjour a tous je viens vers vous car je sèche vraiment

j'ai essayé de faire un insert si la sélection existe pas, ne marche pas et je procède de la sorte.

$_POST['email_box'] = email@email.com

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$de = mysql_query("SELECT id FROM user WHERE id='{$mailo}'  ");
				   
if(!ereg("\u", $nombreee)){
if (@mysql_num_rows($de)>0) {
					  
$update++;
mysql_query("UPDATE `tagfacebook`.`user` SET  `misajour` ='{$ladate}' WHERE `user`.`account` = '{$_POST['email_box']}' AND `user`.`id` = '{$mailo}' LIMIT 1");
// echo "id existe donc mise a jour{$mailo} et nom {$name}<br />";
                
                 
} else {
				  
$ajout++;
mysql_query("INSERT INTO user (  id , account, name, misajour, ajout ) values ('$mailo', '{$_POST['email_box']}',  '$nombreee', '1', '{$ladate}' );");
}
			
}

sa ne marche pas.

et enfin si je met la valeur en dur de ce que représente $_POST['email_box'] et bien la sa ne marche pas non plus :s

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

$de = mysql_query("SELECT id FROM user WHERE id='{$mailo}'  ");
				   
if(!ereg("\u", $nombreee)){
if (@mysql_num_rows($de)>0) {
					  
$update++;
mysql_query("UPDATE `tagfacebook`.`user` SET  `misajour` ='{$ladate}' WHERE `user`.`account` = '{$_POST['email_box']}' AND `user`.`id` = '{$mailo}' LIMIT 1");
// echo "id existe donc mise a jour{$mailo} et nom {$name}<br />";
                
                 
} else {
				  
$ajout++;
mysql_query("INSERT INTO user (  id , account, name, misajour, ajout ) values ('$mailo', 'email@email.com',  '$nombreee', '1', '{$ladate}' );");
}
			
}
si je met seulement

Code :
1
2
mysql_query("INSERT INTO user (  id , account, name, misajour, ajout ) values ('$mailo', '{$_POST['email_box']}',  '$nombreee', '1', '{$ladate}' );");
la sa insert

et si je met une info bidon a la place de $POST['email_box'] la sa insert.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$de = mysql_query("SELECT id FROM user WHERE id='{$mailo}'  ");
				   
if(!ereg("\u", $nombreee)){
if (@mysql_num_rows($de)>0) {
					  
$update++;
mysql_query("UPDATE `tagfacebook`.`user` SET  `misajour` ='{$ladate}' WHERE `user`.`account` = '{$_POST['email_box']}' AND `user`.`id` = '{$mailo}' LIMIT 1");
// echo "id existe donc mise a jour{$mailo} et nom {$name}<br />";
                
                 
} else {
				  
$ajout++;
mysql_query("INSERT INTO user (  id , account, name, misajour, ajout ) values ('$mailo', 'autreemail@autreemail.com',  '$nombreee', '1', '{$ladate}' );");
}
			
}


de quoi se rendre marteau non ???

si vous avez une idée je vues bien.
mrsoyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 01h43   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Faudrait être plus précis quand tu dis que cela ne marche pas, aucune requête ne retourne rien ?

Fais déjà afficher (pendant le développement) les erreurs mysql dans toutes tes requêtes, et fais aussi afficher le contenu des requêtes pour voir ce que donne la chaine de caractères, genre :

Code :
1
2
3
4
5
6
$req = "SELECT id FROM user WHERE id='".mysql_real_escape_string($mailo)."'";
 
echo $req;
echo '<br />';
 
$de = mysql_query($req) or die(mysql_error());
Tu t'apercevras peut-être que tu as des pb dans la récupération de tes variables.

Par ailleurs, "ereg" est déprécié, utilises preg_match à la place.

Pour le reste, j'ai pas le temps de regarder plus en détail mais il est probable que tu pourrais utiliser la syntaxe
INSERT INTO ... ON DUPLICATE KEY UPDATE

Remarque : utilises toujours mysql_real_escape_string sur les variables dans tes requêtes.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h26   #3
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Bonjour,
Nous venons de traiter hier de ce sujet de façon assez compléte envisageant MySql et PDO.
Le sujet était de faire un INSERT en une seule commande sans créer d'erreur ou de doublon.

Tu devrais lire ce sujet en détail tout y est expliqué, même comment modifier ta table pour faciliter encore plus cette superbe psiibilitée.
Bonne lecture
Christele
http://www.developpez.net/forums/d11...-existe-table/
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h45   #4
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
J'ai honte mais j'ai pu résoudre mon problème, merci pour vos réponse.

Au paravent j'inserer la date du jour dans misajour, et plus loin dans ma page de code j'ai un script qui supprime tout les élément qui ne sont pas à la date du jour et qui ont le même email 2 jours de recherche autour de mon script alors que quelque ligne plus loin j'avais ma réponse.
mrsoyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h20.


 
 
 
 
Partenaires

Hébergement Web