Case à cocher dans un tableau

  • jordonshaw
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Déc 30, 2008
  • Messages: 91
  • Loc: Tennessee
  • Status: Offline

Message Janvier 11th, 2010, 11:38 pm

J'ai 9 cases à cocher qui Im mettre dans un tableau. Here is my code:

Code: [ Select ]
<input type=\"checkbox\" value=\"1\" name=\"read_ck[]\"$read_ck />


Le problème qui GI qui lui est quand une case n'est pas cochée, alors qu'il ne détient pas une position dans le tableau, permet de dire que je case à cocher #2, 5, 7. Je ne peux pas tirer que du tableau, car je ne sais pas quelle position dans le tableau, ils seront po Si vous cochez 2 des cases à cocher, puis placez seulement 0 & 1 auront des valeurs, mais j'ai besoin de tout 9 positions de la tableau pour avoir une valeur. Des idées?

Merci,
Jordon
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 11th, 2010, 11:38 pm

  • zbrdlowski
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Jan 10, 2006
  • Messages: 35
  • Loc: Trencin - Slovakia / Europe
  • Status: Offline

Message Janvier 12th, 2010, 6:09 am

Ive a retrouvé il ya longtemps comme ceci:

$ count = NULL;
$ cont = TRUE;
$ stop = amountr mis de cases à cocher que vous voulez afficher;

while (($ count <= $ stop) & & ($ cont == TRUE)) (
echo <input type = "radio" name = "read_ck [. $ count. ] "Value =" blah blah ">;
if ($ count == ($ stop)) (
cont = FALSE;
)
)

ou somethig comme ça...Je l'écris de la tête, donc s'il vous plaît excuser certaines erreurs...

Après cela, tu dois créer de boucle pour checkin chaque case:

if (isset ($ _POST [ "submit"]))
(
foreach ($ read_ck as $ index => $ variable)
(
accomplir un acte dont vous avez besoin d'être fait ici...
$ index est un array position
$ variable est la valeur de cette case à cocher.
)
)

Était-ce utile?
  • jordonshaw
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Déc 30, 2008
  • Messages: 91
  • Loc: Tennessee
  • Status: Offline

Message Janvier 12th, 2010, 6:59 am

Merci pour le post! Votre solution ressemble beaucoup, le seul problème que je vois, que je ne this pas tous les détails, mes cases à cocher sont générés par une requête, ainsi donc je ne sais pas combien de cases à cocher je vais avoir. J'aurais peut-être 5 sur une page, et 9 sur l'autre. Thats pourquoi j'ai été en utilisant un tableau à poste, qui fonctionne parfaitement avec une zone de texte, mais, en raison du fait que les cases à cocher ne pas poster quelque chose quand ils ne sont pas vérifiées, je ne peux pas dire case est cochée basée sur la position dans le tableau .

Merci pour la suggestion! Keep them coming!

Jordon
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Janvier 12th, 2010, 7:05 am

Pourrait être quelque chose d'utile pour vous par ici:

Hilit programming-forum/checkbox-unchecked-value-arrays-t98879.html? = checkbox #p554119
I'd love to change the world, but they won't give me the source code.
  • zbrdlowski
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Jan 10, 2006
  • Messages: 35
  • Loc: Trencin - Slovakia / Europe
  • Status: Offline

Message Janvier 12th, 2010, 7:41 am

Mais ce n'est pas tout un problème. Tout ce que vous avez besoin est juste mettre un peu d'incrémentation numéro dans read_ck [] dans votre formulaire. Ou simplement compter le nombre de cases à cocher est là et mettre cela en entier $ stop variable. Thats it.

Lors de la création de cette forme, juste créer une variable, et laissez-le à chaque incrément de la boucle qui créent des cases à cocher...

Quelque chose comme:

$ stop = "0";
while (
Cela fait partie du code qui chcbx créer.
$ stop = $ stop + 1;
ou
$ stop + = 1;
pour faire court...
)

reste a été décrit précédemment...
  • jordonshaw
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Déc 30, 2008
  • Messages: 91
  • Loc: Tennessee
  • Status: Offline

Message Janvier 13th, 2010, 9:37 am

J'ai pris beaucoup de vos suggestions en jeu et c'est ce que je suis venu avec.

Case code:
Code: [ Select ]
$course_set = mssql_query("SELECT * FROM SNP_crsunits WHERE crs_id = '{$course1['crs_id']}'", $connection);
    
    for ($i = 0; $course = mssql_fetch_array($course_set); $i++) {
        $read = '#FFFFFF';
        $read_ck = '';
          if ($course['readbx']=='1') {
        $read = '#A9F5A9';
        $read_ck = ' checked="checked"';
      };
        $attend = '#FFFFFF';
        $attend_ck = '';
          if ($course['attend']=='1') {
        $attend = '#A9F5A9';
        $attend_ck = ' checked="checked"';
      };
        $complete = '#FFFFFF';
        $complete_ck = '';
          if ($course['complete']=='1') {
        $complete = '#A9F5A9';
        $complete_ck = ' checked="checked"';
      };
        $discuss = '#FFFFFF';
        $discuss_ck = '';
          if ($course['discuss']=='1') {
        $discuss = '#A9F5A9';
        $discuss_ck = ' checked="checked"';
      };
      echo "      
      <tr>
      <td>{$course['unit']}<input type=\"hidden\" name=\"hd[]\" value=\"{$course['crsunit_id']}\" /></td>      
      <td align=\"center\" bgcolor=\"{$read}\">
      <input type=\"checkbox\" value=\"$i\" name=\"read_ck[]\"$read_ck /></td>
      
      <td align=\"center\" bgcolor=\"{$attend}\">
      <input type=\"checkbox\" value=\"$i\" name=\"attend_ck[]\"$attend_ck /></td>
      
      <td align=\"center\" bgcolor=\"{$complete}\">
      <input type=\"checkbox\" value=\"$i\" name=\"complete_ck[]\"$complete_ck /></td>
      
      <td align=\"center\" bgcolor=\"{$discuss}\">
      <input type=\"checkbox\" value=\"$i\" name=\"discuss_ck[]\"$discuss_ck /></td>
      </tr>
  1. $course_set = mssql_query("SELECT * FROM SNP_crsunits WHERE crs_id = '{$course1['crs_id']}'", $connection);
  2.     
  3.     for ($i = 0; $course = mssql_fetch_array($course_set); $i++) {
  4.         $read = '#FFFFFF';
  5.         $read_ck = '';
  6.           if ($course['readbx']=='1') {
  7.         $read = '#A9F5A9';
  8.         $read_ck = ' checked="checked"';
  9.       };
  10.         $attend = '#FFFFFF';
  11.         $attend_ck = '';
  12.           if ($course['attend']=='1') {
  13.         $attend = '#A9F5A9';
  14.         $attend_ck = ' checked="checked"';
  15.       };
  16.         $complete = '#FFFFFF';
  17.         $complete_ck = '';
  18.           if ($course['complete']=='1') {
  19.         $complete = '#A9F5A9';
  20.         $complete_ck = ' checked="checked"';
  21.       };
  22.         $discuss = '#FFFFFF';
  23.         $discuss_ck = '';
  24.           if ($course['discuss']=='1') {
  25.         $discuss = '#A9F5A9';
  26.         $discuss_ck = ' checked="checked"';
  27.       };
  28.       echo "      
  29.       <tr>
  30.       <td>{$course['unit']}<input type=\"hidden\" name=\"hd[]\" value=\"{$course['crsunit_id']}\" /></td>      
  31.       <td align=\"center\" bgcolor=\"{$read}\">
  32.       <input type=\"checkbox\" value=\"$i\" name=\"read_ck[]\"$read_ck /></td>
  33.       
  34.       <td align=\"center\" bgcolor=\"{$attend}\">
  35.       <input type=\"checkbox\" value=\"$i\" name=\"attend_ck[]\"$attend_ck /></td>
  36.       
  37.       <td align=\"center\" bgcolor=\"{$complete}\">
  38.       <input type=\"checkbox\" value=\"$i\" name=\"complete_ck[]\"$complete_ck /></td>
  39.       
  40.       <td align=\"center\" bgcolor=\"{$discuss}\">
  41.       <input type=\"checkbox\" value=\"$i\" name=\"discuss_ck[]\"$discuss_ck /></td>
  42.       </tr>


Alors mon code d'action pour faire de ce poste à la DB:

Code: [ Select ]
  $read_checkboxes = is_array($_POST['read_ck'])? array_flip($_POST['read_ck']) : array();
  $attend_checkboxes = is_array($_POST['attend_ck'])? array_flip($_POST['attend_ck']) : array();
  $complete_checkboxes = is_array($_POST['complete_ck'])? array_flip($_POST['complete_ck']) : array();
  $discuss_checkboxes = is_array($_POST['discuss_ck'])? array_flip($_POST['discuss_ck']) : array();
  
  for($i=0;$i<count($_POST['hd']);$i++) {
    
    if (isset($read_checkboxes[$i])) {
      mssql_query("UPDATE SNP_crsunits SET readbx='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
    } else {
      mssql_query("UPDATE SNP_crsunits SET readbx='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
    }
    
    if (isset($attend_checkboxes[$i])) {
      mssql_query("UPDATE SNP_crsunits SET attend='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
    } else {
      mssql_query("UPDATE SNP_crsunits SET attend='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
    }
    
    if (isset($complete_checkboxes[$i])) {
      mssql_query("UPDATE SNP_crsunits SET complete='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
    } else {
      mssql_query("UPDATE SNP_crsunits SET complete='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
    }
    
    if (isset($discuss_checkboxes[$i])) {
      mssql_query("UPDATE SNP_crsunits SET discuss='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
    } else {
      mssql_query("UPDATE SNP_crsunits SET discuss='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
    }
  1.   $read_checkboxes = is_array($_POST['read_ck'])? array_flip($_POST['read_ck']) : array();
  2.   $attend_checkboxes = is_array($_POST['attend_ck'])? array_flip($_POST['attend_ck']) : array();
  3.   $complete_checkboxes = is_array($_POST['complete_ck'])? array_flip($_POST['complete_ck']) : array();
  4.   $discuss_checkboxes = is_array($_POST['discuss_ck'])? array_flip($_POST['discuss_ck']) : array();
  5.   
  6.   for($i=0;$i<count($_POST['hd']);$i++) {
  7.     
  8.     if (isset($read_checkboxes[$i])) {
  9.       mssql_query("UPDATE SNP_crsunits SET readbx='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
  10.     } else {
  11.       mssql_query("UPDATE SNP_crsunits SET readbx='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
  12.     }
  13.     
  14.     if (isset($attend_checkboxes[$i])) {
  15.       mssql_query("UPDATE SNP_crsunits SET attend='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
  16.     } else {
  17.       mssql_query("UPDATE SNP_crsunits SET attend='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
  18.     }
  19.     
  20.     if (isset($complete_checkboxes[$i])) {
  21.       mssql_query("UPDATE SNP_crsunits SET complete='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
  22.     } else {
  23.       mssql_query("UPDATE SNP_crsunits SET complete='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
  24.     }
  25.     
  26.     if (isset($discuss_checkboxes[$i])) {
  27.       mssql_query("UPDATE SNP_crsunits SET discuss='1' WHERE crsunit_id='{$_POST[hd][$i]}'");
  28.     } else {
  29.       mssql_query("UPDATE SNP_crsunits SET discuss='0' WHERE crsunit_id='{$_POST[hd][$i]}'");
  30.     }
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Janvier 13th, 2010, 12:35 pm

Elle mai travail, mais si la charge du serveur est une question à tous, thats puis une mauvaise façon de s'y prendre. Chaque fois que vous voyez faire cela car c'est une mauvaise idée. Aggregate vos résultats en définissant une variable booléenne dans chacun de vos IFS, puis construire une requête Mise à jour (avec le vars new boolean branché) et exécutez à la place.

Heres quelques pseudo pour vous:
Code: [ Select ]
$stmt = $dbh->prepare("UPDATE SNP_crsunits SET field1=?, field2=? WHERE crsunit_id='{$_POST[hd][$i]}'");

$stmt->bindParam(1, $bool1);
$stmt->bindParam(2, $bool2);

bool1 = false;
bool2 = false;

if(blah)
  bool1 = true;
if(something else)
  bool2 = true;

$stmt->execute();
  1. $stmt = $dbh->prepare("UPDATE SNP_crsunits SET field1=?, field2=? WHERE crsunit_id='{$_POST[hd][$i]}'");
  2. $stmt->bindParam(1, $bool1);
  3. $stmt->bindParam(2, $bool2);
  4. bool1 = false;
  5. bool2 = false;
  6. if(blah)
  7.   bool1 = true;
  8. if(something else)
  9.   bool2 = true;
  10. $stmt->execute();
I'd love to change the world, but they won't give me the source code.
  • Tannu4u
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Avr 29, 2004
  • Messages: 480
  • Loc: India
  • Status: Offline

Message Janvier 15th, 2010, 5:47 am

Ne pas attribuer une valeur de "1" à chacun d'eux, attribuer une valeur supplémentaire à chacun d'eux, afin de, par exemple case à cocher d'abord attribuer une valeur de 1, pour la 5ème case attribuer une valeur de 5.

De cette façon, vous serez en mesure de déterminer quelle case a été cochée en fonction de la valeur que vous obtenez dans le POST.

I hope this helps.
Amit
My Blog http://www.amityadav.name
  • jordonshaw
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Déc 30, 2008
  • Messages: 91
  • Loc: Tennessee
  • Status: Offline

Message Janvier 15th, 2010, 7:02 am

J'ai à affecter 1 à eux tous, parce que, quand je fais une recherche pour voir si elles sont à cocher ou non, Im recherchant une valeur de 1. Si je viens d'utiliser une valeur incrémentale, alors je ne saurai jamais si c'était à cocher ou non.
  • zbrdlowski
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Jan 10, 2006
  • Messages: 35
  • Loc: Trencin - Slovakia / Europe
  • Status: Offline

Message Janvier 17th, 2010, 4:21 am

Alors, pourquoi n'utilisez-vous pas plutôt radiobutton...?
  • jordonshaw
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Déc 30, 2008
  • Messages: 91
  • Loc: Tennessee
  • Status: Offline

Message Janvier 17th, 2010, 2:22 pm

L'application que Im en développement est une liste de contrôle. Soit lorsque vous avez terminé une étape puis vous cochez que sa complète. Nous avons également besoin de la capacité de décocher dans le cas où il nous faut revenir en arrière. Ainsi, en raison de ce bouton de la radio n'a pas de sens.

Thank you for help everys!

Jordon
  • zbrdlowski
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Jan 10, 2006
  • Messages: 35
  • Loc: Trencin - Slovakia / Europe
  • Status: Offline

Message Janvier 18th, 2010, 12:44 am

Mais dans ce cas il vous suffit de l'extraire avec

if (empty ()) & if (isset ())
Ou
if (empty ()) & if (isset ())

Ou d'une autre manière, vous pouvez l'CECK avec javascript avant de soumettre le formulaire...
  • Tannu4u
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Avr 29, 2004
  • Messages: 480
  • Loc: India
  • Status: Offline

Message Janvier 18th, 2010, 12:53 am

Vous n'êtes plus qu'à obtenir la valeur de ces cases à cocher qui sont vérifiées, et non pour ceux que vous n'avez pas.

Donc, leur attribuer une valeur supplémentaire, et voir lequel est cochée.
Amit
My Blog http://www.amityadav.name
  • zbrdlowski
  • Beginner
  • Beginner
  • Avatar de l’utilisateur
  • Inscription: Jan 10, 2006
  • Messages: 35
  • Loc: Trencin - Slovakia / Europe
  • Status: Offline

Message Janvier 18th, 2010, 1:28 am

Mais il dit, que après avoir comblé une partie de la forme, il doit vérifier somethin...Je pense thats la mauvaise façon de le faire. S'il y aura Javascript avec quelques OnChange () déclaration, il l'aura automatiquement...I guess.

Ou peut-être s'il veut vérifier si les cellules vides sont là, il peut la renvoyer à la forme.
Pendant ce temps les valeurs de ceux des cellules non vides pourraient être stockés dans les variables $ _SESSION et remise au bon champs...

Je l'ai fait comme cette fois-looooong avant et il worx bon
  • jordonshaw
  • Student
  • Student
  • Avatar de l’utilisateur
  • Inscription: Déc 30, 2008
  • Messages: 91
  • Loc: Tennessee
  • Status: Offline

Message Janvier 18th, 2010, 1:31 am

J'ai pu faire ce travail et posté ma solution! Je sais que quelqu'un a dit qu'elle n'était pas la meilleure façon de le faire, en raison de la performance, mais cela est une application pour 10 personnes sur un site interne, pas une grosse affaire.

Merci pour tout y "all" s aider!

Jordon
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 18th, 2010, 1:31 am

Afficher de l'information

  • Total des messages de ce sujet: 18 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 174 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC