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 :

PDO insert dans une fonction elle même appelée dans une boucle


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    mai 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 75
    Points : 60
    Points
    60
    Par défaut PDO insert dans une fonction elle même appelée dans une boucle
    Bonsoir à tous,

    Voilà un nouveau casse-tête pour moi qui nécessite votre éclairage !
    J'ai une fonction qui permet d'importer un JSON et insérer une partie de ses infos en base de données.

    Tout se déroule parfaitement quand j'appelle cette fonction une fois ("une seule fois", je ne suis pas belge ). Hélas quand j'appelle cette fonction dans une boucle, rien ne s'inscrit en base. Probablement un prérequis avec PDO qui m'échappe, mais je reçois pas de message d'erreur.
    J'ai bien une solution : déplacer l'inscription en base en dehors de la fonction, dans ma boucle mais du coup je déplace un problème dont j'aurais jamais la réponse et j'aime me coucher moins bête !

    Voici le code simplifié :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    function nouveauBulletin($id,$gps) {
    			# inscription en base :
    			require_once($_SERVER['DOCUMENT_ROOT']."/bdd.php");
    			$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			$ajout = $bdd->prepare("INSERT INTO `meteo` (`id`, `temps`,`degres`,`note`) VALUES (:id, :temps, :degres, :note)");
    			$ajout->execute(array(
    				'id' => $id,
    				'temps' => $temps,
    				'degres' => $degres,
    				'note' => $note_meteo
    			));
    			$bdd = null;
    			$ajout = null;
    			return "ok";
    }
     
     
    try {
    	$i = "";
    	foreach ($tableau_elements as $element) {
    		$id = $element['id'];
    		$gps = $element['gps'];
    		nouveauBulletin($id,$gps);
    		$i++;
    	}
    	echo $i . " éléments copiés !";
    }
    catch(Exception $e) {
    	$Erreur = $e->getMessage();
    }

  2. #2
    Expert confirmé Avatar de Séb.
    Profil pro
    Inscrit en
    mars 2005
    Messages
    3 700
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mars 2005
    Messages : 3 700
    Points : 5 086
    Points
    5 086
    Par défaut
    Ton fichier bdd.php ne sera inclus qu'une fois (require_once)
    Donc au 2nd appel de la fonction $bdd n'existe pas

    Inclus bdd.php en début de script et passe $bdd en paramètre de ta fonction
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre actif Avatar de jreaux62
    Homme Profil pro
    Webmaster
    Inscrit en
    juin 2021
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : juin 2021
    Messages : 133
    Points : 265
    Points
    265
    Par défaut
    Bonjour,

    Mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    require_once($_SERVER['DOCUMENT_ROOT']."/bdd.php");
     
    function nouveauBulletin($id,$gps) {
    		# inscription en base :
    		global $bdd;
    		$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		...

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    octobre 2006
    Messages
    8 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2006
    Messages : 8 800
    Points : 4 268
    Points
    4 268
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    pourquoi est-ce mieux de déclarer en global $bdd, plutôt que de la passer en paramètre à la fonction ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  5. #5
    Membre actif Avatar de jreaux62
    Homme Profil pro
    Webmaster
    Inscrit en
    juin 2021
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : juin 2021
    Messages : 133
    Points : 265
    Points
    265
    Par défaut
    Manifestement, mon retour sur DVP déplaît à certains.....
    ....et je crois savoir à qui.

    5 NON JUSTIFIEES en - de 2 semaines...

    Ce sera donc ma dernière intervention.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    mai 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 75
    Points : 60
    Points
    60
    Par défaut
    Un grand merci à vous deux jreaux62 et Séb.
    J'ai opté pour la solution de jreaux62 et je me coucherais moins bête avec vos explications ^^

    Encore merci !

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    novembre 2006
    Messages
    20 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : novembre 2006
    Messages : 20 580
    Points : 324 397
    Points
    324 397
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    5 NON JUSTIFIEES en - de 2 semaines...
    Il est regrettable que l'on puisse voter
    - sans donner la raison
    - et surtout de manière anonyme.
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    novembre 2006
    Messages
    20 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : novembre 2006
    Messages : 20 580
    Points : 324 397
    Points
    324 397
    Par défaut
    Si vos yeux piquent à cause des fautes d'orthographe, c'est un don que vous pouvez exploiter en cliquant ici.

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    2 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 2 413
    Points : 5 321
    Points
    5 321
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Manifestement, mon retour sur DVP déplaît à certains.....
    ....et je crois savoir à qui.

    5 NON JUSTIFIEES en - de 2 semaines...

    Ce sera donc ma dernière intervention.
    Tu ne devrais pas y accorder autant d'importance, et ce quelles que soient les motivations des "moinsseurs". La seule motivation qui nous intéresse ici est le fait d'être en désaccord avec ce qui vient d'être écrit, si malheureusement elle n'est pas couplée d'une justification, qui peut déboucher dans le pire des cas sur un débat, au final ça ne rend service à personne (ni même au "moinsseur"), puisque sa signification restera floue. Quant aux autres éventuelles motivations, celles-là tu peux les compter pour t'endormir à la place des moutons.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. [PostgreSQL] insertion d une boucle
    Par loketo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/10/2009, 14h48
  2. Réponses: 3
    Dernier message: 11/07/2006, 17h45
  3. Réponses: 3
    Dernier message: 21/02/2006, 18h05
  4. Réponses: 1
    Dernier message: 14/10/2005, 15h36
  5. Appel d'une fonction dans uns boucle d'un tableau
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 15h37

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