Accueil > > > MINI LISTE GÉNÉRIQUE AFFICHANT UNE TABLE MYSQL ET PERMETTANT L'AJOUT OU LA SUPPRESSION, AVEC OU SANS MOT DE PASSE, XHTML/CSS (EX: LISTE DE COURSES, GUEST LIST,...)
MINI LISTE GÉNÉRIQUE AFFICHANT UNE TABLE MYSQL ET PERMETTANT L'AJOUT OU LA SUPPRESSION, AVEC OU SANS MOT DE PASSE, XHTML/CSS (EX: LISTE DE COURSES, GUEST LIST,...)
Information sur la source
Description
Grâce à une seule page de php/xhtml/css/javascript :
Le code va lire votre table (par exemple une liste de courses, une guest list,...) et va afficher ses données correctement formatées, avec une boite de login si vous l'avez décidé.
si vous êtes loggué ou bien si vous avez désactivé le logging, vous pourrez alors ajouter et supprimer des lignes.
une restriction cependant : la table mysql doit contenir comme premier champ une clé primaire de type int et auto_increment (c'est l'id)
voila :)
Source
- <?php
- /* ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' */
- /* Script made by mOut on april 2005 */
- /* updated on june 2007 */
- /* www.mout.fr - mout85@gmail.com */
- /* © */
- /* ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' */
-
-
- /* =========================== CONFIGURATION =========================== */
-
- //titre (et sous-titre) de votre page et adresse e-mail de contact :
- $titre = 'Titre';
- $soustitre = 'Sous-titre';
- $email = 'vous@domaine.com';
- //largeur de chaque colonne (une largeur de 10 fait 70 pixels) :
- $largeurcolonnes = 20;
- //colonne a trier (0 pour la clé, ou bien 1 ou 2 ou 3...) :
- $orderby = 0;
-
- //----------------------------------------------------
- //paramètres de votre base de données mysql :
- $mysql['server'] = ''; //free: sql.free.fr
- $mysql['login'] = '';
- $mysql['password'] = '';
- $mysql['database'] = ''; //free: votre login
- $mysql['table'] = '';
- //ATTENTION, votre table doit contenir une clé primaire en auto_increment
- //en premier champ de table (non affichée ensuite ici), les champs suivants
- //constituant ceux affichés (donc au choix TEXT, VARCHAR, INT, etc.)
-
- //----------------------------------------------------
- //protégé par mot de passe (true/false) :
- $pp = true;
- //si true, alors indiquez le mot de passe :
- $password = 'motdepasse';
-
- /* ====================== FIN DE LA CONFIGURATION ====================== */
-
-
-
- error_reporting(0); //error_reporting(E_ALL); si vous avez des problèmes
-
- $self = $_SERVER['PHP_SELF'];
-
- @session_start();
- $admin = false;
- if(isset($_POST['pass']) && $_POST['pass']==$password)
- $admin = true;
- elseif(isset($_SESSION['pass']) && $_SESSION['pass']===true)
- $admin = true;
- $_SESSION['pass'] = $admin;
-
- mysql_connect($mysql['server'],$mysql['login'],$mysql['password'])
- or die('Erreur lors de la connexion à la base MySQL : '.mysql_error());
-
- mysql_select_db($mysql['database'])
- or die('Erreur lors du choix de la table MySQL : '.mysql_error());
-
- $r = mysql_query('SELECT * FROM '.$mysql['table'])
- or die('Erreur lors de la lecture des données de la table : '.mysql_error());
-
- $numfields = mysql_num_fields($r);
-
- for($i=0;$i<$numfields;$i++)
- $fields[] = mysql_field_name($r,$i);
-
- if(isset($_POST[$fields[1]])){
- if(!$pp || ($pp && $admin)){
- $q = "INSERT INTO ".$mysql['table']." (";
- for($i=1;$i<$numfields-1;$i++)
- $q.= $fields[$i].", ";
- $q.= $fields[$numfields-1].") VALUES (";
- for($i=1;$i<$numfields-1;$i++)
- $q.= "'".$_POST[$fields[$i]]."', ";
- $q.= "'".$_POST[$fields[$numfields-1]]."')";
- mysql_query($q) or die(mysql_error());
- }
- else
- exit("Erreur : vous n'avez pas les droits pour cette action.");
- }
-
- if(isset($_GET['delete'])){
- if(!$pp || ($pp && $admin)){
- $req = 'DELETE FROM '.$mysql['table'].' WHERE '.$_GET['primary'].'='.$_GET['delete'];
- mysql_query($req) or die('['.$req.'] '.mysql_error());
- }
- else
- exit("Erreur : vous n'avez pas les droits pour cette action.");
- }
-
-
- //on refait la requête de sélection pour actualiser la page :
- $r = mysql_query("SELECT * FROM ".$mysql['table']." ORDER BY ".$fields[$orderby]." ASC")
- or die("Erreur lors de la lecture des données de la table : ".mysql_error());
-
- ?>
- <!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" xml:lang="fr" lang="fr">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
- <meta http-equiv="Content-Style-Type" content="text/css" />
- <meta http-equiv="Content-Language" content="fr" />
- <title><?php echo $titre; ?></title>
- <script type="text/javascript">
- function post(){
- if(document.getElementById('add_1').value!='')
- document.getElementById('flist').submit();
- }
- </script>
- <style type="text/css" media="screen,print">
- a { text-decoration: none; color: #048; }
- a:hover { color: red; }
- body { font-family: Helvetica, sans-serif; font-size: 12px; }
- th { border-bottom: 1px solid #888; background-color: #eee; }
- tr:hover { background-color: #eee; }
- input:focus { border: 2px solid #888; }
- td,th { height: 22px; }
- th { width: <?php echo $largeurcolonnes*8; ?>px; }
- #actualiser { font-size: 12px; }
- #lb { position: absolute; bottom: 18px; left: 20px; font-size: 10px; position: fixed; }
- #rb { position: absolute; bottom: 10px; right: 28px; position: fixed; }
- img { border: none; }
- </style>
- <style type="text/css" media="print">
- .noprint { display:none; }
- body,table,tr,td { font-size: 12px; }
- td,th { height: 16px; }
- </style>
- </head>
- <body>
-
- <div style="text-align: center">
- <h1>
- <a href="<?php echo $self; ?>"><?php echo $titre; ?></a>
- </h1>
- <?php echo ( $soustitre!='' ? '<p>'.$soustitre.'</p>' : '' ); ?>
- <h3 id="actualiser" class="noprint">
- <a href="<?php echo $self; ?>">Actualiser la page</a>
- </h3>
- </div>
-
- <form method="post" id="flist" action="<?php echo $self; ?>">
- <table style="margin-left: auto; margin-right: auto;">
- <?php
- //titres des colonnes :
- echo '<tr>';
- for($i=1;$i<$numfields;$i++)
- echo '<th>'.$fields[$i].'</th>';
- echo '</tr>'."\n";
-
- //lignes de la table :
- $count=0;
- while($l=mysql_fetch_array($r)){
- echo '<tr>';
- for($i=1;$i<$numfields;$i++)
- echo '<td>'.htmlspecialchars($l[$i]).'</td>';
- if(!$pp || ($pp && $admin))
- echo '<td class="noprint"><a href="'.$self.'?primary='.$fields[0].'&delete='.$l[0].'" onclick="return confirm(\'Etes-vous sûr de vouloir supprimer cette entrée ?\')">Del</a></td>';
- echo '</tr>'."\n";
- $count++;
- }
-
- //formulaire d'ajout d'une ligne :
- if(!$pp || ($pp && $admin)){
- if($count<30){
- echo '<tr class="noprint">';
- for($i=1;$i<$numfields;$i++)
- echo '<td><input type="text" size="'.$largeurcolonnes.'" name="'.$fields[$i].'" id="add_'.$i.'" /></td>';
- echo '<td style="height: 30px">';
- echo '<a href="javascript:void(0)" onclick="post()">Add</a>';
- echo '<input type="submit" style="display:none" />';
- echo '</td></tr>'."\n";
- }
- else
- echo '<tr class="noprint"><td colspan="3"><b>Liste pleine.</b></td></tr>'."\n";
- }
- ?>
- </table>
- </form>
-
- <p class="noprint"> </p><p class="noprint" style="text-align:center"><?php echo $count; ?> total records | <a href="http://www.mout.fr/">made by mOut</a></p>
-
- <div id="lb" class="noprint">Contact : <a href="mailto:<?php echo $email; ?>"><?php echo $email; ?></a>.</div>
- <?php
- if(!$admin && $pp){
- //attention pour xhtml, certains serveurs insèrent un input hidden pour le session_id, juste après le <form> :
- echo '<form method="post" id="fadmin" action="'.$self.'">';
- echo '<div id="rb" class="noprint"><p>';
- echo '<input type="password" name="pass" id="pass" size="10" /> ';
- echo '<a href="javascript:void(0)" onclick="document.getElementById(\'fadmin\').submit();">Admin</a>';
- echo '<input style="display:none" type="submit" />';
- echo '</p></div></form>';
- echo '<script type="text/javascript"> document.getElementById(\'pass\').focus(); </script>';
- }
- else
- echo '<script type="text/javascript"> document.getElementById(\'add_1\').focus(); </script>';
- ?>
-
- </body>
- </html>
<?php
/* ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' */
/* Script made by mOut on april 2005 */
/* updated on june 2007 */
/* www.mout.fr - mout85@gmail.com */
/* © */
/* ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' */
/* =========================== CONFIGURATION =========================== */
//titre (et sous-titre) de votre page et adresse e-mail de contact :
$titre = 'Titre';
$soustitre = 'Sous-titre';
$email = 'vous@domaine.com';
//largeur de chaque colonne (une largeur de 10 fait 70 pixels) :
$largeurcolonnes = 20;
//colonne a trier (0 pour la clé, ou bien 1 ou 2 ou 3...) :
$orderby = 0;
//----------------------------------------------------
//paramètres de votre base de données mysql :
$mysql['server'] = ''; //free: sql.free.fr
$mysql['login'] = '';
$mysql['password'] = '';
$mysql['database'] = ''; //free: votre login
$mysql['table'] = '';
//ATTENTION, votre table doit contenir une clé primaire en auto_increment
//en premier champ de table (non affichée ensuite ici), les champs suivants
//constituant ceux affichés (donc au choix TEXT, VARCHAR, INT, etc.)
//----------------------------------------------------
//protégé par mot de passe (true/false) :
$pp = true;
//si true, alors indiquez le mot de passe :
$password = 'motdepasse';
/* ====================== FIN DE LA CONFIGURATION ====================== */
error_reporting(0); //error_reporting(E_ALL); si vous avez des problèmes
$self = $_SERVER['PHP_SELF'];
@session_start();
$admin = false;
if(isset($_POST['pass']) && $_POST['pass']==$password)
$admin = true;
elseif(isset($_SESSION['pass']) && $_SESSION['pass']===true)
$admin = true;
$_SESSION['pass'] = $admin;
mysql_connect($mysql['server'],$mysql['login'],$mysql['password'])
or die('Erreur lors de la connexion à la base MySQL : '.mysql_error());
mysql_select_db($mysql['database'])
or die('Erreur lors du choix de la table MySQL : '.mysql_error());
$r = mysql_query('SELECT * FROM '.$mysql['table'])
or die('Erreur lors de la lecture des données de la table : '.mysql_error());
$numfields = mysql_num_fields($r);
for($i=0;$i<$numfields;$i++)
$fields[] = mysql_field_name($r,$i);
if(isset($_POST[$fields[1]])){
if(!$pp || ($pp && $admin)){
$q = "INSERT INTO ".$mysql['table']." (";
for($i=1;$i<$numfields-1;$i++)
$q.= $fields[$i].", ";
$q.= $fields[$numfields-1].") VALUES (";
for($i=1;$i<$numfields-1;$i++)
$q.= "'".$_POST[$fields[$i]]."', ";
$q.= "'".$_POST[$fields[$numfields-1]]."')";
mysql_query($q) or die(mysql_error());
}
else
exit("Erreur : vous n'avez pas les droits pour cette action.");
}
if(isset($_GET['delete'])){
if(!$pp || ($pp && $admin)){
$req = 'DELETE FROM '.$mysql['table'].' WHERE '.$_GET['primary'].'='.$_GET['delete'];
mysql_query($req) or die('['.$req.'] '.mysql_error());
}
else
exit("Erreur : vous n'avez pas les droits pour cette action.");
}
//on refait la requête de sélection pour actualiser la page :
$r = mysql_query("SELECT * FROM ".$mysql['table']." ORDER BY ".$fields[$orderby]." ASC")
or die("Erreur lors de la lecture des données de la table : ".mysql_error());
?>
<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr" />
<title><?php echo $titre; ?></title>
<script type="text/javascript">
function post(){
if(document.getElementById('add_1').value!='')
document.getElementById('flist').submit();
}
</script>
<style type="text/css" media="screen,print">
a { text-decoration: none; color: #048; }
a:hover { color: red; }
body { font-family: Helvetica, sans-serif; font-size: 12px; }
th { border-bottom: 1px solid #888; background-color: #eee; }
tr:hover { background-color: #eee; }
input:focus { border: 2px solid #888; }
td,th { height: 22px; }
th { width: <?php echo $largeurcolonnes*8; ?>px; }
#actualiser { font-size: 12px; }
#lb { position: absolute; bottom: 18px; left: 20px; font-size: 10px; position: fixed; }
#rb { position: absolute; bottom: 10px; right: 28px; position: fixed; }
img { border: none; }
</style>
<style type="text/css" media="print">
.noprint { display:none; }
body,table,tr,td { font-size: 12px; }
td,th { height: 16px; }
</style>
</head>
<body>
<div style="text-align: center">
<h1>
<a href="<?php echo $self; ?>"><?php echo $titre; ?></a>
</h1>
<?php echo ( $soustitre!='' ? '<p>'.$soustitre.'</p>' : '' ); ?>
<h3 id="actualiser" class="noprint">
<a href="<?php echo $self; ?>">Actualiser la page</a>
</h3>
</div>
<form method="post" id="flist" action="<?php echo $self; ?>">
<table style="margin-left: auto; margin-right: auto;">
<?php
//titres des colonnes :
echo '<tr>';
for($i=1;$i<$numfields;$i++)
echo '<th>'.$fields[$i].'</th>';
echo '</tr>'."\n";
//lignes de la table :
$count=0;
while($l=mysql_fetch_array($r)){
echo '<tr>';
for($i=1;$i<$numfields;$i++)
echo '<td>'.htmlspecialchars($l[$i]).'</td>';
if(!$pp || ($pp && $admin))
echo '<td class="noprint"><a href="'.$self.'?primary='.$fields[0].'&delete='.$l[0].'" onclick="return confirm(\'Etes-vous sûr de vouloir supprimer cette entrée ?\')">Del</a></td>';
echo '</tr>'."\n";
$count++;
}
//formulaire d'ajout d'une ligne :
if(!$pp || ($pp && $admin)){
if($count<30){
echo '<tr class="noprint">';
for($i=1;$i<$numfields;$i++)
echo '<td><input type="text" size="'.$largeurcolonnes.'" name="'.$fields[$i].'" id="add_'.$i.'" /></td>';
echo '<td style="height: 30px">';
echo '<a href="javascript:void(0)" onclick="post()">Add</a>';
echo '<input type="submit" style="display:none" />';
echo '</td></tr>'."\n";
}
else
echo '<tr class="noprint"><td colspan="3"><b>Liste pleine.</b></td></tr>'."\n";
}
?>
</table>
</form>
<p class="noprint"> </p><p class="noprint" style="text-align:center"><?php echo $count; ?> total records | <a href="http://www.mout.fr/">made by mOut</a></p>
<div id="lb" class="noprint">Contact : <a href="mailto:<?php echo $email; ?>"><?php echo $email; ?></a>.</div>
<?php
if(!$admin && $pp){
//attention pour xhtml, certains serveurs insèrent un input hidden pour le session_id, juste après le <form> :
echo '<form method="post" id="fadmin" action="'.$self.'">';
echo '<div id="rb" class="noprint"><p>';
echo '<input type="password" name="pass" id="pass" size="10" /> ';
echo '<a href="javascript:void(0)" onclick="document.getElementById(\'fadmin\').submit();">Admin</a>';
echo '<input style="display:none" type="submit" />';
echo '</p></div></form>';
echo '<script type="text/javascript"> document.getElementById(\'pass\').focus(); </script>';
}
else
echo '<script type="text/javascript"> document.getElementById(\'add_1\').focus(); </script>';
?>
</body>
</html>
Conclusion
attention à l'encodage ! ici c'est spécifié ISO-8859-1, donc il faut enregistrer le fichier texte PHP en ANSI, mais si votre base est en UTF-8, enregistrez-le en UTF-8 et mettez à jour la balise META !
Historique
- 09 avril 2005 16:45:49 :
- ajout du zip, parce que la coloration de phpcs.com... bof!
- 09 avril 2005 16:48:08 :
- 09 avril 2005 16:55:59 :
- simplification d'un div
- 14 avril 2005 18:12:40 :
- - short_open_tags=off
- sous-titre
- confirmation de suppression
- largeur colonnes
- 14 avril 2005 18:17:02 :
- 06 juin 2007 01:33:46 :
- corrections d'erreurs XHTML, et améliorations mineures.
- 06 juin 2007 11:19:08 :
- petite erreur javascript (oubli)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Boîtes à liste + PHP + MySql [ par olive59 ]
Source en PHP avec base MySqlJ'alimente une boite à liste avec une base MySQL. Jusque là, tout va bien! (Par un SELECT * FROM ...)J'aimerais pouvoir a
Liste des fonctions PHP & Mysql... [ par RUUUDEBOY ]
Salut a tous...Je suis débutant dans ce langage et un peu autodidacte, ce qui fait que par moments je cherche des solutions avec ce que je connais alo
Besoin Aide Remplir Liste en PHP [ par Dexterage ]
voila le probleme. Je dévelope un site en php, et jai un formulaire a faire et je galére pour remplir une liste/menu.voici le code :<html
PHP/MySQL : liste déroulante dynamique [ par Suru_Verbal ]
Bonjour à tous !Je réalise un petit projet en PHP avec une Base de Données MySQL.J'utilise des formulaires et je
un méchant bug dans mon chat [ par spiesalex ]
Salut tous le monde j'ai vraiment un probleme lorsque j,actualise ma page tous se multiplie! ex: http://membres.netrock.ca/lga/tribunat.php voici m
Autocompletion-Ajax-PHP-Mysql :) [ par renauddero ]
J'ai essayer de mettre une autocompletion d'ajax sur un site. Mais seul les data commencant par un nombre ou par t s'affiche.. Voici le code de option
php mysql type liste [ par seif4rock ]
bonjourj'ai une question a vous poser:je travaille avec PHP et MySQLla base de donnee contient une table emloye(nom, prenom, titre, grade, matricule,
Recherche de livres : XHTML et CSS, puis PHP et MySQL [ par impolitis ]
Bonjour,Débutant total dans ces domaines, je souhaite apprendre en autodidacte (bonjour les questions... ça va pleuvoir ! ).Je souhaiterais acheter (o
Suppression sur une bd mysql à partir d'un bouton (php) !! [ par WrestlingMan ]
Bonjour à tous !! J'espère que vous pourrez m'aider !! J'ai créer un petit formulaire, dans celui-ci on choisi une personne dans une liste déroulante.
PHP/MySql : afficher les valeurs existantes d'un champ dans une liste multiple pour UPDATE [ par lafpat ]
Bonjour ! Après avoir fouillé dans les forums,je suis toujours dans l'impasse quant à mon pb: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <?php /* 2 tables M
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|