Page 1 sur 2

case à cocher

Posté : 17 mai 2006, 13:20
par rspir
Bonjour

comment faire dans un formulaire pour précocher des cases à cocher en fonction de données de ma bdd ?

Merci d'avance

Posté : 17 mai 2006, 13:25
par jojolapine
tu met l'attribut selected="selected"
par exemple
si tu as une variable $ouinon initialiser avec ta bdd à oui ou à non, tu peux faire:
<p><input type="radio" <?php if($ouinon=="oui"){ echo "selected=\"selected\""} ?> />Oui</p>
<p><input type="radio" <?php if($ouinon=="non"){ echo "selected=\"selected\""} ?> />Non</p>

Posté : 17 mai 2006, 13:36
par rspir
J'ai testé ce code :

Code : Tout sélectionner

<?php $toto="1"; echo $toto; ?> <FORM ACTION='test.php' METHOD='POST'> <h1>Test</h1> <hr> 1 <input type="checkbox" name="ref[]" value="rae" <?php if($toto=="1"){"checked=\"checked\""}; ?> /> 2 <input type="checkbox" name="ref[]" value="ras" checked="checked"> 3 <input type="checkbox" name="ref[]" value="ram"> </form>
Mais cela ne passe pas

Posté : 17 mai 2006, 13:41
par charabia
tu met l'attribut selected="selected"
par exemple
si tu as une variable $ouinon initialiser avec ta bdd à oui ou à non, tu peux faire:
<p><input type="radio" <?php if($ouinon=="oui"){ echo "selected="selected""} ?> />Oui</p>
<p><input type="radio" <?php if($ouinon=="non"){ echo "selected="selected""} ?> />Non</p>
C'est checked jojolapine :langue:

rspir, tu oublies un echo pour afficher ce que tu veux :
<input type="checkbox" name="ref[]" value="rae"<?php if($toto=="1"){ echo " checked="checked""}; ?> />

Posté : 17 mai 2006, 13:48
par rspir
Oui effectivement ...
Mais en plus il y'avait un souci avec le positionnement du ;
En tout cas merci pour tout cela m'a bien eclairé pour la technique à suivre

Mon test donne cela :
<?php

$toto="2";
echo $toto;
?>


<FORM ACTION='test.php' METHOD='POST'>

	<h1>Test</h1>
	<hr>
		1 <input type="checkbox" name="ref[]" value="rae" <?php if($toto=="1"){echo "checked='checked'"; } ?> />
		2 <input type="checkbox" name="ref[]" value="ras" <?php if($toto=="2"){echo "checked='checked'"; } ?> />
		3 <input type="checkbox" name="ref[]" value="ram" <?php if($toto=="3"){echo "checked='checked'"; } ?> />
</form>
Et je vais pouvoir m'en inspirer pour mon site

Merci

Posté : 17 mai 2006, 13:51
par charabia
Afin d'éviter l'espace si ça ne marque pas checked, fait plutôt ceci :
<input type="checkbox" name="ref[]" value="rae"<?php if($toto=="1"){echo " checked='checked'"; } ?>
c'est à dire ne pas mettre d'espace après le value, et en rajouter un dans le echo.

Posté : 17 mai 2006, 14:30
par rspir
J'ai finalement un souci : jen'arrive pas à l'intégrer dans mon code :
			$idURL=urlEncode ($info->id);		
			echo "<tr class=A" .($i%2)." onMouseOver=\"this.className='over'\" onMouseOut=\"this.className='A" .($i%2). "'\">"
//				. "<td><center>$info->id</center>"
				. "<td width=450>$info->texte"
			   	. "<td>$info->dcreation"
			   	. "<td>$info->dmaj"
			   	. "<td><input type='checkbox' name='ref[]' value='rae'". if($toto=="1") {echo " checked='checked'" ;}. "/>"

	  		   	. "<td><a href='_admin.php?mode=". MAJ
	  		   	. "&id=$idURL'><img hspace='2' width='16' height='16'src='./images/b_edit.png' alt='Modifier' title='Modifier' border='0'></a>\n"
			   	. "<td><a href='_admin.php?mode=". ARC 
	  		   	. "&id=$idURL'><img hspace='2' width='16' height='16'src='./images/b_tblexport.png' alt='Archiver' title='Archiver' border='0'></a>\n"
			   	. "<td><a href='_admin.php?mode=". DEL 
	  		   	. "&id=$idURL'><img hspace='2' width='16' height='16'src='./images/b_drop.png' alt='Supprimer' title='Supprimer' border='0'></a>\n";
		}

Posté : 17 mai 2006, 14:37
par charabia
Ton code est trop bizarre...pas très propre. Il faut que tu sortes tout ce qui est HTML pure hors du php.

Tu as pleins de TD qui ne se ferment pas en plus.

Comme ça c'est plus propre non ?
<?php
$idURL=urlEncode ($info->id);
?>
<tr class="A<?php echo ($i%2);?>" onMouseOver="this.className='over'" onMouseOut="this.className='A<?php echo ($i%2);?>'">
	<td align="center"><?php echo $info->id;?></td>
	<td width=450><?php echo $info->texte;?></td>
	<td><?php echo $info->dcreation;?></td>
	<td><?php echo $info->dmaj;?></td>
	<td><input type="checkbox" name="ref[]" value="rae"<?php if($toto=="1") {echo " checked='checked'" ;}?>"/>
	<td><a href="_admin.php?mode=MAJ&id=<?php echo $idURL;?>"><img hspace="2" width="16" height="16" src="./images/b_edit.png" alt="Modifier" title='Modifier" border="0"></a></td>
	<td><a href='_admin.php?mode=ARC&id=<?php echo $idURL;?>"><img hspace="2" width="16" height="16" src="./images/b_tblexport.png" alt="Archiver" title="Archiver" border='0'></a></td>
	<td><a href='_admin.php?mode=DEL&id=<?php echo $idURL;?>"><img hspace="2" width="16" height="16" src="./images/b_drop.png" alt="Supprimer" title="Supprimer" border='0'></a></td>
</tr>

Posté : 17 mai 2006, 14:44
par Ryle
Ah ben c'est normal, tu l'as pas intégré dans ton code, tu l'as copié/collé dans ton code, alors forcément, ça doit pas marcher bien fort... 'gadez moi ça, un id et des acolades en plein milieu d'un echo, si c'est pas malheureux de voir ça de nos jours... y a vraiment plus de saisons ;)

Pour corriger ça tu peux soit utiliser la forme d'un opérateur ternaire
echo "..." . (($toto=="1") ? " checked='checked'" : "") . "...";
soit fermer ton echo, faire ton test et rajouter la fin ensuite
echo "..."
if($toto=="1")
  echo " checked='checked'";
echo "..."
soit, au mieux, écrire ton code en html et intégrer les morceaux de php là où tu en as besoin :
<tr class="A<? echo ($i%2);?>" onMouseOver="this.className='over'" onMouseOut="this.className="A<? echo ($i%2);?>">
  <td width="450"><? echo $info->texte; ?></td>
  <td><? echo $info->dcreation; ?></td>
  <td><? echo $info->dmaj; ?></td>
  ...


C'est autrement plus lisible et ca permet de voir que tu as zappé les tags de fermetures des <td> et <tr>...

Edit : euh.. ouais.. ben en fait tout pareil que Charabia.. mais en trop tard ;)

Posté : 17 mai 2006, 14:47
par jojolapine
C'est checked jojolapine :langue:
rooo décidément, deux bourdes en une journée :oops: shame on me :!:

Posté : 17 mai 2006, 14:48
par charabia
copiteur le tit ryle...:langue:
C'est checked jojolapine :langue:
rooo décidément, deux bourdes en une journée :oops: shame on me :!:
Tu es pardonnée jojolapine :) Les neurones ont dû chauffer de trop hihi

Posté : 17 mai 2006, 14:55
par rspir
d'abord merci à tous pour vos conseils et corrections.
j'ai bien fait de me mettre dans rubrique "débuter ..." :oops:

Bon, juste une question notamment sur votre recommandation qui consiste à distinguer le php de l'html. Je l'ai fait sur d'autres fichiers de mon site mais dans le cas présent c'est une fonction. Est ce que je peux insérer du html dans une fonction sans problème ?

EDIT : c'est peut être tout mon fichier (fonction) que je dois revoir pour en faciliter la lecture et la maintenance.
Et peut être tout mon code ...

En fait j'ai une page principale qui fait un peut "tout" ou en tout cas qui fait des appels de fonctions: je teste si je suis en get ou en post ou ... en rien :
En rien : j'affiche un tableau avec toutes mes news et la je permets par des liens en GET de modifer, supprimer ou archivers les news
En GET : j'appelle une fonction qui teste le GET (ARC, DEL OU MODIF) et qui réaffiche un formulaire qui permet de valider l'action (la je passe en POST pour récupérer mes données)
En POST : appelle d'une fonction qui réalise l'action validée (insert, update, delete). Donc je teste encore le mode.

J'ai trouvé cela dans un exemple dans un bouquin. Au début cela me parraissait assez judicieux parce que bien structuré et me permettant de réappeler mes fonctions. Mais maintenant cela devient compliqué parce que je rajoute pas mal de fonctions

Est ce que je peux insérer du html dans ma fonction ? Cela permettrait de rendre le code plus lisible non ?

Posté : 17 mai 2006, 15:05
par jojolapine
à non c'est pô possible parce que le code html est insérer hors balises <?php et ?> alors qu'une définition de fonction débute et termine entre les balises <?php ?> sans intéruption possible, en m^me temps je suis pas sûr ça pourrait bien être la troisième bourde de la journée sur le phorum
:lol:

Posté : 17 mai 2006, 15:07
par Ryle
vi tu peux :)

C'est comme si tu faisais du echo, il n'apparaitra qu'à l'endroit où tu appelles la fonction :)
<?
function helloWorld() {
  ?>
    Hello World !
  <?
}
?>
Edit : jojolapine.... beeennn comment dire..... ;)

Posté : 17 mai 2006, 15:09
par rspir
Dans tous mes fichiers, je viens de retrouver une fonction avec du html.
Faut il que j'abandonne ce type de pratique ?
<?php
function formbando ($mode,$txt,$pub)
{
?>

<h1>titre</h1><hr>


<form action="_admin.php" method="post">
<input type=hidden name="action" value="majbando">
<input type=hidden name="mode" value="<?php echo $mode; ?>">

<p>Accueil : <input type="text" name="band_acc" size="75" value="<?php echo htmlspecialchars($txt[0] , ENT_QUOTES); ?>" /> Modifié le <?= $pub[0]?>
<p>1: <input type="text" name="band_rae" size="75" value="<?php echo htmlspecialchars($txt[1] , ENT_QUOTES); ?>" /> Modifié le <?= $pub[1]?>  
<p>2 : <input type="text" name="band_ras" size="75" value="<?php echo htmlspecialchars($txt[2] , ENT_QUOTES); ?>" /> Modifié le <?= $pub[2]?>  
<p>3 : <input type="text" name="band_ram" size="75" value="<?php echo htmlspecialchars($txt[3] , ENT_QUOTES); ?>" /> Modifié le <?= $pub[3]?> 

<p class='center'><input type='submit' value='Publier'>
</form>

<?php
}
?>
EDIT : ok Ryle, je n'avais pas vu ta réponse. Merci