Designed by Derf !
82 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

Petit Lexique en PHP

Un exemple complet de page dynamique





Didier
Redondance de questions toujours identiques dans les forums... ce petit exemple répondra je l'espère définitivement à la plupart d'entre elles (on peut toujours rêver :) A noter, la gestion des variables associées aux méthodes GET et POST, l'identification par variable de session, la connexion conditionnelle (en local ou sur site), les principales requêtes INSERT, UPDATE, DELETE, OPTIMIZE, SELECT, DISTINCT, LIKE, ORDER, RAND, LIMIT, la vérification de validité d'un formulaire en JavaScript, l'affichage dans un textarea, la transmission de paramètres entre JavaScript et PHP, etc... A vous de piocher un peu maintenant :)

Si vous ne trouvez pas le mot de passe de la Démo...
laissez tomber, ce script n'est pas pour vous :)


lexique.php 
<? // Exemple de Lexique

// SI REGISTER_GLOBALS EST À OFF
// sinon dans .htaccess >> php_flag register_globals on

$lettre = $_GET["lettre"]; // ou $HTTP_GET_VARS["lettre"]
   $url = "lexique.php?lettre=".$lettre;
$del = $_GET["del"]; // ou $HTTP_GET_VARS["del"]
$edit = $_GET["edit"]; // ou $HTTP_GET_VARS["edit"]
$act = $_GET["act"]; // ou $HTTP_GET_VARS["act"]
$title = trim($_POST["title"]); // ou $HTTP_POST_VARS["title"]
$content = trim($_POST["content"]); // ou $HTTP_POST_VARS["content"]

// IDENTIFICATION par session pour PHP4 sinon utiliser un cookie

if($PHPSESSID) session_start($PHPSESSID);
else session_start();
session_register("admin");
if($_POST["mdp"]=="toto") {
   $admin = "ok"; Header("Location: $url");
} elseif($_GET["mdp"]) {
   $admin = ""; Header("Location: $url");
}
$isAdmin = ($_SESSION["admin"]=="ok");

// CONNEXION À LA BD

// On est en local ou sur site ?
$local=($SERVER_NAME=="localhost");

$host = ($local) ? "localhost" : ""; 
$user = ($local) ? "root" : "login"; 
$pass = ($local) ? "" : "passe"; 
$bdd = ($local) ? "tests" : "bdname"; 
mysql_connect($host,$user,$pass); 
mysql_select_db($bdd);

$table = "lexique";

// EDITION DE LA TABLE

if($isAdmin) {
   // Destruction
   if(($del!="")||($act=="vide")) {
      $SQL = "DELETE FROM $table";
      if($del) $SQL.=" WHERE ID='".$del."'";
      mysql_query($SQL); mysql_query("OPTIMIZE TABLE $table");
      mysql_close();
      Header("Location: $url");

   } elseif(($title!="")&&($content!="")) {
      // Modification
      if($edit)
         $SQL = "UPDATE $table SET "
            . "title='".$title."'"
            . ",content='".$content."'"
            . " WHERE ID='".$edit."'";
      // Ajout
      else
         $SQL = "INSERT INTO $table(title,content) VALUES("
            . "'".$title."'"
            . ",'".$content."'"
            . ")";
      mysql_query($SQL);
      mysql_close();
      Header("Location: lexique.php?lettre=".strtoupper(chr(ord($title))));
   }
}

// AFFICHAGE

?>
<HTML><HEAD>
   <TITLE>Exemple de Lexique</TITLE>
   <STYLE type="text/css"><!--
      body,td,th { font:normal 8pt Verdana; color:#000088 }
      .titre { font:normal 18pt Verdana }
      .lettre { font:bold 10pt Verdana; text-decoration:none }
      .lettre:hover { text-decoration:underline }
      .lettre2 { font:normal 14pt Verdana; color:red }
      .lettre3 { font:bold 10pt Verdana; color:gray }
   --></STYLE>
</HEAD><BODY><center>
   <font class=titre>Exemple de Lexique</font><br>
   <table cellspacing=10><tr><td align=center>
<?
// Recherche les lettres présentes dans le lexique
$res = mysql_query("SELECT DISTINCT ord(title) FROM $table");
$temp = " ";
while($val=mysql_fetch_array($res)) $temp.=strtoupper(chr($val[0]));

// AFFICHE L'ALPHABET

for($i=65;$i<91;$i++) {
   if($lettre==chr($i)) // Lettre sélectionnée
      echo "<font class=lettre2>&nbsp;".chr($i)."&nbsp;</font>";
   elseif(!strpos($temp,chr($i))) // Lettre sans définition
      echo "<font class=lettre3>&nbsp;".chr($i)."&nbsp;</font>";
   else // Lien
      echo "<A class=lettre href='lexique.php?lettre=".chr($i)."'>&nbsp;".chr($i)."&nbsp;</A>";
} ?>

   </td></tr>
<?
if($lettre) // Sélectionne les définitions correspondant à la lettre
   $SQL = "SELECT * FROM $table WHERE title LIKE '".$lettre."%' ORDER BY title";
else // ou tirage aléatoire sur la page d'accueil
   $SQL = "SELECT * FROM $table ORDER BY RAND() LIMIT 0,5";

// AFFICHE LES DÉFINITIONS

$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
   echo "<tr><td>";
   if($isAdmin) { // Liens d'édition pour l'admin
      echo "<A href='javascript:del(".$val["ID"].")'>del</A> ";
      echo "<A href='".$url."&edit=".$val["ID"]."#edit'>edit</A> ";
   }
   echo "<b>".$val["title"]."</b><br>"
      . "<div align=justify>".$val["content"]."<br></div>"
      . "</td></tr>";
}
?>

   </table>
<br>
<?
function tarea($txt) { // Caractères spéciaux dans le textarea
   return str_replace("<","&lt;",str_replace("&","&amp;",$txt)); }

// FORM D'AJOUT/MODIFICATION pour l'admin

if($isAdmin) { 
   if($edit)
      $fiche = mysql_fetch_array(mysql_query("SELECT * FROM $table WHERE ID='".$edit."'"));
?>

   <A name="edit"></A>
   <script language="JavaScript">
      function test(exp,def) {
         var reg = /^[a-zA-Z].*$/
         if(reg.exec(exp.value)==null) {
            alert("Expression invalide !\nInitiale A-Z"); exp.focus(); return false }
         if(def.value=="") { alert("Définition requise !"); def.focus(); return false }
      }
      function del(id) {
         if(confirm("Détruire cette fiche ?"))
            window.location.replace("<?echo $url?>&del="+id)
      }
      function vide() {
         if(confirm("Détruire toutes les fiches ?"))
            window.location.replace("<?echo $url?>&act=vide")
      }
   </script>

   <table><form method="post" onsubmit="return test(this.title,this.content)">
      <tr><td align=right>Expression</td>
         <td><input size=20 maxlength=20 name="title" value="<?echo tarea($fiche["title"])?>">
      </td></tr>
      <tr><td colspan=2>Définition<br>
         <textarea name="content" wrap=virtual rows=5 cols=35
            ><?echo tarea($fiche["content"])?></textarea>
      </td></tr>
      <tr><td align=center colspan=2>
         <input type="submit" value="<?if($edit) echo "Modifier"; else echo "Ajouter"?> la définition">
      </td></tr>
   </form></table><br>
   <?
   if($edit) echo "<A href='".$url."#edit'>Ajouter une définition</A> - ";
   
   $res=mysql_fetch_array(mysql_query("SELECT count(ID) FROM $table"));
   if($res[0]) {
      echo "<A href='javascript:vide()'>Vider le lexique</A> "
         . "(".$res[0]." définition";
      if($res[0]>1) echo "s";
      echo ") - ";
   } ?>

    
   <A href="<?echo $url?>&mdp=no">Déconnecter</A>

<? // OU FORM D'IDENTIFICATION

} else { ?>

   <table><form method="post"><tr>
      <td><input type="password" size=5 name="mdp"></td>
      <td><input type="submit" value="Editer"></td>
   </tr></form></table>
<? } ?>

</center></BODY></HTML><?

// DÉCONNEXION FINALE
mysql_close();
?>


lexique.sql 
#
# Base de données: `tests`
# Structure de la table `lexique`
#

CREATE TABLE lexique (
  ID tinyint(4) NOT NULL auto_increment,
  title varchar(20) NOT NULL default '',
  content longtext NOT NULL,
  KEY ID (ID)
) TYPE=MyISAM;

Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  26/05/2008 de lens
comment créer ce petit forum dans lequel j'ecrit act...
  • 26/05/2008 de Didier là : http://www.asp-php.net/scripts/asp-...
  •  Lire  03/03/2008 de creahi
    je veux bien comprendre l'utilisation de tes liens ve...
      v1.3p © ASP-PHP.net 2002  

    Didier le 29/12/2002 (106 091 hits)
    Didier Ils l’ont fait avec SQL Server. Découvrez comment !
    Concours de programmation Flash !
    Au fil des news  
    ASP - Redimensionner Image + Picto après Upload - Galerie photos, revue de presse, ...
    But : Proposer aux visiteurs de charger des images sans se soucier du "poids" de l'image, puisqu'on ...
    Exporter et Importer un site SharePoint - Comment déplacer un site SharePoint
    Une question est très régulièrement posée à tout responsable de ferme SharePoint : Comment ...
    Bon anniversaire - Comment le souhaiter à ses membres ?
    Avoir un site, c'est bien. Avoir des inscrits, c'est mieux. Souhaiter leur anniversaire, c'est ...
    Audio & Vidéo - Multimédia dans ses pages web
    AUDIO/VIDEO : QuickTime, MediaPlayer, RealPlayer, FlashPlayer, ... : Du multimédia dans ses pages ...
    Magazines - Le Hors-Série .Net de Programmez !
    PHP - Administrer en ligne - Protection des pages
    Protéger ses pages pour administrer son site en ligne en (relative) sécurité (PHP).
    Communautés - Concours de programmation Flash !
    [MAJ] Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
    Ajout de la vérification de l'existence du fichier et d'un test d'erreur de retour du composant ...
    Protéger ses Images - Propriété intellectuelle - Vie privée
    Je me suis penché sur la question en tant qu'artiste moi-même, et concepteur de site web pour ...
    Création de miniatures - Fonction php de création
    Cette fonction sert à créer des miniatures.
    ASP - ADMINISTRER en ligne - Protection des pages
    Protéger ses pages pour administrer son site en ligne en (relative) sécurité (ASP).
    JavaScript - Numéros de ligne à gauche d'un textarea
    Protection - Sécurité - Mise au point - Précautions - Solutions
    Même sans être paranoïaque, on a tous entendu parler de failles de sécurité, piratage informatique, ...
    AspSmartUpload - Mode d'Emploi
    Le composant ASPSmartUpload (gratuit) permet de gérer les téléchargements de FICHIERS ou de ...
    JavaScript - Contrôler une date saisie dans un formulaire
    HTML - Ajouter un fichier multimédia dans une page web
    HTML - Musique de Fond sur son site
    Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
    Devant la diversité des formats d'image actuels, il est parfois nécessaire de connaître les ...
    CSS - Icône Personnalisée sur son site
    JavaScript - Interdire Clic Droit et message d'alerte
    CSS - Curseur Personnalisé sur son site
    JavaScript - Fenêtre à la Dimension de l'Ecran
    La gouvernance SharePoint - Partie 1 - Première partie sur la gouvernance dans Sharepoint
    Un projet de mise en place de ferme SharePoint est un projet important pour toute structure ...
    ASP - Redimensionner Image + Picto après Upload
    ASP - Administration en ligne : Protection des Pages
    PHP - Administration en ligne : Protection des Pages
    PHP - Redimensionner Image + Picto après Upload
    ASP - Boutons ON OFF pour tout type de musique
    PHP - Boutons ON OFF pour tout type de musique
    SharePoint et OpenSearch - Utiliser l'option OpenSearch avec SharePoint
    Nous avons maintenant un site SharePoint fonctionnel associé à un moteur de recherche efficace. Il ...
    Magazines - Le n°109 de Programmez est disponible
    SharePoint et PowerShell - Utilisation de PowerShell pour un script d'admin
    PowerShell est le nouveau moteur de script de Microsoft. Il permet tout comme VBScript de créer des ...
    [MAJ] [PHP] - Validation de formulaire - Gestion des erreurs via style CSS
    Ajout de la sécurité anti sql injection de premier niveau.
    Adobe - Adobe propose 3 nouvelles versions bêta publiques
    VBScript - Interroger un serveur MYSQL
    Divers - Web developpement
    PHP5 - Copie de fichiers distants
    Les stratégies de Backup dans WSS V3 - Quelles sont les différentes solutions de BackUp
    Nous avons vu au travers des précédents articles différents sujets pour Windows SharePoint Services ...
    Création d'une solution de déploiement SharePoint - Créer la solution pour notre composant SharePoint
    Après avoir suivi toutes les étapes pour la création de notre composant (Feature) SharePoint, il ...
    Magazines - Le n°108 de Programmez est disponible
    Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
    Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
      Scripts : Scripting | ASP-PHP | ASP.net | Divers
      Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
    v3 © Didier 2003   
     

    Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
     El Roubio Groupes Utilisateurs Microsoft ASP-magazine MVP The Inquirer FR Codes Sources TechNet DotNet Project Wygwam CodePPC