PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Javascript » [Clos par MK] Vérification Checkboxes non cochées » 04-06-2013 09:06:33

Bonjour,

Mes excuses à tout le monde.

Je ne suis pas susceptible, je suis simplement trop vieux. Le projet open-source sur lequel je travaille date de 2004  http://phpformgen.sourceforge.net/new_demo/phpformgen/

Mais il ne gère pas les checkboxes à choix multiples

Je l'ai "forké" pour en faire ça : http://marigot.toile-libre.org/phpformfr/

Les checkboxes à choix multiples fonctionnent dorénavant mais je pensais apporter un petit + avec la correction js que je vous demandais.

Mettez-vous deux secondes à la place de votre père (voire de votre grand-père) qui a commencé l'informatique avec le "logo" et  qui laborieusement, sans formation a essayé de comprendre la logique du PHP et qui doit recommencer avec le javascript. Il croit qu'il a pas trop mal bossé. Il pose juste une question de détail concernant le js.

Pourquoi ne pas lui dire tout simplement que JS sans jquery c'est obsolète, et qu'il doit aller voir ailleurs.

Le vieux, il s'en contenterait, et il irait voir ailleurs. Fin de l'histoire. Topic résolu. (les vieux, c'est comme ça, ils veulent pas déranger...)

Spéciale dédicace à Infantimigulo
Chez nous en Martinique, on dit : "Cé kan ven ka vanté ou ka ouè kiou poul" ce qui peut se traduire par "C'est lorsque le vent souffle que l'on voit le cul de la poule"

Je pense qu'il est temps de passer ce topic en "résolu". Mais l'vieux, y sait même pas comment faire :-)

Tché bé rèd, pa moli !

Philippe

#2 Re : Javascript » [Clos par MK] Vérification Checkboxes non cochées » 04-06-2013 09:06:33

Bonjour Infantimigulo

Voulez-vous dire par là que je n'ai rien à télécharger en plus sur mon serveur (jquery.js par exemple) et que je peux utiliser la proposition de Pierrot à l'intérieur de mon code JS sans autre forme de procès ? J'ai des doutes mais...

peut-être est-ce simplement le fameux humour des "sachants" face aux ignorants.

Si mon ignorance crasse vous a au moins fait sourire, ma demande d'aide aura au moins fait un heureux. En tant que pédagogue, j'ai toujours eu une indulgence bienveillante pour ceux qui ne le sont pas.

Cordialement

Philippe

#3 Re : Javascript » [Clos par MK] Vérification Checkboxes non cochées » 04-06-2013 09:06:33

Bonjour Pierrot,

Merci pour votre réponse rapide, mais je suis grand débutant en javascript et mes compétences se limitent pour l'instant à essayer de comprendre la logique de ce langage. Alors, passer à jquery juste pour ce tout petit bout de code ne me paraît pas réaliste.

Je vais donc continuer à chercher une solution en javascript.

Merci encore

cordialement

Philippe

#4 Javascript » [Clos par MK] Vérification Checkboxes non cochées » 04-06-2013 09:06:33

philippepetit
Réponses : 8

Bonjour,

Le code suivant (récupéré) de vérification des coches de plusieurs checkboxes fonctionne mais ..... si je ne coche aucune case j'ai bien le message d'alerte mais il ne met que la dernière case vide en surbrillance.
Est-il possible de le modifier pour que dans ce cas (aucune case cochée), la totalité des cases apparaissent en surbrillance ?
Ou faut-il que je recherche un code totalement différent ?

Par avance merci

Philippe

//start MCQ validate ===================================================================================

    function validateMCQ(fieldId, fieldBoxId, fieldType, mysize, required)
    {
      fieldBox = document.getElementById(fieldBoxId);
      if(required == 1)
      {

        // Loop through each MCQ option to see if any are checked -->
        for( i=1; i<=mysize; i++)
        {
          myfieldId = fieldId+"_option_"+i; fieldObj = document.getElementById(myfieldId);

          // If any option are checked return every option to non-highlighted state -->
          if(fieldObj.checked == 1)
          {
          for( j=1; j<=mysize; j++)
          {
          myfieldId = fieldId+"_option_"+j; fieldObj = document.getElementById(myfieldId);
          fieldObj.setAttribute("class","mainForm");
          fieldObj.setAttribute("className","mainForm");
          }
          // If any option is checked return true condition -->
          return true;
          // If no options are checked return every option to highlighted state -->
          }
          else
          { fieldObj.setAttribute("class","mainFormError");
          fieldObj.setAttribute("className","mainFormError");
          }
        }
        // If no options are checked return false condition -->
        fieldObj.focus();
        return false;
      }
    }

//end MCQ validate ===================================================================================

#5 Re : MySQL, PostgreSQL, etc... » récupérer les cases cochées d'un array de bdd » 08-01-2013 02:00:05

Bonjour,

J'ai résolu mon problème  de récupération des arrays de mes bdd mysql et je peux essayer de vous aider mais...

votre code est le code du formulaire, et je vois "<form method="POST" action="#">. Pourquoi écrivez-vous "#" ? Il devrait y avoir ici l'adresse de la page de traitement du formulaire (ex : traitement.php).

C'est le code de cette page dont j'ai besoin pour vous aider. Avez vous une telle page ? Utilisez vous une bdd MySQL ? Que souhaitez-vous envoyer sous forme d'array? Combien de champs de votre bdd sont concernés ? Avez vous une base de données MySQL ?

Tel que votre code est écrit, il n'est de toute façon pas prévu pour une récupération en BDD MySQL sous forme d'array.

Comprenez-vous ce que j'ai écrit ci-dessus ?

Philippe

#6 Re : MySQL, PostgreSQL, etc... » récupérer les cases cochées d'un array de bdd » 08-01-2013 02:00:05

Bonjour

Merci de votre réponse et surtout de l'exemple que vous me donnez.
Est-ce que la variable $apref demeure $apref = array("sport", "internet");
Que devient la variable $dbpref= explode(',',$row['pref']);  ? Correspond-elle à votre variable $a ?

Vous avez déjà compris que je suis débutant en PHP. J'ai cependant réussi (avec l'aide de votre site) à réaliser un questionnaire PHP mysql avec bdd fonctionnel (champs texte, champs radio, champ select, champ checkbox) mais je butte désespérément sur ce problème de récupération des checkboxes dans mon formulaire de modif.

J'ai aussi bien compris que le but de ce forum n'est pas de donner du code pré-mâché, mais cela fait bientôt 2 mois que je butte sur ce petit bout de code, alors...

Cordialement
Philippe

#7 MySQL, PostgreSQL, etc... » récupérer les cases cochées d'un array de bdd » 08-01-2013 02:00:05

philippepetit
Réponses : 6

Bonjour,

Le champ de ma base est "pref" il récupère  l'array "sport,internet," envoyé depuis un formulaire d'enquête.

Dans un formulaire de modification, j'essaie de récupérer les cases cochées suivant l'array

$apref = array("sport", "internet");
 
    $dbpref= explode(',',$row['pref']);
     
  foreach ($apref as $pref) {
             
     if(in_array($pref,$dbpref)) {
     
 echo "<input name=\"pref[]\" type=\"checkbox\" value=\"$pref\" checked=\"checked\"> $pref";
          } else
    {
      echo "<input name=\"pref[]\" type=\"checkbox\" value=\"$pref\"> $pref";
                  }
              }

Mais je dois faire une erreur car mes cases ne se cochent pas.

Une piste ?

#9 MySQL, PostgreSQL, etc... » Checkbox avec array vers BDD msql avec erreur si cases non cochées » 28-06-2012 00:47:23

philippepetit
Réponses : 2

Bonjour

J'ai laborieusement réussi (avec l'aide de tutos) à écrire un (tout) petit formulaire PHP qui me permet d'envoyer dans dans ma BDD msql les résultats de deux cases à cocher dans un array avec la fonction implode.
Tout fonctionne très bien sauf bien-sûr quand je ne coche rien : j'ai l'erreur "Warning: implode() [function.implode]: Bad arguments."
J'ai essayé diverses solutions de test pour que dans ce cas précis, le formulaire soit simplement réaffiché avec un message d'erreur du type : "vous devez cocher au moins une case", mais je n'arrive à rien de probant.
Pouvez vous me donner quelques pistes pour mes recherches...

<?php
include('config.php');
?>

<?php

if ($_POST['envoyer_sql']) {
// passe le tableau en chaine de caractere
$chaine_activite = implode(";", $_POST['choix']);
mysql_query("INSERT INTO table_tice3 (choix_activite)
                    VALUES('"
.$chaine_activite."')");
echo mysql_error();
}

?>


<form action="index0.php" method="post">

<input name="choix[]" type="checkbox" value="sport">sport
<input name="choix[]" type="checkbox" value="internet">internet<br /><br />
<input type="submit" name="envoyer_sql" value="Envoyer">
</form> <?php

?>

#10 Re : Forum Général PHP » [résolu]Bouton radio coché enfonction des résultats d'une base mysql ? » 19-05-2012 19:12:10

Bonjour,

Je reviens vers vous pour vous faire savoir qu'après recherche sur différents forums, je pense avoir trouvé la solution à mon problème. En fait, 'checked="checked"' s'applique bien aussi aux boutons radios, afin de récupérer la coche en fonction de la bdd mysql. Je faisais simplement une erreur de syntaxe. La bonne syntaxe est :

<label for="question">question</label>
<input type="radio" name="question" value="<? echo "$question"; ?>"<?php if ($question=='oui') echo 'checked="checked"'; ?>/> oui
<input type="radio" name="question" value="<? echo "$question"; ?>"<?php if ($question=='non') echo 'checked="checked"'; ?>/> non<br />

et ceci quel que soit le type de champ de la bdd mysql (dans mon cas, un simple champ text.

Je ne sais pas comment mettre un "résolu" dans le fil, désolé.

Merci encore de vos précieux conseils. J'attaque maintenant le traitement des checkbox et ne manquerai pas de vous demander conseil si j'ai des soucis.

Philippe

#11 Re : Forum Général PHP » [résolu]Bouton radio coché enfonction des résultats d'une base mysql ? » 19-05-2012 19:12:10

Bonjour,

Merci de vos réponses. Je vais étudier vos suggestions afin de trouver une solution côté code ou base de données.

Philippe

#12 Re : Forum Général PHP » [résolu]Bouton radio coché enfonction des résultats d'une base mysql ? » 19-05-2012 19:12:10

Bonjour,

Merci de votre réponse rapide.
J'ai changé "radio" en "checkbox" mais le résultat n'est pas probant. je ne récupère toujours pas la coche dans mon fichier edit_infos.php. Je pense donc que le problème vient d'ailleurs. Je n'ai pas de variables dans mon traitement, peut-être est-ce là le problème. Peut-être faut-il un champ spécifique dans la BDD. Je vais continuer de chercher des exemples de traitement des boutons radio car je ne suis pas programmeur.

Excusez moi de vous avoir fait perdre votre temps.

Et merci encore

Philippe

#13 Forum Général PHP » [résolu]Bouton radio coché enfonction des résultats d'une base mysql ? » 19-05-2012 19:12:10

philippepetit
Réponses : 6

Bonjour,

Tout d'abord, veuillez m'excuser si ma question n'est pas au bon endroit, c'est la première fois que j'utilise un forum.

J'ai réussi (laborieusement, car je suis débutant) à construire une ébauche d'enquête PHP/mysql avec entre autre une case à cocher de type oui/non. Quand l'utilisateur remplit l'enquête, toutes les données sont correctement enregistrées dans ma base y compris celles de la case à cocher.
L'utilisateur doit pouvoir reprendre ou modifier son enquête par le biais d'un fichier edit_infos.php. Ce fichier fonctionne parfaitement pour tous les champs sauf pour les cases à cocher qui restent non cochées.

Je pense qu'il y a une erreur de syntaxe au niveau de la récupération des valeurs oui ou non de la base de données mais je ne vois pas où.

Merci par avance de toute aide que pourriez m'apporter.

Philippe

<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
        <title>Modifier son enquete</title>
    </head>
    <body>
      <div class="header">
          <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Enquete" /></a>
      </div>
<?php
//On verifie si lutilisateur est connecte
if(isset($_SESSION['username']))
{
  //On verifie si le formulaire a ete envoye
  if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar'], $_POST['question']))
  {
    //On enleve lechappement si get_magic_quotes_gpc est active
    if(get_magic_quotes_gpc())
    {
      $_POST['username'] = stripslashes($_POST['username']);
      $_POST['password'] = stripslashes($_POST['password']);
      $_POST['passverif'] = stripslashes($_POST['passverif']);
      $_POST['email'] = stripslashes($_POST['email']);
      $_POST['avatar'] = stripslashes($_POST['avatar']);
      $_POST['question'] = stripslashes($_POST['question']);
    }
    //On verifie si le mot de passe et celui de la verification sont identiques
    if($_POST['password']==$_POST['passverif'])
    {
      //On verifie si le mot de passe a 6 caracteres ou plus
      if(strlen($_POST['password'])>=6)
      {
        //On verifie si lemail est valide
        if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
        {
          //On echape les variables pour pouvoir les mettre dans une requette SQL
          $username = mysql_real_escape_string($_POST['username']);
          $password = mysql_real_escape_string($_POST['password']);
          $email = mysql_real_escape_string($_POST['email']);
          $avatar = mysql_real_escape_string($_POST['avatar']);
          $question = mysql_real_escape_string($_POST['question']);
          //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
          $dn = mysql_fetch_array(mysql_query('select count(*) as nb from table_tice where username="'.$username.'"'));
          //On verifie si le pseudo a ete modifie pour un autre et que celui-ci n'est pas deja utilise
          if($dn['nb']==0 or $_POST['username']==$_SESSION['username'])
          {
            //On modifie les informations de lutilisateur avec les nouvelles
            if(mysql_query('update table_tice set username="'.$username.'", password="'.$password.'", email="'.$email.'", avatar="'.$avatar.'", question="'.$question.'" where id="'.mysql_real_escape_string($_SESSION['userid']).'"'))
            {
              //Si ca a fonctionne, on naffiche pas le formulaire
              $form = false;
              //On supprime les sessions username et userid au cas ou il aurait modifie son pseudo
              unset($_SESSION['username'], $_SESSION['userid']);
?>
<div class="message">Vos informations ont bien été modififée. Vous devez vous reconnecter.<br />
<a href="connexion.php">Se connecter</a></div>
<?php
            }
            else
            {
              //Sinon on dit quil y a eu une erreur
              $form = true;
              $message = 'Une erreur est survenue lors des modifications.';
            }
          }
          else
          {
            //Sinon, on dit que le pseudo voulu est deja pris
            $form = true;
            $message = 'Un autre utilisateur utilise déjà le nom d\'utilisateur que vous désirez utiliser.';
          }
        }
        else
        {
          //Sinon, on dit que lemail nest pas valide
          $form = true;
          $message = 'L\'email que vous avez entré n\'est pas valide.';
        }
      }
      else
      {
        //Sinon, on dit que le mot de passe nest pas assez long
        $form = true;
        $message = 'Le mot de passe que vous avez entré contien moins de 6 caractères.';
      }
    }
    else
    {
      //Sinon, on dit que les mots de passes ne sont pas identiques
      $form = true;
      $message = 'Les mot de passe que vous avez entré ne sont pas identiques.';
    }
  }
  else
  {
    $form = true;
  }
  if($form)
  {
    //On affiche un message sil y a lieu
    if(isset($message))
    {
      echo '<strong>'.$message.'</strong>';
    }
    //Si le formulaire a deja ete envoye on recupere les donnes que lutilisateur avait deja insere
    if(isset($_POST['username'],$_POST['password'],$_POST['email'],$_POST['question']))
    {
      $username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');
      if($_POST['password']==$_POST['passverif'])
      {
        $password = htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8');
      }
      else
      {
        $password = '';
      }
      $email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
      $avatar = htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');
      $question = htmlentities($_POST['question'], ENT_QUOTES, 'UTF-8');
    }
    else
    {
      //Sinon, on affiche les donnes a partir de la base de donnee
      $dnn = mysql_fetch_array(mysql_query('select username,password,email,avatar,question from table_tice where username="'.$_SESSION['username'].'"'));
      $username = htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8');
      $password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
      $email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
      $avatar = htmlentities($dnn['avatar'], ENT_QUOTES, 'UTF-8');
      $question = htmlentities($dnn['question'], ENT_QUOTES, 'UTF-8');
    }
    //On affiche le formulaire
?>
<div class="content">
    <form action="edit_infos.php" method="post">
        Vous pouvez modifier vos informations:<br />
        <div class="center">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo $username; ?>" /><br />
            <label for="password">Mot de passe<span class="small">(6 caractères min.)</span></label><input type="password" name="password" id="password" value="<?php echo $password; ?>" /><br />
            <label for="passverif">Mot de passe<span class="small">(vérification)</span></label><input type="password" name="passverif" id="passverif" value="<?php echo $password; ?>" /><br />
            <label for="email">Email</label><input type="text" name="email" id="email" value="<?php echo $email; ?>" /><br />
            <label for="avatar">Image perso<span class="small">(facultatif)</span></label><input type="text" name="avatar" id="avatar" value="<?php echo $avatar; ?>" /><br />


<label for="question">OUI ou NON</label><input type="radio" name="question" value="oui" <?php if (isset($_POST['question']) && $_POST['question'] == "oui") echo 'checked="checked"'; ?> /><br />
<label for="question">OUI ou NON</label><input type="radio" name="question" value="non" <?php if (isset($_POST['question']) && $_POST['question'] == "non") echo 'checked="checked"'; ?>/><br />
 
      <input type="submit" value="Envoyer" />
        </div>
    </form>
</div>
<?php
  }
}
else
{
?>
<div class="message">Pour accéder à cette page, vous devez être connecté.<br />
<a href="connexion.php">Se connecter</a></div>
<?php
}
?>
    <div class="foot"><a href="<?php echo $url_home; ?>">Retour à l'accueil</a> - <a href="http://philippe.petit.free.fr/index.php">Accueil Enquete</a></div>
  </body>
</html>

Pied de page des forums

Propulsé par FluxBB