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 :

INSERT aprés un SELECT qui ne marche pas


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Points : 43
    Points
    43
    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 : 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
    $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 : 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
    
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
    $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.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Invité
    Invité(e)
    Par défaut
    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/

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Points : 43
    Points
    43
    Par défaut
    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.

Discussions similaires

  1. [AC-2003] Requête INSERT INTO sous VBA qui ne marche pas
    Par Shinoda00 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/03/2011, 09h56
  2. readonly dans un select qui ne marche pas sous IE
    Par jules_diedhiou dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/03/2009, 13h17
  3. Insertion d'un fichier dans un BLOB qui ne marche pas
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 15/11/2007, 19h57
  4. Select Case qui ne marche pas
    Par Zak Blayde dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2007, 13h45
  5. Socket, recv et select qui ne marche pas
    Par Zapan dans le forum Réseau
    Réponses: 18
    Dernier message: 30/06/2006, 20h19

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