banneer2

Réducteur d'URL tinad:

Collez l'adresse du site:

Rechercher sur le blog du grouik:

Je passerai l'explication du comment qu'on fait, tout simplement parceque je ne ferai pas mieux que ce tutoriel.

ça fait changer l'approche de la programmation PHP puis celle de débogage. A titre perso, je suis sur deux projets de sites web, actuellement. Dont un est la bascule de tinai (VB) (sorte d'ERP, GED) en vrai intranet, extranetisable.

Comment je m'y prenais avant et comment je fais avec les templates?

Généralement, on découpe son site en plusieurs éléments qu'on appelle avec des include (ça, ça ne change pas).Lorsqu'on code on a une idée de ce qu'on va y mettre, et on le fait apparaître sur la page au fur et à mesure du code en PHP pur par des echo'<code html>';. Et comme l'ordre des echo définit l'ordre d'apparition du code html. Le script php se lit dans le même sens que la page web. (vous m'avez compris.) ça peut être gênant d'ailleurs lorsque l'on doit remettre à plusieurs endroits des portions de code identiques à plusieurs endroits. dans la page: dans le cas du résultat d'une requête mysql remplissant des listes déroulantes de choix par exemple. En ce cas là soit on est prévoyant, on met tout dans une variable pour le réutiliser, soit on a gardé la variable $result soit on refait la requette mysql. Pas super optimisé dans tous les cas (et au fond, les templates, ce n'est pas beaucoup mieux, mais ça ne se voit pas).

Exemple de code: un annuaire tout bête:

Juste un petit moteur de recherche dans une base de données en fait.

Sans template:

Cet exemple attaque la base de données qui est mise à jour par un script qui attaque notre autocommutateur. annuaire1.jpg

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr" xml:lang="fr">
<head>
	<meta http-equiv="Content-type" content="text/html;charset=ISO_8859-1" />
	<meta name="keywords" content="" />
	<meta name="description" content="Annuaire" />
	<meta name="author" content="Gnieark http://blog-du-grouik.tinad.fr" />
	<title> Annuaires t&eacute;l&eacute;phone et mail</title>
</head>
<body>
	<div id="all">
 
		<div id="telephone" style="position: absolute; width 50%; left: 0px; top: 0px;"> 
		<?php
			if ($_POST[nomtel]<>''){
 
 
 				if (!mysql_connect('localhost', 'Usermysql', 'Password)) {
					echo 'Impossible de se connecter à MySQL';
					exit;
				}
				mysql_query("USE database");
				$sql = "SELECT 
						Noannuaire,
						Nomannuaire, 
						Prenomannuaire 
					FROM 
						annuairePABX 
					WHERE 
						Nomannuaire LIKE '".$_POST['nomtel']."%' 
						OR Prenomannuaire LIKE '".$_POST['nomtel']."%'  
					ORDER BY 
						Noannuaire ASC";
 
				$result = mysql_query($sql);
 
				if (!$result) {
					echo "Erreur DB, impossible de lister les tables\n";
					echo 'Erreur MySQL : ' . mysql_error();
					exit;
				}
 
				while ($row = mysql_fetch_row($result)) {
					echo "{$row[0]} {$row[1]} {$row[2]} |\n";
				}
			}
		?>
 
			<h3>Num&eacute;ros de t&eacute;l&eacute;phone:</h3>
			<form method="post" action="annuaireinterne.php">
 				<p>D&eacute;but du nom:<input type="text" name="nomtel"/> <input type="submit" value="Valider" /></p>
 			</form>
 
		</div><!-- Fin div telephone -->
 
 
 
 
		<div id="mails" style="position: absolute; width 50%; left: 50%; top: 0px;"> 
		<?php
			if ($_POST[nommail]<>''){
				if (!mysql_connect('localhost', 'rpasserieu', 'a239373')) {
					echo 'Impossible de se connecter à MySQL';
					exit;
				}
				mysql_query("USE postfix");
				$sql = "SELECT 
						username, 
						name 
					FROM 
						mailbox 
					WHERE 
						name LIKE '%".$_POST[nommail]."%'
					ORDER BY
						name ASC";
 
				$result = mysql_query($sql);
 
				if (!$result) {
					echo "Erreur DB, impossible de lister les tables\n";
					echo 'Erreur MySQL : ' . mysql_error();
					exit;
				}
 
				while ($row = mysql_fetch_row($result)) {
					echo "<a href=\"mailto:".$row[0]."\">".$row[0]."</a> :  ".$row[1]."<br />\n";
				}
 
			}	
		?>
		<h3>E-mail:</h3>	
		<form method="post" action="annuaireinterne.php">
 				<p>Partie du nom:<input type="text" name="nommail"/> <input type="submit" value="Valider" /></p>
 			</form>
		</div><!-- Fin div mails -->
 
</div><!-- Fin div all -->
</body>
</html>

Avec template:

Là cet exemple se base sur une base de donées users plus classique. Il y a donc deux fichiers: le template et le script php. annuaire2.jpg Le template:

<div id="main">
 
		<div id="telephone" style="position: absolute; width 50%; left: 0px; top: 0px; background: #F7F7F7;"> 
 
			<h3>Num&eacute;ros de t&eacute;l&eacute;phone:</h3>
			<form method="post" action="{acturltel}">
 				<p>D&eacute;but du nom:<input type="text" name="nomtel" value="{nomtel}"/> <input type="submit" value="Valider" /></p>
 
 			</form>
			<table>
			<!-- BEGIN tel -->
				<tr><td>{tel.nom}</td><td>{tel.numero}</td></tr>
			<!-- END tel -->
			</table>		
		</div><!-- Fin div telephone -->
 
		<div id="mails" style="position: absolute; width 50%; left: 50%; top: 0px; background: #F7F7F7;"> 
			<h3>E-mail:</h3>	
			<form method="post" action="{acturlmail}">
				<p>Partie du nom:<input type="text" name="nommail" value="{nommail}"/> <input type="submit" value="Valider" /></p>
 			</form>
			<table>
			<!-- BEGIN mail -->
				<tr><td>{mail.nom}</td><td><a href="mailto:{mail.mail}">{mail.mail}</a></td></tr>
			<!-- END mail -->
			</table>		
		</div><!-- fin div  mails -->
</div>

Le script php:

<?php
@session_start();
if($_SESSION['is_registered']!="1")
{
	echo "You need be logged in";
	die;
}
require_once('./config.php');
//sql
if (!mysql_connect($config['mysql_host'], $config['mysql_user'], $config['mysql_password'])) {
	echo 'Impossible de se connecter à MySQL';
	exit;
}
mysql_query("USE ".$config['mysql_database']);
$template = new Template('./annuaire/template/');
$template->set_filenames(array(
    'annuaire' => 'annuaire.tpl'
));
 
$template->assign_vars( array(
	'acturltel'	=> './index.php?menu=annuaire',
	'acturlmail'	=> './index.php?menu=annuaire'
));
 
//afficher les mails
if (isset($_POST['nommail']))
{
	$cdt=" AND username LIKE '%".$_POST['nommail']."%'";
}
else
{
	$cdt ="";
}
$result=mysql_query("SELECT username, mail FROM users WHERE mail IS NOT NULL AND mail <> ''".$cdt." ORDER BY username");
while($row=mysql_fetch_row($result))
{
	$template->assign_block_vars( 'mail',array(
		'nom'	=> $row[0],
		'mail'	=> $row[1]
	));
}
//les tels
if (isset($_POST['nomtel']))
{
	$cdt=" AND username LIKE '%".$_POST['nomtel']."%'";
}
else
{
	$cdt ="";
}
$result=mysql_query("SELECT username, telephone FROM users WHERE telephone IS NOT NULL AND telephone <> ''".$cdt." ORDER BY username");
while($row=mysql_fetch_row($result))
{
	$template->assign_block_vars( 'tel',array(
		'nom'	=> $row[0],
		'numero'	=> $row[1],
	));
}
 
$template->assign_vars(array(
		'nomtel'	=> $_POST['nomtel'],
		'nommail'	=> $_POST['nommail']
));
 
$template->pparse('annuaire');
?>

Conclusion,

Dans les deux cas, j'ai fait un truc moche. Mais je vais moins galérer à améliorer l'aspect de celui avec template. Je sens que je vais avoir du mal à m'en passer dans les développements à venir.

Ajouter un commentaire

Nom ou pseudo:
Adresse email:
Site web (facultatif):
Commentaire:

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://blog-du-grouik.tinad.fr/trackback/523

Fil des commentaires de ce billet

Dans la même catégorie:
dev web


Creer un tchat (chat) en AJAX php

bulle_tchat-406.jpg
Un tchat, mélangeant les techniques suivantes: javascript, AJAX, PHP, mysql et JSON, en moins de 150 lignes. Il y a quelques mois Hempstar proposait sur ce blog sa version du chat. Comme j'ai énormément progressé dans ces langages de programmation, je me demandais si je saurai le faire, en quelques

Lire la suite...



Php, générer un e-mail avec plusieurs pièces jointes.

E-mail
Voici une fonction pour envoyer un e-mail en PHP avec des pièces jointes quelque soit leur extension (ou presque). La machine qui m'a servi à faire les tests est un champs MX du domaine, et l'adresse de l'expéditeur appartient au domaine (ça aide.) Le résultat des essais: Vers une boite e-mail free

Lire la suite...


setAttribute - Patch pour internet explorer - Javascript

Internet explorer interprète mal ou pas du tout la function setAttribute. Ci dessous mon prototype à insérer en début de script pour patcher ce navigateur. Il manque surement des cas particuliers que je n'ai pas pris en compte, il suffira de rajouter des "case" dans ce prototype.

Lire la suite...


Le sélecteur de dates en javascript Version 0.3.1

calendriers.jpg
Edit du 17/11/2011, passage en version 0.3.1 pour patcher internet explorer. test ok sur IE8 et IE 9, les autres versions n'ont pas été testées. L'objet de ce codage est de permettre l'intégration simple (#feignasse) sur des sites web d'un sélecteur de date plus sexy que 3 listes déroulantes. Je me

Lire la suite...


Un filtre antispam supplémentaire pour dotclear

kill the spam
J'ai remarqué que les spammeurs qui sévissent sur mon blog, ont souvent ces deux points communs: Le nom de l'auteur contient la description du site dont il fait la promotion, souvent plus de trois mots. Il a renseigné un lien vers un site internet, évidemment. Vu que dans les commentaires légitimes,

Lire la suite...


Propulsé par Dotclear