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 :

[PHP-JS] Imposer une condition sur l'affichage d'une variable


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut [PHP-JS] Imposer une condition sur l'affichage d'une variable
    Bonjour à tous,

    J'aimerais imposer des conditions d'affichage sur un champ texte (concrètement que même si la personne rentre un chiffre supérieur à 30 que celui ne s'affiche pas).

    Voici le morceau de code qui permets au visiteur de rentrer un chiffre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="post" action="insererth.php">
    <input name="th" type="text" size="5" maxlength="2">
    <input type="submit" name="submitth" value="ENREGISTRER">
    </div>
    </form>
    Voici le morceau en php :

    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
     
    <?
    //on se connecte à la base de donnée
    $db = mysql_connect('sql.free.fr','un.arbuste.vermillon','mot de passe') or die ("erreur de connexion");
     
    //on selectionne votre base
    mysql_select_db('topaze_tbl',$db) or die ("erreur de connexion base");
     
    //la requête de sélection des messages
    $req = mysql_query("SELECT th from topaze_tbl Limit 1") or die ("erreur requête");
    print'<div align="center">';
    print '<table  summary="">';
    //on ressort le contenu en boucle, et on stock dans un tableau avec mysql_fetch_array
    while( $contenu = mysql_fetch_array ($req))
    {
    print '<tr>';
    print '<td><font face="comic sans ms" color="#008000" size="3">'.$contenu[th].'</font></td>';
    print '</font></tr>';
    }
    print '</table>';
    print'</div>';
    mysql_close();
    ?>
    J'ai essayé quelques manipulations, j'arrive bien à ce que je veux sur un petit code tout simple (voir juste en dessous) mais pas pour celui du dessus.

    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
     
    // là pas de soucis, j'affiche ce que je veux
     
    <form method="post" action="essais.php"> 
    <input type="text" name="nom" size="12">
    <input type="submit" value="OK"> 
    </form>
     
    <?php 
    $nom = $_POST['nom']; 
    ?>
     
    <?php
    if ($nom < 50) 
    {echo "$nom";}
    else {echo "";} 
    ?>
    J'ai bien essayé de compiler ce petit script qui fonctionne avec mon code mais je n'obtiens rien.

    C'est ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $contenu = mysql_fetch_array ($req))
    qu'il faut modifier je pense.

    Qu'en pensez-vous ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Donc je vais expliquer plus clairement ma demande.

    - Ce que j'ai actuellement : Un script me permettant d'enregistrer une variable dans une base de donnée (un.arbuste.vermillon) et me permettant également de l'afficher sur ma page (print '.$contenu[th].') (je vais rajouter les deux guillemets autour de th sur les conseils de quelques uns), voir le premier code php au dessus.

    - Ce que j'aimerais faire : Lorsqu'un visiteur passe sur ma page et rentre un chiffre trop grand (du genre 9999) celui ne s'affiche pas. Mais lorsque le chiffre est genre inférieur à 30 que celui-ci s'affiche. Cette petite condition à intégrer à mon premier code en php au dessus.

    - Suite aux conseils de quelques uns j'ai essayé ceci (je te mets juste la fin du code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $contenu = mysql_fetch_assoc ($req);
    print '<tr>';
    print '<td><font face="comic sans ms" color="#008000" size="3">'($contenu['th'] < 50) ? $contenu['th'] : NULL;
    print '</font></tr>';
    print '</table>';
    print'</div>';
    mysql_close();
    ?>
    Vous aurez remarqué le mysql_fetch_assoc qu'on m'a conseillé d'utiliser à la place de mon mysql_fetch_array. Mais erreur sur la ligne ou je tente d'imprimer ce $contenu.

    Bref, moi ce que je veux c'est simplement éviter que mes visiteurs rentrent des chiffres abberants dans le champ texte.

    Bonne soirée à tous.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je n'utilise pas l'instruction print, mais echo

    et la syntaxe est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'blabla', $variable;
    il y a donc une virgule entre deux champs (certaines personnes mettent le point de concaténation, mais c'est plus lent, donc mauvaise idée)

    je peux supposer (totalement gratuitement et peut-être absolument idiot) que c'est similaire avec print

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Trouvé.

    Ok dans le head :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <SCRIPT LANGUAGE="Javascript">
    function foncth() 
    {if (document.formth.th.value > 30)
    document.formth.th.value ="";}
    </SCRIPT>
    Et dans le body :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" name="formth" action="insererth.php">
    <input name="th" type="text" size="5" maxlength="2" onChange="foncth()">
    <input type="submit" name="submitth" value="ENREGISTRER">
    </form>
    Par contre j'aimerais ajouter à la condition > 30 que lorsque le chiffre rentré pr le visiteur est égale à zéro que pareil rien ne s'affiche, possible ?

  5. #5
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    j'aurais mis onblur() plutot que onchange() .
    Comme ça la fonction sera appellée seulement lorsque le champ perdra le focus

    (Quand il n'est plus actif, quoi...)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Parfait c'est édité .

    Pour ajouter à la condition " > 30 " que lorsque le chiffre rentré pr le visiteur est égale à zéro que pareil rien ne s'affiche, est-ce possible ?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    bien sûr que c'est possible, mais ne connaissant pas javascript je ne vais pas te donner le code. sur le principe il doit être du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {if (document.formth.th.value > 30 or document.formth.th.value < 1)
    document.formth.th.value ="";}
    Par contre, je souhaite faire deux remarques :
    le contrôle que tu fais utilise javascript, et c'est très bien. Mais de nombreuses personnes le désactivent. Et dans ce cas, le paramètre th passé peut très bien être 987654321. Donc, pour des raisons de sécurité, tu dois également faire ce contrôle côté serveur, sur ta page appelée insererth.php, avec un if. Si th est inférieur à 30, tu continues le traitement. Si th est supérieur à 30, tu dois revenir à la page contenant le formulaire
    Ta fonction foncth modifie la valeur si ton client rentre un chiffre supérieur à 30, sans lui dire ou lui donner d'explication. Donc il peut recommencer et réessayer et ce jusqu'à en avoir assez et se dire que ton site ne fonctionne pas correctement. Personnellement, je trouve que ta fonction doit lui afficher un petit message pour l'informer qu'il a entré une valeur non autorisée

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Re coucou,

    J'ai réussis à ajouter la deuxième condition par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {if (document.formth.th.value > 30 || document.formth.th.value < 1 )
    tout simplement.

    le contrôle que tu fais utilise javascript, et c'est très bien. Mais de nombreuses personnes le désactivent. Et dans ce cas, le paramètre th passé peut très bien être 987654321. Donc, pour des raisons de sécurité, tu dois également faire ce contrôle côté serveur, sur ta page appelée insererth.php, avec un if. Si th est inférieur à 30, tu continues le traitement. Si th est supérieur à 30, tu dois revenir à la page contenant le formulaire
    Je vois ce que tu veux dire, je change çà de suite tu as raison, merci du conseil.

    Et pour interdire les lettres (AA etc.. que le visiteur ne puissent rentrer que des chiffres) voici un petit code bien sympa à rajouter dans le head :

    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
     
    <script type="text/javascript" language="JavaScript">
    var texte = new String("");
    var b = new Number(1);
    var codeT = new Number(0);
    var d = new Number(0);
    var nbcar = new Number(0);
    var erreur = new Boolean(false); // par défaut 
    function verifcode(car) {
    // exclusivement du texte avec espace:
    //    if ( ((car >= 65 && car <= 90) || (car >= 97 && car <= 122 ) || car == 32) 
    // Tout (presque) sauf nombres
        if ( (car >= 32 && car <= 47) || (car >= 58 && car <= 122) || (car >= 128 && car <= 165 ) ) 
        		{erreur = false;}
            else  { erreur = true ;}
            }
    function Controlnumber(Nbr) {
    if (isNaN(Nbr))
    document.formth.th.value ="";
    }
    </script>
    Et mettre onChange="javascript:Controlnumber(this.value)" dans le input du form concerné.

    Bonne nuit à ceux qui partent se coucher.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Prochaine étape je ne sais pas comment alléger mon code ci-dessous (qui permets d'ajouter les chiffres des visiteurs 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
    <? 
    //on se connecte à la base de donnée
    $db = mysql_connect('sql.free.fr','un.arbuste.vermillon','mot de passe') or die ("erreur de connexion");
     
    //on selectionne votre base
    mysql_select_db('topaze_tbl',$db) or die ("erreur de connexion base");
     
    //on insère le contenu du formulaire
    mysql_query("INSERT INTO topaze_tbl (id,th) VALUES ('','$th') ") or die ("erreur insert ".mysql_error());
    mysql_query("UPDATE topaze_tbl SET th='$th' ");
     
    //et on referme la connexion
    mysql_close();
    header('location: index.php');
    ?>
    Ce qui me tracasse c'est ces deux phrases :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("INSERT INTO topaze_tbl (id,th) VALUES ('','$th') ") or die ("erreur insert ".mysql_error());
    mysql_query("UPDATE topaze_tbl SET th='$th' ");
    Je pense n'avoir carrément pas choisis la bonne solution pour : prendre en compte le chiffre inséré par le visiteur, l'insérer dans la table et le laisser afficher sur la page.

    NB : je ne l'ai pas encore fait mais ai l'intention de prendre en compte ta première remarque francis m.

    Qu'en pensez vous ?

  10. #10
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Pourquoi tu fais un UPDATE juste aprés l'INSERT ?

    Tu as déjà envoyé le $th . pas besoin de l'updater aussitot aprés.

    De toute façon ton UPDATE ne fonctionnerait pas . Il manque la clause WHERE.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Points : 24
    Points
    24
    Par défaut
    Justement je suis débutant et suis très loin de maîtriser ces deux fonctions.

    Elles sont ici mais je ne vois pas du tout leur utilité, c'est comme çà.

    Pas de where ?

    Moi ce que j'aimerais c'est que seulement la dernière infos enregistrée sur la page soit sauvegarder, que tout le reste soit purgée de la table.

  12. #12
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    je ne sais pas si j'ai bien compris ce que tu veux faire , mais

    si tu fais un INSERT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO topaze_tbl (id,th) VALUES ('','$th') ");
    A ce moment du code, tu insères bien la valeur de $th dans ta table?
    Tu n'as donc pas besoin de la mettre à jour dans l'instruction UPDATE qui suit INSERT. ça ne sert à rien. (tu viens juste d'enregistrer $th . pouquoi le refaire ?)

    A propos de l'UPDATE :
    Pour que ton UPDATE mette bien à jour la valeur de $th qui correspond à l'id
    il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE topaze_tbl SET th='$th'  WHERE id = '$id' ");
    Il te faudrait donc connaitre l'id de l'enregistrement que tu veux mettre à jour.

    Si tu veux que la table soit purgée (c'est a dire qu'il n'y reste qu'un enregistrement ??) :

    Fais un DELETE ou un TRUNCATE TABLE puis un INSERT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mysql_query("TRUNCATE TABLE topaze_tbl "); //vide la table 
    ou 
    mysql_query("DELETE FROM topaze_tbl "); //vide la table 
    puis
    mysql_query("INSERT INTO topaze_tbl (th) VALUES ('$th') ");
    Mais, si de toutes façons tu ne dois avoir qu'un seul enregistrement dans ta table, autant faire un UPDATE

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/09/2013, 15h23
  2. affichage par rapport à une condition sur 2 variables
    Par kilian67 dans le forum Langage
    Réponses: 3
    Dernier message: 22/07/2008, 13h32
  3. Réponses: 1
    Dernier message: 05/04/2007, 13h52
  4. Réponses: 4
    Dernier message: 03/05/2006, 13h58
  5. Pbs d'affichage d'une image sur un panel
    Par ysr1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/09/2004, 09h55

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