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 :

Arrêter le script selon la condition [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 Arrêter le script selon la condition
    Bonjour,


    j'ai deux variables "entier" (int)

    Je veux vérifier leur valeur

    Si l'une a la même valeur que l'autre, le script s'arrête sinon il continue l'exécution.

    Comment puis-je faire ? Est ce que je peux utiliser avec la condition if ? Ou bien avec une autre chose ?

    Si je fais avec if : est que le code suivant est bon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($vartrouver == $varExistant) 
    {
    	exit(); //arret le script
    	die();  // tue le script
    } 
     
     
     
    echo 'valeur différente';
    //.... la reste de script
    Est ce qu'il y a d'autre façon ? Mieux que cela ? Sans if ?

    Merci

  2. #2
    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
    Et si la valeur (de $varExistant) vient de ma basse de données ?

    Comment puis-je faire ?


    Voici ce que je fais :
    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
    //.......
    try
    {
    		$bdd = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    }
    catch (Exception $e)
    {
         die('Erreur connexion  : ' . $e->getMessage());
    }
     
    $vartrouver = 103;
     
     
    try
    	{
    		$req = $bdd->prepare('SELECT ' . $number . '  
    								FROM '. $data . ' 
    								WHERE '. $number . ' = :vartrouver');
    		$req->execute(array('vartrouver' => $vartrouver));
     
     
    		while ($result_req= $req->fetch())
    			{
    				$varExistant = $result_req['number'];
    			}
     
     
    	}
    	catch(Exception $e) 
    	{
    		throw $e;
    	}
     
    if (isset($varExistant))
    		{
    			echo $varExistant;
    			// continuer la rest
     
    		}
    	else
    		{
    			exit(); //arret le script
    			die();  // tue le script
    		}
    // la reste 
     
     
    echo '<p> totalité de script excecuter parce que  : $vartrouver == $varExistant</p>';
    Mais est-ce qu'il y a d'autres manières ?

    Merci

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    A mon avis, tu te trompes dans ta requête (ligne 16) et dans son fetch (ligne 22) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req = $bdd->prepare('SELECT number FROM '. $data . ' WHERE '. $number . ' = :vartrouver');
     
    et
     
    while ($result_req= $req->fetch(PDO::FETCH_ASSOC))

    et au passage, cet aide-mémoire que je m'étais fait il y a un certain temps peut t'être utile :
    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
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    //// connexion
    require('MyPdo.php');
    try{
    		$pdo = new MyPDO();
    	}
    catch(PDOException $e){
    		echo "argggggggggggggg".$e->getMessage();
    	}
     
    // MyPDO
     //la classe MyPdo hérite de la classe PDO (extends)
    class MyPdo extends PDO {
    /* on privilégie les var de classe (statiques) aux constantes : ainsi modifiables par programme */
    	static public $DB_NAME = "xxx";
     
    	static public $HOST = "xxx";
     
    	static public $USER = "xxx";
     
    	static public $PASS = "xxx";
     
     
     
    // le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
    	function __construct() {
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
    	$pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
    	$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
     
    	parent::__construct('mysql:host=' . MyPdo::$HOST . ';dbname=' . MyPdo::$DB_NAME, MyPdo::$USER, MyPdo::$PASS, $pdo_options);
    	}
     
    }
    // fin MyPDO
     
     
    //// Effectuer une query et un fetch
    $query = 'SELECT * FROM foo WHERE bar=1;';
    $arr = $pdo->query($query)->fetch(); //Sur une même ligne ...
     
     
    //// Effectuer une query et un fetchAll
    $query = 'SELECT * FROM foo WHERE bar<10;';
    $stmt = $pdo->query($query);
    $arrAll = $stmt->fetchAll(); //... ou sur 2 lignes
     
    //// Effectuer un exec
    $query = 'DELETE FROM foo WHERE bar<10;';
    $rowCount = $pdo->exec($query);
     
    //// nb de lignes (mysql_num_rows)
    $query = 'DELETE FROM foo WHERE bar<10;';
    $rowCount = $pdo->exec($query);
    $nb_lignes=$rowCount->rowCount();
     
    // nb de lignes pour un select
    $sql='select * from `users` order by nom';
    $qid = $pdo->query($sql);
    //test de mysql_num_rows
    $num_rows=0;
    while( $ligne=$qid->fetch(PDO::FETCH_OBJ) ) $num_rows++;
    $pdo=NULL;
    echo "nb de lignes=".$num_rows;
     
    ou :
     
    $sql = "SELECT COUNT(*) AS compte FROM `infotech`";
    $qid = $pdo->query($sql);
    $row=$qid->fetch(PDO::FETCH_OBJ);
    $nrows=$row->compte;
     
     
     
    // exécuter un select puis afficher les lignes
    $sql='select * from `conf` order by lastname';
    $qid = $pdo->query($sql);
    while( $ligne=$qid->fetch(PDO::FETCH_NUM) )...
     
    // exécuter un select puis mettre les données en tableau associatif
    $sql='select * from `conf` order by lastname';
    $qid = $pdo->query($sql);
    $data = $qid->fetchAll(PDO::FETCH_ASSOC); 
    echo $data[0]["name"]; // tableau à 2 dimensions
     
    // filtrage affichage erreurs
    error_reporting(E_ALL^E_NOTICE^E_DEPRECATED);
     
    //affichage erreur PDO
    print_r(pdo->errorInfo());
     
    //requête préparée
    $query = 'DELETE FROM foo WHERE id=?';
    $qid=$pdo->prepare($query);
    $qid(execute(array($id));
     
    ou 
     
    $query = 'DELETE FROM foo WHERE (id=:id)';
    $qid=$pdo->prepare($query);
    $qid(execute(array(':id'=>$id));
    ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    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 laurentSc,

    C’est cool tes explications.
    Citation Envoyé par laurentSc Voir le message
    A mon avis, tu te trompes dans ta requête (ligne 16) et dans son fetch (ligne 22) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = $bdd->prepare('SELECT number FROM '. $data . ' WHERE '. $number . ' = :vartrouver');
    Mes (2) exemples marchent bien. il n'y a pas d'erreurs dans la ligne 16 (parce que je chercher la valeur dans 'number_id' selon la valeur de 'number_id' pour savoir si cela existe : donc le champ et le critère de ma recherche sont identiques):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT ' . $number . ' FROM '. $data . ' WHERE '. $number . ' = :vartrouver')
    ni le tien : pas d'erreur : (parce que tu cherches la valeur de la colonne qui s'appelle 'number' selon la valeur de ta variable $number qui peut être une autre colonne donc le champ et le critère de ta recherche ne sont pas forcement identique, cela dépende de ta variable $number):

    Merci pour le paramètre de PDOStatement::fetch
    Citation Envoyé par laurentSc Voir le message
    while ($result_req= $req->fetch(PDO::FETCH_ASSOC))[/CODE]
    Ton aide-mémoire sera surement utile et merci, je vais le garder bien.
    Citation Envoyé par laurentSc Voir le message

    et au passage, cet aide-mémoire que je m'étais fait il y a un certain temps peut t'être utile :
    Par contre si on vient sur mes questions : c'est d'arrêter le script selon la condition

    1. Avec 2 variables internes, j'utilise la condition 'if', (voir mon 1er exemple qui marche bien), est-ce que cela est correct ou bien il y a une autre façon à faire ?
    2. Dans 2e exemple, (qui fonctionne aussi) je cherche la valeur (de $varExistant) dans une table (de ma basse de donnéesl). Si la valeur existe dans la table, le script s'arrête sinon le script continue. Je fais cela avec la condition 'if' et la fonction 'isset'! est ce qu'il y a une autre façon à faire ?


    Merci et bonne journée

  5. #5
    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
    oas d'idée ? pas de proposition ! quelle solution ?

    bonne journée

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    En fait, j'ai vu ton post juste avant le repas mais n'ai pas encore eu le temps de répondre

    - Je pense que pour arrêter le script, tu fais ceinture et bretelle : die() ou exit() suffirait (d'ailleurs, ils disent que c'est pareil) ; donc avec l'un des 2, on sort du if.

    - sinon le if (isset(---)) que tu fais me semble correct et ferais pareil (vois pas d'autre solution)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    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 laurentSc,

    bonne journée

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

Discussions similaires

  1. Interrompre un script selon des conditions
    Par soazig dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 16/09/2014, 10h36
  2. Arrêter un script suivant une condition
    Par hindou90 dans le forum Linux
    Réponses: 4
    Dernier message: 07/02/2011, 20h29
  3. Création d'un Script : Afficher un message selon une condition
    Par ero-sennin dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/12/2007, 20h55
  4. Peut on faire un selon à deux conditions ?
    Par Celia1303 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/10/2005, 16h16
  5. Réponses: 5
    Dernier message: 23/02/2005, 09h43

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