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

Langage PHP Discussion :

script étape par étape sans arrêter lors des erreurs [PHP 5.5]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut script étape par étape sans arrêter lors des erreurs
    Bonjour

    J’ai un script qui récupère les data par un web service.

    1re étape : Je les enregistre dans une table de MySql
    2e étape : ensuite, je mets les infos dans un fichier XML
    3e étape : je les enregistre dans une autre table

    Tout marche bien.

    Mes scénarios :

    S'il y a un problème avec MySQl (1re étape), il faut que le script continue pour créer le fichier XML.
    S'il y a un problème pendant la création de XML (2e étape), il faut qu'il enregistre au moins dans une autre table de MySQL (3e étape)


    Comment je peux le faire ?

    Pour le moment j'ai mis try- catch mais je ne sais pas s'il y a un problème avec MySql je peux continuer pour l'enregistrement du fichier XML.
    Est ce que mon script peut passer au 3e étape, s'il y a un problème pendant la création du fichier XML ? Sinon que je dois faire ?

    Merci


    Voici mon code (à peu près) serait ainsi :
    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
    79
    80
    81
    82
     
    try
    			{
    				$bdd = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    			}
    			catch (Exception $e)
    			{
    				 die('Erreur : ' . $e->getMessage());
    			}
     
    // 1er partie  MySQL
     
    try
    	{
     
    	$mysql= array(':email'=>$email,
    						':last_name'=>$last_name
    						);
     
    	$stmt = $bdd->prepare("INSERT INTO $data ( $email_,
    											    $last_name_
    															  )
    						  VALUES (:email
    								  :last_name)"
    						);						
     
    	$stmt->execute($mysql);		
     
    	}
    catch(Exception $e) 
    	{
    		throw $e;
    	}
     
     
    	// 2e partie XML
     
    	header('Content-Type: text/xml');
    	header('Content-Type: application/xml');
     
    	$doc = new DOMDocument('1.0', 'UTF-8');
     
    	$doc->preserveWhiteSpace = false;
    	$doc->formatOutput = true;
     
    	$level_0 = $doc->createElement("engregistrement");
    	$doc->appendChild($level_0);
     
    	$nom = $level_0->appendChild($doc->createElement('nom'));
    	$nom->appendChild($doc->createTextNode($last_name_)); 
     
    	$courriel = $level_0->appendChild($doc->createElement('courriel'));
    	$courriel->appendChild($doc->createTextNode($email_)); 
     
    	$fileName = '_data_' . $fileXml. '.xml';
     
    	$doc->save($fileName);
     
    	// 3e partie MySQL
     
     
    try
    	{
     
    	$mysqlXml= array(':xmlFile'=>$xmlFile,
    					 ':where'=>$where
    						);
     
    	$stmtXml = $bdd->prepare("INSERT INTO $xmldata ( $xmlFile_,
    													 $where_
    															  )
    						  VALUES (:xmlFile
    								  :where)"
    						);						
     
    	$stmtXml->execute($mysqlXml);		
     
    	}
    catch(Exception $e) 
    	{
    		throw $e;
    	}

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    quel intérêt de continuer si le script rencontre une erreur ?

    Il faut, au minimum, les gérer (condition,...) = anticiper (solution "de repli")
    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
    $valid_machin = true;
    	try{
    	...
    	}
    	catch(.......) // erreur
    	{
    		$valid_machin = false;
    	}
     
    	if ( $valid_machin){ // true
    		// ... action
     
    	} else {
    		// solution de repli
    	}
    Dernière modification par Invité ; 11/11/2015 à 22h45.

  3. #3
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Merci Jérôme,

    Si ma table n'existe pas ou bien il y a un string qui n'est pas bon selon MySql, etc. dans l'étape 1, au moins mon fichier xml soit créer (à l'étape 2) et l'enregistrement dans 2e table soit faite (à l'étape 3)
    Si j'ai bien compris ton code...
    Est-ce que je peux l'appliquer comme cela ?
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    $valid_avantPartie = true;
    try{
    		$bdd = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    	}
    catch (Exception $e)
    	{
    		 die('Erreur : ' . $e->getMessage());
    		 $valid_avantPartie = false;
    	}
     
     
    if ( $valid_avantPartie)
    	{ // true
    		// 1er partie  MySQL
     
    		try
    			{
     
    				$mysql= array(':email'=>$email, ':last_name'=>$last_name);
    				$stmt = $bdd->prepare("INSERT INTO $data ( $email_, $last_name_)
    									  VALUES (:email, :last_name)");						
    				$stmt->execute($mysql);
     
    				$valid_2ePartie = true; //!!!!!!!
     
    			}
    		catch(Exception $e) 
    			{
    				throw $e;
    				$valid_2ePartie = true; //!!!!!!!
    			}
     
    	} 
    else 
    	{
    		$valid_2ePartie = true; //!!!!!!!
    	}
     
    if ( $valid_2ePartie)
    	{
    		// 2e partie XML
     
    		header('Content-Type: text/xml');
    		header('Content-Type: application/xml');
     
    		$doc = new DOMDocument('1.0', 'UTF-8');
     
    		$doc->preserveWhiteSpace = false;
    		$doc->formatOutput = true;
     
    		$level_0 = $doc->createElement("engregistrement");
    		$doc->appendChild($level_0);
     
    		$nom = $level_0->appendChild($doc->createElement('nom'));
    		$nom->appendChild($doc->createTextNode($last_name_)); 
     
    		$courriel = $level_0->appendChild($doc->createElement('courriel'));
    		$courriel->appendChild($doc->createTextNode($email_)); 
     
    		$fileName = '_data_' . $fileXml. '.xml';
     
    		$doc->save($fileName);
     
    		$valid_3ePartie = true; //!!!!!!!
     
    	} 
    else 
    	{
    		$valid_3ePartie = true; //!!!!!!!
    	}
     
    if ( $valid_3ePartie)
    	{
    		// 3e partie MySQL
    		try
    			{
     
    			$mysqlXml= array(':xmlFile'=>$xmlFile, ':where'=>$where);
    			$stmtXml = $bdd->prepare("INSERT INTO $xmldata ( $xmlFile_, $where_)
    								  VALUES (:xmlFile, :where)");						
    			$stmtXml->execute($mysqlXml);		
    			}
    		catch(Exception $e) 
    			{
    				throw $e;
    			}
    			$bdd = null;
     
    	} 
    else 
    	{
    		// FIN
    		$bdd = null;
    		die();
    	}
    Ou bien il faut que je fasse autrement ?

    Merci

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

Discussions similaires

  1. Exécuter des fonctions étapes par étapes
    Par Rifton007 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2013, 13h50
  2. [Livre]:SQL server 2008 : Étape par Étape
    Par Community Management dans le forum Livres
    Réponses: 1
    Dernier message: 27/10/2010, 17h39
  3. Postfix étape par étape
    Par death_style dans le forum Réseau
    Réponses: 9
    Dernier message: 26/05/2010, 00h21
  4. Taches étapes par étapes
    Par dondano dans le forum Langage
    Réponses: 6
    Dernier message: 19/01/2007, 11h43

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