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 :

Import CSV - Pas d'erreur mais il ne se passe rien


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 139
    Points : 235
    Points
    235
    Par défaut Import CSV - Pas d'erreur mais il ne se passe rien
    Bonjour,

    Je bute sur un problème depuis 2 jours.

    J'ai développé une fonctionnalité d'import de CSV vers MySQL pour mon application.

    En local, cela fonctionne parfaitement. Par contre, une fois déployé en prod, il ne se passe rien. Aucune erreur et surtout aucun import dans la base.

    Je n'ai strictement rien dans les logs apache de mon serveur (dédié) et les logs MySQL sont vides.

    Pourtant, en mettant des "echo" tout au long de cette fonctionnalité, je vois bien qu'elle se déroule normalement. Même la requête d'insertion.

    J'ai une autre fonctionnalité d'import basé sur le même schéma qui elle fonctionne parfaitement.

    Help, je n'y comprends rien.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sans nous montrer le code on ne peut pas trop t'aider.

    As-tu contrôlé le retour de l’exécution de ta requête d'insertion ?
    Par défaut, les extensions que ce soit mysql ou PDO sont silencieuses.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 139
    Points : 235
    Points
    235
    Par défaut
    Dans ma fonctionnalité, je récupère le contenu du CSV, je vérifie chaque ligne au niveau des données et si c'est OK je la met dans un tableau. Puis je parcours chaque ligne de ce tableau et l'insère dans la base si elle est valide. Pour ce faire, j'utilise une fonction qui, elle, fonctionne puisque utilisée ailleurs dans l'application.

    Voici ma fonction d'insertion utilisée :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    $fk_ecriture_rubrique_id, $fk_user_id_creat, $fk_association_id, $fk_compte_id)
    	{
    		// Appel de l'objet bdd
    		global $bdd;
     
    		// Initialisation des variables
    		$sql_insert_ecriture = '';
    		$bool_insert_ecriture = FALSE;
     
    		// On prépare la requête
    		$sql_insert_ecriture = $bdd->prepare('
    			INSERT INTO
    				dat_ecriture
    					(
    						ecriture_numero,
    						ecriture_libelle,
    						ecriture_montant,
    						ecriture_date,
    						ecriture_type,
    						ecriture_rapproche,
    						ecriture_num_cheque,
    						ecriture_dt_creation,
    						fk_paiement_type_id,
    						fk_ecriture_rubrique_id,
    						fk_user_id_creat,
    						fk_association_id,
    						fk_compte_id
    					)
    				VALUES
    					(
    						:ecriture_numero,
    						:ecriture_libelle,
    						:ecriture_montant,
    						:ecriture_date,
    						:ecriture_type,
    						:ecriture_rapproche,
    						:ecriture_num_cheque,
    						NOW(),
    						:fk_paiement_type_id,
    						:fk_ecriture_rubrique_id,
    						:fk_user_id_creat,
    						:fk_association_id,
    						:fk_compte_id
    					)
    		');
     
    		// On execute la requête
    		try
    		{
    			$sql_insert_ecriture->execute(array(
    				'ecriture_numero' 			=> $new_ecriture_numero,
    				'ecriture_libelle'			=> $new_ecriture_libelle,
    				'ecriture_montant'			=> $new_ecriture_montant,
    				'ecriture_date'				=> $new_ecriture_date,
    				'ecriture_type'				=> $new_ecriture_type,
    				'ecriture_rapproche'		=> $new_ecriture_rapproche,
    				'ecriture_num_cheque'		=> $new_ecriture_num_cheque,
    				'fk_paiement_type_id'		=> $fk_paiement_type_id,
    				'fk_ecriture_rubrique_id'	=> $fk_ecriture_rubrique_id,
    				'fk_user_id_creat' 			=> $fk_user_id_creat,
    				'fk_association_id' 		=> $fk_association_id,
    				'fk_compte_id'				=> $fk_compte_id
    			));
    			$_SESSION['nb_requete']++;
     
    // echo "OK<br />";
    			$bool_insert_ecriture = TRUE;
    		}
    		catch (Exception $e)
    		{
    			//echo "KO - 1<br />";
    			fn_insert_log_error($e->getMessage(), "fn_insert_ecriture", $_SESSION['user_id']);
    			//echo "KO - 2<br />";
    		}
     
    		// On renvoi le résultat
    		return $bool_insert_ecriture;
    	}
    Je sais d'ailleurs que je rentre bien dedans ET que la requête s’exécute car j'ai bien l'affiche du echo "OK<br />"

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le "OK" ne signifie pas que la requête fonctionne, cela signifie que le script va bien jusqu'à cette ligne.

    Comme je t'ai dis, il faut voir le retour de l'execute.

    Sinon sur le fond, une requête préparée sert notamment a être réutilisée pour des insertions multiples, répéter l'étape de préparation pour chaque ligne gache un peu la chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 139
    Points : 235
    Points
    235
    Par défaut
    C'est pas faux sur les requêtes préparées, faudra que je me penche là-dessus si j'ai un peu de temps un jour

    Par contre, le TRY / CATCH permet bien de savoir si il y a eu une erreur. Donc, si j'affiche mon OK, cela signifie bien qu'il n'y a pas eu d'erreur non ?

    Et pour le retour de l'execute, comment puis-je faire ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par contre, le TRY / CATCH permet bien de savoir si il y a eu une erreur.
    Uniquement si tu as activé les exceptions PDO
    http://php.net/manual/fr/pdo.error-handling.php
    try/catch ne capture pas les erreurs standards.

    Et pour le retour de l'execute, comment puis-je faire ?
    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
    $retour = $sql_insert_ecriture->execute(array(
    				'ecriture_numero' 			=> $new_ecriture_numero,
    				'ecriture_libelle'			=> $new_ecriture_libelle,
    				'ecriture_montant'			=> $new_ecriture_montant,
    				'ecriture_date'				=> $new_ecriture_date,
    				'ecriture_type'				=> $new_ecriture_type,
    				'ecriture_rapproche'		=> $new_ecriture_rapproche,
    				'ecriture_num_cheque'		=> $new_ecriture_num_cheque,
    				'fk_paiement_type_id'		=> $fk_paiement_type_id,
    				'fk_ecriture_rubrique_id'	=> $fk_ecriture_rubrique_id,
    				'fk_user_id_creat' 			=> $fk_user_id_creat,
    				'fk_association_id' 		=> $fk_association_id,
    				'fk_compte_id'				=> $fk_compte_id
    			));
    var_dump($retour);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 139
    Points : 235
    Points
    235
    Par défaut
    Voici mes options de connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Option de connexion
    $options = array(
    	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
    	PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    );
    Je pense donc que c'est bon. De plus, ma fonction fn_insert_log_error dans le CATCH fonctionne (bon, juste en local, mais ça c'est encore un autre problème.... )

  8. #8
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 139
    Points : 235
    Points
    235
    Par défaut
    Le var_dump me retourne bool(false)

    Donc, la requête ne s'insère pas. Reste juste à trouver pourquoi.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et le retour de execute ça donne quoi ?

    Tu peux voir aussi ce que donne rowCount().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 139
    Points : 235
    Points
    235
    Par défaut
    Bon, j'avance. J'ai une valeur vide c'est donc pour ça que cela ne s'execute pas. Par contre, le try / catch ne fonctionne pas alors qu'il fonctionne en local et donc ma fonction de log d'erreur n'est jamais appelé.

    J'imagine que c'est de la configuration de PHP mais là je sèche

Discussions similaires

  1. [CS3] pas d'erreur mais ?
    Par info_sara dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 28/05/2008, 18h06
  2. Réponses: 10
    Dernier message: 18/07/2007, 20h15
  3. pas d'erreur mais update qui marche pas
    Par gloppy dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/12/2006, 16h49
  4. Réponses: 2
    Dernier message: 17/05/2006, 14h23

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