Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
Conseils et Astuces
Dans cette rubrique, je vous propose quelques Trucs et Astuces pour débutants et directement liés à PHP & Mysql
Les portions de code dans cette rubrique sont bien évidemment adaptables à vos propres applications et scripts
Dans le même ordre d'idée, nos méthodes ne sont pas les seules et vous pourrez trouver d'autres manières de parvenir à des résultats totalement similaires.
Vous êtes libre de choisir vos propres méthodes, sans tenir compte de notre manière de procéder. Nous pensons simplement que nos portions de code sont optimisées aux actions qu'elles traitent.
1) Vérifier si une valeur est déjà présente dans une table.
Simple, facile, rapide avec COUNT(*)<?php
$req="select count(*) from la_table where le_champ='".$la_valeur_a_vérifier."'";
$res=mysql_query($req);
if(mysql_result($res,0)==0)
{
// la valeur n'existe pas -> action appropriée
}
else
{
// valeur existe -> action appropriée
}
?>
Il y a néanmoins une méthode plus simple : utiliser la contrainte UNIQUE sur le champ pseudo de la table ce qui empêchera tout enregistrement d'une pseudo identique.
2) Usage de !empty() vs isset()
Dans les codes des débutants on trouve trop souvent ce genre de syntaxe :Exemple 1
<?php
if (isset($_POST['Commentaire']) AND isset($_POST['Auteur']))
{
if (!empty($_POST['Commentaire']) AND !empty($_POST['Auteur']))
{
...........
?>
Exemple 2
<?php
if(isset($_POST["typerech"]) and isset($_POST["keyword"]))
{
$typerech=$_POST["typerech"];
$keyword=$_POST["keyword"];
if(empty($keyword))
{
...........
?>
Bref isset et !empty utilisé l'un après l'autre sur les mêmes variables.
Double emploi, donc totalement inutile.
En prenant comme source le deuxième exemple ci-dessus, il suffit simplement de faire ceci :
<?php
if(!empty($_POST['typerech']) && !empty($_POST['keyword']))
{
// le script
}
else
{
// faut remplir les champs
}
?>
A RETENIR
isset ne vérifie que si une variable est déclarée alors que !empty vérifie que :
* le champ n'est pas vide
* la valeur n'est pas égale à zéro
* et donc, forcément, que la variable existe
3) Un copyright toujours à jour sur vos sites
Dans votre système de pseudo-frames, dans le fichier de bas de page nommé foot.php par exemple, il vous suffit d'écrire cette simple ligne :<?php
$cop=2006;
echo '© ',$cop,' ',($cop<date('Y')) ? '- '.date('Y') : '';
?>
Ou directement en dur, sans la variable $cop, comme ça :
<?php
echo '© 2006 ',(2006<date('Y')) ? '- '.date('Y') : '';
?>
4) Sortez votre requête du mysql_query -> "Débuguer" facilement...
Dans vos phases de développement, je vous conseille vivement de sortir vos requêtes des query. Je m'explique :Très souvent, pour ne pas dire tout le temps, je vois vos codes libellés comme ceci :
<?php
$result=mysql_query("INSERT INTO latable VALUES ('', '".$nom."', '".$prenom."', '".$age."');
?>
Oui et quoi... me direz-vous, c'est pas bon ?
Si, c'est bon, mais si la requête plante ou n'enregistre rien, vous ne saurez pas forcément pourquoi et vous chercherez parfois un moment avant de trouver.
Un bug, rien de plus énervant à trouver parfois !
Or vous le savez tous et celui qui l'ignore va l'apprendre, le meilleur débugueur de script c'est ECHO
Hé oui, un simple echo vous permet d'afficher vos variables et requêtes afin d'en vérifier le contenu.
Le problème avec la requête précédente c'est que si vous faites un echo $result; cela va vous afficher une ressource et non pas le contenu de la requête. Pour l'obtenir il faut modifier votre ligne comme ceci :
<?php
$requete="INSERT INTO latable VALUES ('', '".$nom."', '".$prenom."', '".$age."',... )";
$result=mysql_query($requete);
echo $requete;
?>
Et voilà, on a séparé la requête du mysql_query() ce qui permet en cas de bug de vérifier, via un echo $requete; que le contenu de la requête est correct et correspond bien à ce qui est attendu.
5) Un bête truc pour éviter les robots spammeurs
Simple et efficace !Il vous suffit de créer un simple champ type="text" dans lequel une réponse à une question simple doit être entrée.
On vérifie que le champ contienne la bonne réponse et si oui, on valide le formulaire. Dans le cas contraire on fait autre chose.
<?php
if(!empty($_POST))
{
if(!empty($_POST['verif']) && $_POST['verif']=='12')
{
echo 'ok, on traite le formulaire';
}
else
{
echo '<a href="javascript:history.go(-1);">Répondez à la question svp</a>';
}
}
else
{
echo '<form method="post" action="#">
<table class="bord2">
<tr><td colspan="2" style="text-align:center;font-weight:bold;">Mon formulaire à vérifier</td></tr>
<tr><td>Nom :</td><td><input type="text" name="nom" /></td></tr>
<tr><td>Prénom :</td><td><input type="text" name="prenom" /></td></tr>
<tr><td colspan="2">
Question : combien font 3 multiplié par 4 ?
<input type="" name="verif" />
<br />
<input type="submit" value="Envoyer les données" /></td></tr>
</table>
</form>';
}
?>
