case à cocher

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : case à cocher

par rspir » 17 mai 2006, 15:50

Je confirme que cela ne sert pas à grand chose ... à part à m'apprendre à me servir des constante.

Le code corrigé (il trainait encore des coquilles entre simple et double quote)
donne ceci :
<?php 
function Tableau ($connexion)
{
	$requete = "SELECT id, dcrea, texte, DATE_FORMAT(dcrea, '%d/%m/%y %H:%i') AS 'dcreation',DATE_FORMAT(MAJ, '%d/%m/%y %H:%i') AS 'dmaj' "
				. " FROM filinfo"
				. " LEFT JOIN refinfo ON filinfo.id = refinfo.idinf"
				. " ORDER BY dcrea DESC";
				
	$resultat = ExecRequete ($requete, $connexion);
	$num=mysql_num_rows ($resultat);
	
	if ($num < 1)
	{
		echo "Aucun <span class='i'>i-</span>communiqué publié<br>\n";
	}
	else
	{
		
		echo "<h1>" .$num. ($num ==1 ? ' <span class="i">i-</span>communiqué publié' : ' <span class="i">i-</span>communiqués publiés') ."</h1>"
		. "<center><table border=0 cellspacing=2 cellpadding=2>"
		. "<caption align=bottom>Gestion des <span class='i'>i-</span>communiqués</caption>"
		. "<tr class='titre'><th>Info<th>Création<th>Modif.<th>ref<th colspan='3'>Action</tr>\n";
		
		$i=0;
		while ($info = ObjetSuivant($resultat))
		{
			$i++;
			$idURL=urlEncode ($info->id);
		?>		
			<tr class="A<?php echo ($i%2);?>" onMouseOver="this.className='over'" onMouseOut="this.className='A<?php echo ($i%2);?>'">
			
				<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=archive&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=delete&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>
		<?
		}
	
		echo "</table></center>\n";
	}
}

?>
Reste à supprimer le $toto et à récupérer les "vraies" variables.

par Ryle » 17 mai 2006, 15:40

A quoi correspond ton
<?php echo MAJ?>
? Ce n'est pas une variable puisqu'il n'y a pas de $ devant...
C'est pitetre une constante ? s'il a un define("MAJ", 8732) parce que dans son appli les mises à jour sont qualifiées du code 8732, faut qu'il fasse comme il à dit :)

Sinon effectivement, ca sert pas à grand chose :)

par rspir » 17 mai 2006, 15:40

En fait c'est peut être inutile, mais je fais un incude d'un fichier contenant ceci :
define ("DEFAUT","defaut");

define ("ARC","archive");
define ("INSERT","insertion");
define ("MAJ","maj");
define ("DEL","delete");

define ("LISTCOM","list_com");
define ("LISTARC","list_arc");
Donc je récupère bien ma variable.
Comme dit plus haut, j'ai commencé mon site avec un bouquin, et je me suis inspiré de la méthode décrite. Progressivement j'adapte le code (et j'apprends le PHP) et je nettoie et j'optimise mes fichiers et fonctions.

je pars de loin ... ou plutot de 0.

Ma fonction actuelle donne ceci :
function Tableau ($connexion)
{
	$requete = "SELECT id, dcrea, texte, DATE_FORMAT(dcrea, '%d/%m/%y %H:%i') AS 'dcreation',DATE_FORMAT(MAJ, '%d/%m/%y %H:%i') AS 'dmaj' "
				. " FROM filinfo"
				. " LEFT JOIN refinfo ON filinfo.id = refinfo.idinf"
				. " ORDER BY dcrea DESC";
				
	$resultat = ExecRequete ($requete, $connexion);
	$num=mysql_num_rows ($resultat);
	
	if ($num < 1)
	{
		echo "Aucun <span class='i'>i-</span>communiqué publié<br>\n";
	}
	else
	{
		
		echo "<h1>" .$num. ($num ==1 ? ' <span class="i">i-</span>communiqué publié' : ' <span class="i">i-</span>communiqués publiés') ."</h1>";
//		. "<center><table border=0 cellspacing=2 cellpadding=2>"
//		. "<caption align=bottom>Gestion des <span class='i'>i-</span>communiqués</caption>"
//		. "<tr class='titre'><th>Info<th>Création<th>Modif.<th>ref<th colspan='3'>Action</tr>\n";
		
		$i=0;
		while ($info = ObjetSuivant($resultat))
		{
			$i++;
			$idURL=urlEncode ($info->id);
		?>		
			<tr class="A<?php echo ($i%2);?>" onMouseOver="this.className='over'" onMouseOut="this.className='A<?php echo ($i%2);?>'">

    <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=<?php echo 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=<?php echo 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=<?php echo 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>

   
   

		<?
		}
	
		echo "</table></center>\n";
	}
}
J'ai encore du boulot ...

par charabia » 17 mai 2006, 15:32

A quoi correspond ton
<?php echo MAJ?>
? Ce n'est pas une variable puisqu'il n'y a pas de $ devant...

En fait ton code
<td><a href="_admin.php?mode=<?php echo 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>
reviendrait exactement à ce que j'ai mis à savoir :
<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>

par rspir » 17 mai 2006, 15:28

Bon j'ai revu mon code pour dissocier l'html.
J'ai juste une question pour charabia

avant, je faisais appelle à une variable qui correspondait au mode
	  		   	. "<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"
Dans ton code, tu as transformé cette ligne en

Code : Tout sélectionner

<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>
Faut il que je remplace MAJ par <?php . MAJ ?> ? En fait j'ai essayé et plus rien ne fonctionne

EDIT : désolé ... j'ai trouvé :roll: :

Code : Tout sélectionner

<td><a href="_admin.php?mode=<?php echo 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>

par charabia » 17 mai 2006, 15:14

bpn ben j'ai plus qu'a aller me coucher ... :oops:
j'ai honte, je devrait plus poster cet aprem à dans trois semaine (je vais faire une cure de repos)
Et avec 50 cures de vitamines A, B, C, D et F s'il te plaît ! :langue:

Tu nous reviendrais plus en forme hihi

par jojolapine » 17 mai 2006, 15:11

bpn ben j'ai plus qu'a aller me coucher ... :oops:
j'ai honte, je devrait plus poster cet aprem à dans trois semaine (je vais faire une cure de repos)

par rspir » 17 mai 2006, 15:09

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

par Ryle » 17 mai 2006, 15:07

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..... ;)

par jojolapine » 17 mai 2006, 15:05

à 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:

par rspir » 17 mai 2006, 14:55

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 ?

par charabia » 17 mai 2006, 14:48

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

par jojolapine » 17 mai 2006, 14:47

C'est checked jojolapine :langue:
rooo décidément, deux bourdes en une journée :oops: shame on me :!:

par Ryle » 17 mai 2006, 14:44

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 ;)

par charabia » 17 mai 2006, 14:37

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>