Auteur : mathieu
| Version : 11/01/2006 | | |
| | |
| | <?php
function nbElement(){
$rs = null;
$data = array();
$rs = mysql_unbuffered_query("SELECT COUNT(idimage) FROM image");
$data = mysql_fetch_row($rs);
return $data[0];
}
$nbRec = 10;
$position = 0;
$data = array();
$image = array();
$rs = null;
$nbData = 0;
$i = 0;
if($HTTP_GET_VARS['position']!='') $position = $HTTP_GET_VARS['position'];
if($HTTP_GET_VARS['nbelement']!='')$nbElement = $HTTP_GET_VARS['nbelement'];
else $nbElement = nbElement();
$requette = "SELECT nom, width, height FROM image ORDER BY nom LIMIT ".$position.",".$nbRec;
$rs = mysql_unbuffered_query($requette,$rsConnexion);
while($data = mysql_fetch_row($rs)){
$image[$i]['nom'] = $data[0];
$image[$i]['width'] = $data[1];
$image[$i][height] = $data[2];
$i++;
}
$nbData = $i
mysql_free_result($rs);
unset($requette,$data,$i);
mysql_close($rsConnexion);
?>
...html
<table>
<tr>
<td>
<?
if(($position-8)>=0){
echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($position+$nbRec)">Précédent</a>
}else{
echo ' ';
}
?>
</td>
<td> </td>
<td>
<? //Pour le bouton suivant
if(($position+$nbRec)<=$nbElement){
echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($position+$nbRec)">Suivant</a>
}else{
echo ' ';
}
?>
</td>
</tr>
<tr>
<td>Nom</td>
<td>Largeur</td>
<td>Hauteur</td>
</tr>
<? for($i=0;$i<$nbData;$i++){ ?>
<tr>
<td><img height="<? echo $image[$i]['height']; ?>" width="<? echo $image[$i]['width']; ?>" src="<? echo $image[$i]['nom']; ?>"></td>
<td><? echo $image[$i]['width']; ?></td>
<td><? echo $image[$i]['height']; ?></td>
</tr>
<? } ?>
</table> |
Pour ceux qui veulent des liens de type:
[1-10][11-20][21-30] ... <?
for($i=0;$i<ceil($nbElement/$nbRec);$i++) {
$sup = ($i+1)*$nbRec;
$inf = ($sup-$nbRec)+1;
if($position == ($i*$nbRec)) echo '<a href="#" style="color:#FF0000;">['.$inf.' - '.$sup.']</a>'.chr(13);
else echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?nbelement='.$nbElement.'&position='.($i*$nbRec).'">['.$inf.' - '.$sup.']</a>'.chr(13);
}
?> |
|
| | Ce code permet d'avoir un compteur pour un nombre de pages illimité. De plus il peut servir de statistiques. Il faut auparavant créer une table dans la base de données.
Ici création de la table "stats" : CREATE TABLE stats (
page varchar(100) NOT NULL,
nb int(11),
PRIMARY KEY (page)
); |
Le champ 'page' servira à accueillir le nom de la page, le champ 'nb', le compteur de la page relative.
Nous allons maintenant traiter le code par un exemple:
- Exécutez cette requête dans 'phpmyadmin', par exemple :
INSERT INTO stats VALUES ( 'test', '1'); |
Après exécution, vous devez avoir dans votre table, une valeur 'test' dans le champ 'nom' et '1' dans le champ 'nb'.
- Vous devez modifier vos paramètres de connexion dans le fichier 'connexion.php'
|
| | Nom de la classe : mysqlHelper
Configuration requise : PHP 5 et mySQL >= 4.0.25
Propriétés :
- Connection/Déconnection à une base mysql.
- Récupération de la liste des bases d'un serveur, des tables d'une base, des champs et index d'une table.
- Permet d'exporter une base de données sans l'utilitaire mysqldump.exe.
- Exporte la structure complète d'une base sous format XML.
- Permet de répliquer une base de donnée maître vers N bases de données esclaves.
Réplication : J'ai créé cette fonction car je suis en hébergement mutualisé sans accès aux fonctions de réplication de mySQL ni aux fichiers de logs de mySQL.
Pour le moment, elle permet de répliquer les :
- Ajout/Modification/Suppression de tables.
- Ajout/Modification/Suppression de champs.
- Ajout/Modification/Suppression d'index.
- Contenus de certaines tables (paramétrées dans un fichier de configuration).
Remarques : Cette version ne tient pas compte des nouveautés des mySQL 5, telle que
- La classe.
- Un exemple de fichier de configuration pour la réplication.
- Un fichier d'exemples.
|
| |
- Première chose à faire: créer une table dans votre base de données
On travaille avec la table suivante : create table essai(
code_essai int(11) not null auto_increment,
remplissage varchar(100) not null,
primary key(code_essai)
); |
- Editez le fichier 'connexion.php' et modifier les variables de connection à votre base de données.
|
| | Cette source est basée sur un exemple afin de mieux comprendre.
Pour le bon fonctionnement du code, nous devons créer la table utiliser et y ajouter des enregistrements : CREATE TABLE `xmen` (
`id` int(11) NOT NULL auto_increment,
`personnage` varchar(255) NOT NULL default '',
`acteur` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
INSERT INTO `xmen` VALUES (1, 'Wolverine', 'Hugh Jackman');
INSERT INTO `xmen` VALUES (2, 'Magneto', 'Ian McKellen');
INSERT INTO `xmen` VALUES (3, 'Professeur X', 'Patrick Stewart');
INSERT INTO `xmen` VALUES (4, 'Docteur Jean Grey', 'Famke Janssen');
INSERT INTO `xmen` VALUES (5, 'Tornade', 'Halle Berry');
INSERT INTO `xmen` VALUES (6, 'Cyclope', 'James Marsden');
INSERT INTO `xmen` VALUES (7, 'Malicia', 'Anna Paquin');
INSERT INTO `xmen` VALUES (8, 'Dents-de-Sabre', 'Tyler Mane');
INSERT INTO `xmen` VALUES (9, 'Crapaud', 'Ray Park');
INSERT INTO `xmen` VALUES (10, 'Mystique', 'Rebecca Romijn');
INSERT INTO `xmen` VALUES (11, 'Pyro', 'Alex Burton'); |
Une fois cette étape terminée, on peut enfin utiliser le code : <?php
$page = 0;
if(isset($_GET['page']) && is_int($_GET['page'])) {
$page = $_GET['page'];
}
$nb = 5;
if(isset($_GET['nb']) && is_int($_GET['nb'])) {
$nb = $_GET['nb'];
}
$conn = mysql_connect('localhost', 'root', 'bprevot');
if(!$conn) {
die('Impossible de se connecter au serveur.');
}
$db = mysql_select_db('test', $conn);
if(!$db) {
die('Impossible de se connecter à la base de données.');
}
$sql = '
SELECT COUNT(*) FROM xmen;
';
$query = mysql_query($sql, $conn) or die('Erreur MySQL : '.mysql_error());
$row = mysql_fetch_row($query);
$total = $row[0];
$max_pg = ceil($total / $nb);
$sql = '
SELECT id, personnage, acteur
FROM xmen
LIMIT '.($page * $nb).','.$nb.'
';
$query = mysql_query($sql, $conn) or die('Erreur MySQL : '.mysql_error());
?>
<p>Page actuelle : <?= $page ?></p>
<p>Nb d'enregistrements par page : <?= $nb ?></p>
<table>
<tr>
<th>ID</th>
<th>Personnage</th>
<th>Acteur</th>
</tr>
<?php
while($list = mysql_fetch_assoc($query)) {
echo '<tr>';
echo '<td>'.$list['id'].'</td>';
echo '<td>'.$list['personnage'].'</td>';
echo '<td>'.$list['acteur'].'</td>';
echo '</tr>';
}
?>
</table>
<p>Pages :
<?php
for($i = 0 ; $i < $max_pg ; $i++) {
echo ' <a href="?page='.$i.'&nb='.$nb.'">'.$i.'</a>';
}
?>
</p>
<p>Nb d'enregistrements par page :
<a href="?page=<?= $page ?>&nb=5">5</a>
<a href="?page=<?= $page ?>&nb=10">10</a>
<a href="?page=<?= $page ?>&nb=20">20</a></p> |
|
| | Le code présenté ici a pour but de sauvegarder des données dans un fichier sous forme de requête SQL.
Il y a différentes manières de sauvegarder les données. Habituellement, on les sauvegarde brutes, sans le "insert", juste avec un délimiteur. Mais ce n'est pas le cas dans ce code.
La sauvegarde du contenu de la table sera fait comme ceci : "insert into abonnes values('ma_valeur1', 'ma_valeur2')" |
Opération à effectuer avant utilisation :
- En premier lieu, vous devez créer la table abonnes que voici :
CREATE TABLE abonnes (
mail varchar(60) NOT NULL,
date date NOT NULL,
PRIMARY KEY (mail)
); |
Puis y insérer quelques valeurs.
- Vous devez modifier vos paramètres de connexion dans le fichier "connexion.php"
|
| | Voici la fonction à utiliser : function dumpMySQL($serveur, $login, $password, $base, $mode)
{
$connexion = mysql_connect($serveur, $login, $password);
mysql_select_db($base, $connexion);
$entete = "-- ----------------------\n";
$entete .= "-- dump de la base ".$base." au ".date("d-M-Y")."\n";
$entete .= "-- ----------------------\n\n\n";
$creations = "";
$insertions = "\n\n";
$listeTables = mysql_query("show tables", $connexion);
while($table = mysql_fetch_array($listeTables))
{
if($mode == 1 || $mode == 3)
{
$creations .= "-- -----------------------------\n";
$creations .= "-- creation de la table ".$table[0]."\n";
$creations .= "-- -----------------------------\n";
$listeCreationsTables = mysql_query("show create table ".$table[0], $connexion);
while($creationTable = mysql_fetch_array($listeCreationsTables))
{
$creations .= $creationTable[1].";\n\n";
}
}
if($mode > 1)
{
$donnees = mysql_query("SELECT * FROM ".$table[0]);
$insertions .= "-- -----------------------------\n";
$insertions .= "-- insertions dans la table ".$table[0]."\n";
$insertions .= "-- -----------------------------\n";
while($nuplet = mysql_fetch_array($donnees))
{
$insertions .= "INSERT INTO ".$table[0]." VALUES(";
for($i=0; $i < mysql_num_fields($donnees); $i++)
{
if($i != 0)
$insertions .= ", ";
if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
$insertions .= "'";
$insertions .= addslashes($nuplet[$i]);
if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
$insertions .= "'";
}
$insertions .= ");\n";
}
$insertions .= "\n";
}
}
mysql_close($connexion);
$fichierDump = fopen("dump.sql", "wb");
fwrite($fichierDump, $entete);
fwrite($fichierDump, $creations);
fwrite($fichierDump, $insertions);
fclose($fichierDump);
echo "Sauvegarde réalisée avec succès !!";
} |
À appeler sous la forme suivante : dumpMySQL("127.0.0.1", "root", "", "ma_base", 3); |
|
Consultez les autres pages sources
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2006
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|