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 : Forum Général PHP » formulaire php - récuperation et adaptation de donnée checkbox problem » 07-08-2014 18:05:48

Bonjour JC,

J'ai trouvé la solution.

Il suffisait tout simplement d'utiliser in_array().

merci.

Cordialement




<div class="checkbox form-control">
    <label for="tag" class="control-label">Tag</label>
    <?php
    $qt="SELECT tag_id, tag FROM tag ORDER BY tag DESC";
    $r=mysqli_query($dbc,$qt);
      while ($rowt=mysqli_fetch_array($r, MYSQLI_ASSOC)) {
     
      //print_r($rowt);
     
      $monTag_id = $rowt['tag_id'];
      $monTag = $rowt['tag'];
     
      ?>
      <div class="checkbox <?php if(array_key_exists('tag', $update_page_errors)) echo ' has-error'; ?>">
            <label>
              <input type="checkbox" name="tag[]" id="<?php echo $monTag ?>" value="<?php echo $rowt['tag_id'] ?>"
              <?php
             
              if( isset($tagNom) && in_array( $monTag , $tagNom ) ) echo !empty('checked="checked"') ? 'checked="checked"' : '';?>><?php echo $rowt['tag'] ?>
            </label>
        </div>
       
       
        <?php if(array_key_exists('tag', $update_page_errors)) echo'<span class="help-bloc">'.$update_page_errors['tag'].'</span>'; ?>
       
      <?php } ?>
  </div>     
 

#3 Re : Forum Général PHP » formulaire php - récuperation et adaptation de donnée checkbox problem » 07-08-2014 18:05:48

Bonjour,

merci pour la réponse.

je vais travailler sur la base de vos recommandations.

Je pensais qu'il me fallait une boucle foreach pour mettre en correspondance le résultat pour $tag de la bd qui sont mémorisés checked et la partie du formulaire checkbox.

Pour ma requete sur cat_p_id ( la categorie enregistrée cela fonctionne impeccable )

ci-joint cette partie :

 
html/php
echo'<div class="form-group';

  if(array_key_exists('category', $update_page_errors)) echo 'has-error';
  echo '"><label for="category" class="control-label">La catégorie</label>
  <select name="category" class="form-control"><option>Sélectionnez</option>';
    $q="SELECT cat_id, category FROM categorie ORDER BY cat_id ASC";
    $r= mysqli_query($dbc,$q);
    while ($row=mysqli_fetch_array($r, MYSQLI_NUM)) {
          echo "<option value =\"$row[0]\"";
      if(isset($category) && ($category == $row[0])) echo ' selected="selected"';
      echo ">$row[1]</option>\n";
      }
  echo '</select>';
  if(array_key_exists('category', $update_page_errors)) echo '<span class="help-bloc">' .$update_page_errors['category'].'</span>';
  echo'</div>';
?> 
 

Cordialement

pour le 1/
je fais au mieux pour structurer et optimiser les relations.
la table 'Pages' est la base du systeme
s'articule autour
une table 'Categorie'
une table 'User'
une table de jonction 'Pages_tag'
qui est lie à la table 'Tag'

pour le 2/
ma requete

 php/sql ::
SELECT p.user_id,p.status, p.title, p.cat_p_id, GROUP_CONCAT(t.tag) AS tag , p.summary, p.ingredient, p.recipe, p.tips, p.filename
      FROM pages AS p
      LEFT JOIN pages_tag AS pt USING (page_id)
      LEFT JOIN tag AS t USING(tag_id)
 

pour le point 3 :
chaque tag a sa case. La boucle affiche bien chaque tag avec sa valeur.

<div class="checkbox form-control">
    <label for="tag" class="control-label">Tag</label>
    <?php
    $qt="SELECT tag_id, tag FROM tag ORDER BY tag DESC";
    $r=mysqli_query($dbc,$qt);
      while ($rowt=mysqli_fetch_array($r, MYSQLI_ASSOC)) {
     
      print_r($rowt);
      ?>
      <div class="checkbox <?php if(array_key_exists('tag', $update_page_errors)) echo ' has-error'; ?>">
            <label>
              <input type="checkbox" name="tag[]" id="<?php echo $rowt['tag'] ?>" value="<?php echo $rowt['tag_id'] ?>"
              <?php

              if( isset($tag) && ($tag_id == $rowt['tag_id']) ) echo !empty('checked="checked"')?'checked="checked"':'';?>><?php echo $rowt['tag'] ?>
            </label>
        </div>
       
       
        <?php if(array_key_exists('tag', $update_page_errors)) echo'<span class="help-bloc">'.$update_page_errors['tag'].'</span>'; ?>
       
      <?php } ?>
  </div>

            WHERE p.page_id=?
            ORDER BY tag

#4 Re : Forum Général PHP » formulaire php - récuperation et adaptation de donnée checkbox problem » 07-08-2014 18:05:48

bonjour,

c'est justement le problème.
'Tag 'est une table lier à la table 'Pages' par une table de liaison 'Pages_tag'.

$tag est issu de la BD par une jointure,  c'est 'le nom' du tag que je retrouve. C'est par exemple 'végétalien'.
$tag_id  sera son indice selon sa position dan la table 'Tag' composé de tag, tag_id

donc selon ma table si j'ai végétalien, son tag_id est 2

c'est cette manière de faire correspondre et donc de valider ce que me retourne la requête SELECT
que je cherche à faire afin que mon formulaire checkbox soit bien checked.

ma table Tag avec les correspondances


Tag Array ( [tag] => végétarien [tag_id] => 1 ) végétarien
Array ( [tag] => végétalien [tag_id] => 2 ) végétalien
Array ( [tag] => sans lactose [tag_id] => 4 ) sans lactose
Array ( [tag] => sans gluten [tag_id] => 3 ) sans gluten
Array ( [tag] => classique [tag_id] => 5 ) classique

merci d'avance pour une idée

cordialement

#5 Re : Forum Général PHP » formulaire php - récuperation et adaptation de donnée checkbox problem » 07-08-2014 18:05:48

hello Maljuna,

Le problème n'est pas sur le html du checked="checked"

if( isset($tag) && ($tag_id == $rowt['tag_id']) ) echo !empty('checked="checked"')?'checked="checked"':'';?>><?php echo $rowt['tag'] ?>

Je n'arrive pas à créer un tableau qui à partir de la sortie du SELECT pour $tag [-> $tag = (végétalien,sans gluten); ]

permette de valider :

Tag Array ( [tag] => végétarien [tag_id] => 1 ) végétarien
Array ( [tag] => végétalien [tag_id] => 2 ) végétalien
Array ( [tag] => sans lactose [tag_id] => 4 ) sans lactose
Array ( [tag] => sans gluten [tag_id] => 3 ) sans gluten
Array ( [tag] => classique [tag_id] => 5 ) classique

qui sera checké  selon la sortie de $tag
soit là par exemple:
          checked = checked  pour végétalien et sans gluten

Merci pour une idée de travail sur les array

cordialement

#6 Forum Général PHP » formulaire php - récuperation et adaptation de donnée checkbox problem » 07-08-2014 18:05:48

lvdesign
Réponses : 9

bonjour à tous,

j'ai une question sur la récuperation de donnée issu d'une BD.
Je veux creer une page de mis à jours de données;
je cree le formulaire
et je le rempli des infos avec la requete SELECT
tout mes champs se remplisse sauf un. C'est un champs de checkbox qui checke les tags associés.

je recupere bien les données de ce champs issu d'un GROUP_CONCAT

donc j'ai
$tag = (végétalien,sans gluten,classique);

je le découpe avec

$tag = preg_split("/[\,]+/", $tag );

j'ai donc maintenant
$tag :: Array ( [0] => végétalien [1] => sans gluten [2] => classique )

Mais après cette opération,
je ne sais pas comment il faut faire pour qu'il checke les bons boutons




mon checkbox se définit ainsi :


Tag Array ( [tag] => végétarien [tag_id] => 1 ) végétarien
Array ( [tag] => végétalien [tag_id] => 2 ) végétalien
Array ( [tag] => sans lactose [tag_id] => 4 ) sans lactose
Array ( [tag] => sans gluten [tag_id] => 3 ) sans gluten
Array ( [tag] => classique [tag_id] => 5 ) classique
 

voici le html du checkbox

<div class="checkbox form-control">
    <label for="tag" class="control-label">Tag</label>
    <?php
    $qt="SELECT tag, tag_id FROM tag ORDER BY tag DESC";
    $r=mysqli_query($dbc,$qt);
      while ($rowt=mysqli_fetch_array($r, MYSQLI_ASSOC)) {
     
      print_r($rowt);
      ?>
      <div class="checkbox <?php if(array_key_exists('tag', $update_page_errors)) echo ' has-error'; ?>">
            <label>
              <input type="checkbox" name="tag[]" id="<?php echo $rowt['tag'] ?>" value="<?php echo $rowt['tag_id'] ?>"
              <?php
              if( isset($tag) && ($tag_id == $rowt['tag_id']) ) echo !empty('checked="checked"')?'checked="checked"':'';?>><?php echo $rowt['tag'] ?>
            </label>
        </div>
       
       
        <?php if(array_key_exists('tag', $update_page_errors)) echo'<span class="help-bloc">'.$update_page_errors['tag'].'</span>'; ?>
       
      <?php } ?>
  </div>

Pour l'instant un seul est checké, c'est Classique. Je pense que c'est par défaut car même si il n'est pas dans la liste c'est le dernier et il est checké.

Par avance merci

cordialement

Pied de page des forums

Propulsé par FluxBB