Ctrl longueur champs javascript

Résolu
Bonjour,
ce matin j'ai trouvé un code pour vérifier la longueur des champs et ça marchait, cette aprm, ça ne fonctionne plus !!!
Voici mon code :
<?php
session_start();
//si la session n'existe pas, redirection vers index.php
if (!isset($_SESSION['nom']))
{
Header('Location: index.php');
}
//on affiche la page voulue
else
{

echo'<HTML>';
echo'<HEAD>';
echo"<TITLE>Ajout d'accès</TITLE>";
echo'<link rel="stylesheet" href="include/style.css">';

echo'<script> ';
echo"function valider(monchamps){
var mini = 1
var maxi = 4
if ( mini != 0 ) {
// Si la longueur de la saisie est inférieure au minimum demandé
if ( monchamps.value.length < mini ) {
// Envoi d'une alerte
alert('Vous devez saisir au moins ' + mini + ' caracteres.');
return false
}
}
// Si la longueur de la saisie est supérieure au maximum demandé
if ( maxi != 0 ) {
if ( monchamps.value.length > maxi ) {
alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
return false
}
}
}
</script> ";

echo'</HEAD>';
echo'<BODY>';

echo'<form action="acces_ajoutbis.php" method="post">';
echo'<div id="ecriture2">';
echo"Ajout d'accès <br/><br/>";
echo'</div>';

echo'<div id="ecriture1">';

include ("/var/www/function.php");
require_once ("/var/www/include/auth.inc");
$mysqlLink = connexion(HOST,USER,PWD,BDD);
$requete="SELECT tAcces FROM acces;";
$result = mysql_query($requete) or die("Requete non comprise");
echo "<table>";
echo'Les accès existants : <br/>';
while ($tableau = mysql_fetch_array($result))
{
echo'• ';
echo $tableau['tAcces'] ;
echo '<br/>';
}
echo'<br/><br/>';

echo ' Nom accès : <input type="text" onChange="javascript:this.value=this.value.toUpperCase();" name="nom" size=22 value="Tapez ici le nom accès" onblur="valider(this)" onfocus="if (this.value==\'Tapez ici le nom accès\') {this.value=\'\'}"/><br/><br/>';

echo'<input type="submit" value="Valider"/>';
echo'<input type="reset" value="Annuler"/><br/><br/><br/>';

echo'</div>';

echo'<div id="ecriture3"';
echo "<a href='acces.php'>• Retour au menu d'accès •</a>";
echo'</div>';

echo'</form>';

}
?>
</BODY>
</HTML>

et voici le code de la page qui est appelée :
<?php
session_start();
//si la session n'existe pas, redirection vers index.php
if (!isset($_SESSION['nom']))
{
Header('Location: index.php');
}
//on affiche la page voulue
else
{
?>

<HTML>
<HEAD>
<TITLE>Ajout accès</TITLE>
<link rel="stylesheet" href="include/style.css">
</HEAD>
<BODY>

<?php

include ("/var/www/function.php");
require_once ("/var/www/include/auth.inc");

$mysqlLink = connexion(HOST,USER,PWD,BDD);

$nom=$_POST['nom'];

echo '<div id="ecriture1">';

if ($nom<1 or $nom>4)
{
echo'Ajout impossible !<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='acces.php'>• Retour au menu d'accès •</a>";
echo'</div>';
}
else
{
$sql="INSERT INTO acces VALUES ('','".$nom."');";
$jeu=@mysql_query($sql,$mysqlLink);

if ($jeu==true)
{
echo 'Ajout pris en compte<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='acces.php'>• Retour au menu d'accès •</a>";
echo'</div>';
}
else
{
echo 'Ajout impossible <br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='acces.php'>• Retour au menu d'accès •</a>";
echo'</div>';
}

echo '</div>';
}
}
?>
</BODY>
</HTML>

J'ai du mal à comprendre pk ça ne fonctionne plus...Merci de votre aide !

13 réponses

  1. il manque plein de point-virgules (;) dans le javascript... mais si tu me donnes l'adresse de la page où ça ne marche pas, c'est mieux.
    1. je ne peux pas te donner l'adresse de la page pcq c'est pas un site web que je fais, c'est une application interne pour une entreprise
  2. Moralité de l'histoire : toujours réfléchir au code c + efficace après ça n'engage que moi comme on dit qui m'aime me suive ;)
    1. j'ai réfléchi au code sauf que je n'ai pas appris le javascript ! et la je suis obligé d'en utiliser! merci pour ta remarque ça m'aide énormément...
  3. Qui bosse pour qui?
    Je n'ai rien contre toi, Laëtitia, mais je ne me vois pas aider "une entreprise", qui demande à ses employés de faire des choses pour lesquelles ils ne sont ni formés ni soutenus, apparemment.
    1. je ne suis pas employé dans cette entreprise je suis juste stagiaire! et je sais que si je demande aux employés comment je dois faire ils sauront pas pcq ce n'est pas leur métier...
  4. OK stagiaire... reprenons.

    as-tu mis un point-virgule (;) à la fin de chaque ligne de code (php et js), sauf celles finissant par { et celles commençant par //
    1. non pcq je n'y connais rien en javascript =s je vais essayer
      Merci de ton aide en tt cas
  5. Essaie déjà avec ces lignes :

    var mini = 1 ;
    var maxi = 4 ;

    Il y a un excellent outil pour firefox qui est téléchargeable ici : https://addons.mozilla.org/fr/firefox/addon/1843. Il t'aidera à répérer facilement tes lignes à problèmes
    1. voila j'ai mis des point virgules et ça ne marche toujours pas!
    2. je pense que mon problème vient du code de ma deuxième page mais je ne comprends pas pk ça marchait au début !
  6. c'est difficile de tester/comprendre pour moi, car le php ne fonctionne pas chez moi. Donc je ne sais pas où commencer.
    1. tant pis, j'essaierai autre chose
      merci quand mm
  7. ce code fonctionne très bien chez moi:
    <html>
      <head>
      <script>
      function valider(monchamps){
            var mini = 3;
            var maxi = 20;
            if ( mini != 0 ) {
              // Si la longueur de la saisie est inférieure au minimum demandé
              if ( monchamps.value.length < mini ) {
                    // Envoi d'une alerte
                    alert('Vous devez saisir au moins ' + mini + ' caracteres.');
                    return false;
              }
            }
              // Si la longueur de la saisie est supérieure au maximum demandé
            if ( maxi != 0 ) {
              if ( monchamps.value.length > maxi ) {
                    alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
                    return false;
              }
            }
      }
      </script>
      </head>
      <body>
    <form name="form1" method="post" action="moteur.html">
                    <input type="text" name="motsclef"  id="search" onblur="valider(this)">
                    <input type="submit" value="Rechercher">
    </form> 
    </body>
    </html>
    
    1. ce code fonctionne chez moi aussi, mon problème c'est que je veux interdire l'ajout dans ma table quand le mot est trop grand... et c'est la que ça bloque ! =s
      La première fois que j'ai testé ça fonctionnait et depuis ça me met ajout impossible à chaque fois !
  8. pour ce faire tu dois vérifier au niveau de php la longueur de chaîne de carac. avant l'INSERT dans la DB. ET ceci ce fait avec un
    strlen();
    1. Tu t'y connais en php ?
      1. en php un peu en javascript pas du tt
        j'ai essayé strlen() mais j'ai vite abandonné pcq j'y comprenais rien !
    2. En posant bien entendu la condition qui te renverra true ou false en fonction de la longueur strlen(ta_superbe_variable)

      if (strlen(ta_superbe_variable) > longueur_ imposée)
      //requête SQL qui dit de ne rien stocker dans la base : dsl c pas encore frais pour moi le SQL :D
      1. à la ligne 122:
        if (strlen($nom) < 1 or strlen($nom) > 4)


        et tu devrais faire correspondre les longueurs mini et maxi avec celles du script javascript.
        1. strlen($variable) te ramène un entier qui correspond à la taille de la chaine contenu dans la variable que tu lui aura passa en paramètre

          exemple :

          $variable = '';
          if(isset($_POST['variable']))
          $variable = $_POST['variable'];

          //jusque là je pense que tu dois te retrouver
          //maintenant essayons de voir si la taille de la chaine contenu dans $variable ,n'est pas tsupérieur à 10

          if(strlen($variable)>10)
          {
          header('location:mapage.php'); /*si la taille de ma chaine est supérieur à 10 caractères, alors on retourne la page qui m'a conduit ici, sans chercher à exécuter la suite*/
          }else
          {
          $requete = .....
          ........
          }


          J'espère que tu comprendras mieux l'utilisation de strlen() avec ça.