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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 �m�rite
    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
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 : 61
    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
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 �m�rite
    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
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 : 61
    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
    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 averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    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 : 61
    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
    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