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 :

Condition vérifiant qu'une donnée existe ou non dans la base [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 23
    Points
    23
    Par défaut Condition vérifiant qu'une donnée existe ou non dans la base
    Bonjour, j'ai un problème avec une condition que je n'arrive pas à réaliser , le but de ce code et de prendre le orderno de l'url example http://localhost/contract.php?orderno=12345.

    ce code marche très bien sauf que j'ai besoin de réaliser une condition pour que si quelqu'un essaye de mettre un orderno qui n'existe pas dans la base de données il reçoit un message d'erreur.

    voici le code , j'espère que quelqu'un me donne une idée pour ajouter une condition si le orderno n'existe pas dans la base de donné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
    <?php
     
     if(isset($_GET['orderno'])){
    	$orderno = $_GET['orderno'];
    }
     
    $db_host = "";
    $db_name = "";
    $db_user = "";
    $db_pw = "";
     
    mysql_connect($db_host, $db_user, $db_pw) 
    OR die ("Cannot connect to your database"); 
    mysql_select_db($db_name) OR die("Cannot connect to your database"); 
     
    $pt_sql = mysql_query("SELECT * FROM orders where orderno='$orderno'");
     
    while($pt_get=mysql_fetch_array($pt_sql))
    {
     
    $datetime = $pt_get['datetime'];
    $g_orderno = $pt_get['orderno'];
    $custom1 = $pt_get['custom1'];
    $itemname = $pt_get['itemname'];
     
    $c1 = preg_split('/\|/', $custom1, -1 , PREG_SPLIT_NO_EMPTY);
    $title = preg_split('/\|/', $itemname, -1 , PREG_SPLIT_NO_EMPTY);
     
     
     
     
    if ( $title[1] == "" ) { 
    	echo "<a href='contract.php?orderno=$g_orderno'>Contract</a> For Item <i>$title[0]</i>"; 
    	} elseif ( $title[0] == $title[1] ) {
    		echo "<a href='contract.php?orderno=$g_orderno'>Contract</a> For Item <i>$title[0]</i>"; 
    		} else { echo "<a href='contract.php?orderno=$g_orderno'>Contract</a> For Item <i>$title[0]</i><br /><br />";
    			echo "<a href='contract2.php?orderno=$g_orderno'>Contract</a> For Item <i>$title[1]</i>";
    }
    }
    ?>
    Cordialement grazianno.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Si ta variable n'existe pas dans ta table, la requête ne renverra aucun résultat. IL te suffit donc de vérifier si il ya des résultats. Pour cela tu peux utiliser mysql_num_rows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $pt_sql = mysql_query("SELECT * FROM orders where orderno='$orderno'") or die(mysql_error());
     
    if (mysql_num_rows >0)  
    {
     //cas où il ya des résultats : traitement
    } else {
    echo 'Aucun résultat pour cette valeur';
    }
    ?>
    Et je te conseille de mette quelque chose dans $orderno lorsqu'il y a pas de paramètre passé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $orderno = 0; // on prend 0 comme valur par défaut
    if(isset($_GET['orderno'])){
    	$orderno = $_GET['orderno'];
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    merci pr ta réponse , mais je pense que je me suis mal exprimé , ce je veux c'est quand quelqu'un par exemple essaye un orderno qui n'existe pas dans la table orders , il reçoit le message 'Aucun résultat pour cette valeur'

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ben c'est ce que je te propose, non ? Tu as essayé ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    oui j'ai essayé et ça donne le même message 'Aucun résultat pour cette valeur' à chaque fois , que le orderno existe ou non dans la base de donnée. l'orderno n'existe pas tjs ds la base de donnée , c'est pour cela qu'on veut que quand quelqu'un essaye d'utiliser un fake orderno , il obtient l'erreur.
    d'après ce que j'ai lu, la condition mysql_num_rows >0 va afficher le nombre de résultats supérieur strictement à 0 mais ne va pas vérifier si l'orderno existe ou non dans la base de donnée.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Hum... je vais essayer de reformuler :
    si il n'y a pas d'enregistrement dans la base de données correspondant à la valeur de l'orderno passé dans l'url, ça renvoie un message d'erreur
    si il y a au moins un résultat, ça affiche ce résultat et tout le traitement qui va avec...

    Si c'est bien ça, je ne vois pas où est le problème. Pourrais-tu poster le code que tu as essayé ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    voilà le code

    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
    <div class="narrow_column">
     
    <center>
    	<div style="margin:30px"><a href""><img src="images/image001.gif"  border="0"></a></div>
     
    <?php
     
    $orderno = 0; // on prend 0 comme valur par défaut
     
    if(isset($_GET['orderno'])){
    	$orderno = $_GET['orderno'];
     
    }
     
     
    $db_host = "";
    $db_name = "";
    $db_user = "";
    $db_pw = "";
     
    mysql_connect($db_host, $db_user, $db_pw) 
    OR die ("Cannot connect to your database"); 
    mysql_select_db($db_name) OR die("Cannot connect to your database"); 
     
    $pt_sql = mysql_query("SELECT * FROM orders where orderno='$orderno'");
     
    if (mysql_num_rows >0)  
    {
     
    while($pt_get=mysql_fetch_array($pt_sql))
    {
     
    $datetime = $pt_get['datetime'];
    $g_orderno = $pt_get['orderno'];
    $custom1 = $pt_get['custom1'];
    $itemname = $pt_get['itemname'];
     
    $c1 = preg_split('/\|/', $custom1, -1 , PREG_SPLIT_NO_EMPTY);
    $title = preg_split('/\|/', $itemname, -1 , PREG_SPLIT_NO_EMPTY);
     
    $title[0] = str_replace("LEASE for ","", $title[0]);
     
    $title[1] = str_replace("LEASE for ","", $title[1]);
     
    $title[1] = str_replace("TRACK SEPARATION for ","", $title[1]);
     
     
     
    		if ( $title[1] == "" ) { 
    				echo "<a style='font:arial; text-decoration:none;' href='contract.php?orderno=$g_orderno' target='_blank'>Contract</a> For Item <i>$title[0]</i>"; 
    					} elseif ( $title[0] == $title[1] ) {
    				echo "<a style='font:arial; text-decoration:none;' href='contract.php?orderno=$g_orderno' target='_blank'>Contract</a> For Item <i>$title[0]</i>"; 
    					} else { echo "<a style='font:arial; text-decoration:none;' href='contract.php?orderno=$g_orderno' target='_blank'>Contract</a> For Item <i>$title[0]</i><br /><br />";
    				echo "<a style='font:arial; text-decoration:none;' href='contract2.php?orderno=$g_orderno' target='_blank'>Contract</a> For Item <i>$title[1]</i>";
    		}
    }
    //cas où il ya des résultats : traitement
    } else {
    echo 'There are no contracts available for download for your order.';
    }
    mysql_close();
    ?>
     
    </center>
     
    </div>

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Autant pour moi, ça doit être la fatigue de la semaine, je t'ai donné un code faux
    C'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pt_sql = mysql_query("SELECT * FROM orders where orderno='$orderno'");
     
    if (mysql_num_rows >0)
    qu'il faut mettre mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pt_sql = mysql_query("SELECT * FROM orders where orderno='$orderno'");
     
    if (mysql_num_rows($pt_sql) >0)

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    super!!! merci beaucoup Celira ça marche

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

Discussions similaires

  1. Savoir si un noeud existe ou non dans la base de données Neo4j
    Par houba91 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/04/2014, 21h19
  2. [ODBC] Verifier si une donnée existe dans la BDD
    Par thebarbarius dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 27/10/2010, 20h32
  3. Verifier si une donnée existe
    Par ririch dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 22/04/2009, 14h31
  4. tester si une table existe ou non sous access
    Par Lady_jade dans le forum Access
    Réponses: 4
    Dernier message: 17/02/2006, 19h44
  5. Tester si une données existe deja
    Par mael94420 dans le forum ASP
    Réponses: 1
    Dernier message: 18/10/2005, 17h09

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