Fonction avec une checkbox

Fonction avec une checkbox - HTML/CSS - Programmation

Marsh Posté le 16-09-2009 à 21:18:45    

Bonjour,
 
J'ai un petit soucis, j'aimerais savoir un pti truc :  
 
Enfaite je suis en train d'utiliser une checkbox qui a pour utilité : FORMULAIRE -> On a un question -> SI on coche => Exécution d'une fonction X / SI on décoche => La fonction X ne s'exécute pas !
 
J'ai testé plusieurs possibilités sans succès, pourtant je pense que c'est pas si difficile que ça mais impossible de faire quelque chose de correcte :/
 
Si vous avez une petite idée pour l'utilisation d'un bout de code ca serais super sympa ;)  
 
Merci d'avance,
 
Donqui  ;)

Reply

Marsh Posté le 16-09-2009 à 21:18:45   

Reply

Marsh Posté le 16-09-2009 à 22:17:29    

ta fais quoi comme code pour l'instant ?

Reply

Marsh Posté le 17-09-2009 à 18:49:29    

stealth35 a écrit :

ta fais quoi comme code pour l'instant ?


 

Code :
  1. <?php
  2. mysql_connect("host", "db", "mdp" );
  3. mysql_select_db("123" ); // Sélection de la base  
  4. $reponse = mysql_query("SELECT * FROM wsite" ); // Requête SQL
  5. // On fait une boucle pour lister tout ce que contient la table :  
  6. while ($donnees = mysql_fetch_array($reponse) )
  7. {
  8. ?>
  9. <form method="post" action="result.php">
  10.   <input name="choix" type="checkbox" value="choix" checked />
  11.   <a href="<?php echo $donnees['url']; ?>" title="<?php echo $donnees['site_name']; ?>" target="_blank"><img src="<?php echo $donnees['img']; ?>" alt="<?php echo $donnees['site_name']; ?>" name="" width="85" height="24" align="absbottom" /></a>
  12.   </form>
  13. <?php
  14. }
  15. mysql_close(); // Déconnexion de MySQL
  16. ?>
  17.       <center><form method="post" action="result.php">
  18.         <p>
  19.     </p>
  20.     <form id="form1" method="post" action="submit">
  21.       <p>
  22.         <label>
  23.               <input type="text" name="recherche" />
  24.               <br />
  25.               <br />
  26.           <input type="submit" name="button" id="button" value="Recherche" />
  27.             </label>
  28.           </p>
  29.     </form>
  30.     </center>


 
La recherche fonctionne (j'ai bien le résultat de ma recherche dans result.php) mais enfaite la recherche est effectué sur une liste de site (inscrit dans la DB) et j'aimerais que la recherche se fasse qu'avec les sites sélectionnés !  
Enfaite j'aimerais que la page result recoive l'info "Coché" ou "Pas coché" et si coché : Affichage de la recherche avec ce site, la recherche sur CE site ne s'affiche pas !
 
Pour infos : Les résultats de recherche s'affiche par onglet (création d'un onglet/site) et affichage d'une iframe contenant la page de recherche du site :

Code :
  1. <iframe src="http://blabla.php?recherche=<?php echo $_POST['recherche']; ?>" height="600" width="100%" name="myFrame" id="myFrame"></iframe>


 

Reply

Marsh Posté le 18-09-2009 à 01:57:40    

je vois c'est tres chiant pour ca les checkbox,  
avant d'envoyer ton forumaire, faut parser les valeurs avec javascript
 
tu regarde si c'est  "checked" ou pas   si  (ten mieux),  sinon  tu met la valeur du checkbox  a 0 et checked sur "true",  
 
ducouop ca va fair comme si on avai tout coché mais que les valeurs des checkbox etait differente
 
sinon au lieu de fair plein de formulaire, je te conseil de faire un seul, et validé tout ca avec du javascript

Reply

Marsh Posté le 18-09-2009 à 02:57:38    

Salut,
 
Deja ligne 8 a 16, inutile d'avoir 50 formulaires avec la meme action.
 

Code :
  1. <form method="post" action="result.php">
  2. while ($donnees = mysql_fetch_array($reponse) )
  3. {
  4. ?>
  5. <input name="choix" type="checkbox" value="choix" checked />
  6. <a href="<?php echo $donnees['url']; ?>" title="<?php echo $donnees['site_name']; ?>" target="_blank"><img src="<?php echo $donnees['img']; ?>" alt="<?php echo $donnees['site_name']; ?>" name="" width="85" height="24" align="absbottom" /></a>
  7. <?php
  8. }
  9. ?>
  10. </form>
  11. <?php


 
Ensuite, si tu veux réaliser des actions en fonction des checkbox coché, faut leur donner un nom different à chaque, sinon on ne pourra pas les différencier. (ou peut être veux-tu que la fonction s'execute au moment ou l'on coche la case?)
 

Code :
  1. <form method="post" action="result.php">
  2. while ($donnees = mysql_fetch_array($reponse) )
  3. {
  4. ?>
  5. <input name="choix[<?php echo $donnees['id']?>]" type="checkbox" value="choix" checked />
  6. <a href="<?php echo $donnees['url']; ?>" title="<?php echo $donnees['site_name']; ?>" target="_blank"><img src="<?php echo $donnees['img']; ?>" alt="<?php echo $donnees['site_name']; ?>" name="" width="85" height="24" align="absbottom" /></a>
  7. <?php
  8. }
  9. ?>
  10. </form>
  11. <?php


 
Après je te conseillerai plutot d'utiliser un framework js (jquery?), ca évitera de réinventer la roue. (Avec une requête en ajax au lieu d'une iframe aussi ;) , plus simple, plus récent, et plus beau)

Reply

Marsh Posté le 20-09-2009 à 16:54:20    

Merci pour ces réponses ;)
 
Je vais voir tout ça ! :)

Reply

Marsh Posté le 20-09-2009 à 18:53:23    

Autre question :)
 
J'aimerais que pour ma liste de site, en gardant ma boucle, je puisse par exemple faire remonter un site ne tete de liste :
 
Voici ma structure de table :

Code :
  1. CREATE TABLE `wsite` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `site_name` varchar(20) default NULL,
  4.   `url` varchar(100) default NULL,
  5.   `url_s` varchar(100) default NULL,
  6.   `email` varchar(50) default NULL,
  7.   `img` varchar(100) default NULL,
  8.   PRIMARY KEY  (`id`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


 
Pour exemple :
 
En temps normale :
 
ID=1=SiteA
ID=2=SiteB
ID=3=SiteC
ID=4=SiteD
 
Et j'aimerais pouvoir remonter un site tel que :
 
ID=1=SiteD
ID=2=SiteA
ID=3=SiteB
ID=4=SiteC
 
Et que donc pour l'affichage, le site ayant l'id 1 soit affiché en premier, le 2 en deuxième, etc ...
 
J'espère avoir été assez claire ^^"

Message cité 1 fois
Message édité par DonQuiShoot le 20-09-2009 à 18:55:38
Reply

Marsh Posté le 20-09-2009 à 18:54:43    

dsl double post


Message édité par DonQuiShoot le 20-09-2009 à 18:56:06
Reply

Marsh Posté le 20-09-2009 à 20:48:13    

Le mieu ca serai d'avoir un champ "ordre" par exemple, qui permettrai de classer ta liste de site comme tu le souhaites avec des numéros. Il suffit ensuite de faire un ORDER BY sur ton champ ordre. Sinon l'autre option est de modifier les id mais ce n'est pas du tout fait pour ça.

Reply

Marsh Posté le 20-09-2009 à 21:23:05    

tyesbo a écrit :

Le mieu ca serai d'avoir un champ "ordre" par exemple, qui permettrai de classer ta liste de site comme tu le souhaites avec des numéros. Il suffit ensuite de faire un ORDER BY sur ton champ ordre. Sinon l'autre option est de modifier les id mais ce n'est pas du tout fait pour ça.


 
Et comment faire ensuite pour que le 1er site devienne deuxième, le deuxième deviendrais troisième et ainsi de suite ?

Reply

Marsh Posté le 20-09-2009 à 21:23:05   

Reply

Marsh Posté le 21-09-2009 à 00:02:27    

Après c'est toi qui décide de l'ordre de l'affichage des sites. Tu peux mettre la valeur 0 à tout les sites dans la colonne "ordre", puis ceux que tu veux mettre en premier tu mets un numéro plus grand que 0. (10 20 30 40 etc..) Plus le nombre est grand, plus la priorité sera grande. Dans la requète SQL, il suffit de rajouter:
 

Code :
  1. $reponse = mysql_query("SELECT * FROM wsite ORDER BY ordre DESC" );

Reply

Marsh Posté le 21-09-2009 à 17:50:23    

Exacte ! Je comprend nikel :) Merci encore Tyesbo !

Reply

Marsh Posté le 21-09-2009 à 20:35:52    

Dernier des derniers petits soucis,  
 
Voici mon code :  
 

Code :
  1. <div id="TabbedPanels1" class="TabbedPanels">
  2.   <ul class="TabbedPanelsTabGroup">
  3. <?
  4. while ($donnees = mysql_fetch_array($reponse))
  5. {
  6. echo '<li class="TabbedPanelsTab" tabindex="0"><a href="'. $donnees['url'] .'" title="'. $donnees['site_name'] .'" target="_blank"><img src="'. $donnees['img'] .'" alt="'. $donnees['site_name'] .'" name="" width="85" height="24" align="absbottom" /></a></li>';
  7. ?>
  8. </ul>
  9.   <div class="TabbedPanelsContentGroup">
  10.   <?
  11. echo '<div class="TabbedPanelsContent"><center>'. $donnees['site_name'] .'</center></div>';
  12. }
  13. ?>
  14.   </div>
  15. </div>


 
Malheureusement, il ne me fait qu'un seul onglet avec un seul contenu :/  
 
Et quand je met le "}" après les deux derniers "</div>", il met fait un premier onglet avec un premier contenue concernant à un premier site et il revient à la ligne et me fait un deuxième onglet avec un deuxième contenu pour un deuxième site ! (Logique il refait deux fois le module d'onglets mais cela prouve qu'il reconnait bien les deux sites pour le moment inscrit dans la db et respecte l'ordre d'affichage ;))
 
(Pour le contenue j'ai mis "'. $donnees['site_name'] .'" pour les tests mais il changera, inutile d'y faire attention :) )
 
UNE IDÉE ?  :pt1cable:  
 

Reply

Marsh Posté le 22-09-2009 à 00:54:08    

oui 2 problèmes.
 
1. L'ouverture de la liste "<ul>" est en dehors de la boucle, et la fermeture est dans la boucle (ligne 10). Dans ton exemple je suppose que tu veux fermer ta liste à la fin une fois la bouclie finie.
 
2. Tu ouvres une "div" dans la boucle (ligne 11), et tu la fermes en dehors de la boucle. (ligne 16)(un peu le même problème que dans le 1.)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed