Bonjour,
Comme dit dans le titre, connaissez-vous une fonction qui permette d'extraire le chiffre des unités d'un nombre entier quelconque?
Merci d'avance, et bonne année.
Anémone
<?php
$nombre="125.92";
$nombre_entier=floor($nombre); // Ou ceil() si on veut arrondir à l'entier supérieur; ou round() pour faire un véritable arrondi
$nombre_unite=$nombre_entier[strlen($nombre_entier)-1];
print $nombre_unite;
?>
<?php
$n = 125.92;
echo $n - floor($n);
Il n'est pas question de ceil, sinon le résultat serait faussé.
Ca peut expliquer pas mal de choses ! Mais si c'est l'excuse invoquée, je connais pas mal de personnes qui doivent réveillonner à longueur d'année !Je vais retourner me coucher moi .... Le réveillon, c'est une bonne excuse ?
$nb=mysql_num_rows($requete);
$x*10+$y=$nb;
// etc
Puis affichage de x numéros de 1 à x, chacun comportant un lien entrainant l'éxécution d'une requête avec une clause LIMIT dont les 2 valeurs correspondront à $x*10 et ($x+1)*10.<?php
class formulaire_tri {
function form_tri ($param_chxppage, $param_ASCDESC, $param_table, $param_champs) {
// Début du formulaire
echo "<form method=\"GET\" action=\"". $PHP_SELF ."\">";
// Si le paramètre Nombre de Choix est transmis
if (isset($param_chxppage) && !empty($param_chxppage)) {
// Début du menu déroulant correspondant
echo " Nombre de résultats par page : <select name=\"nb_rst\">";
// Pour chaque nombre du tableau $param_nb_choix
foreach ($param_chxppage as $nb) {
// Affichage de l'option correspondante
echo "<option value=\"". $nb ."\">". $nb ."</option>";
}
// Fin du menu déroulant
echo " </select> --- ";
}
// Si le paramètre de tri Ascendant et Descendant existe et qu'il a pour valeur True
if (isset($param_ASCDESC) && $param_ASCDESC == true) {
// Affichage du menu déroulant correspondant
echo " Trier par ordre : <select name=\"opt1\">".
" <option value=\"ASC\">Croissant</option>".
" <option value=\"DESC\">Décroissant</option>".
" </select> ";
}
// Si le nom des champs ou de la table sont transmis
if (isset($param_champs) || isset($param_table)) {
// Si le paramètre de tri ASC/DESC est défini
if (isset($param_ASCDESC) && $param_ASCDESC == true) {
// Affichage du texte " et par "
$text = " et par ";
}
// Sinon
else {
// Affichage du texte "Trier par "
$text = "Trier par ";
}
// Début du menu déroulant
echo $text."<select name=\"opt2\">";
// Si les champs de la table sont transmis en paramètre
if (!empty($param_champs)) {
// On sépare chaque nom de champ et on ajoute des majuscules à la première lettre de chaque mot
$separation = explode (', ', $param_champs);
// Pour chaque élément du tableau $separation
foreach ($separation as $element) {
if ($element == "numéros d'enregistrements"){
$format_elem = "id";
}
else {
$format_elem = $element;
}
// Remplacement du caractère apostrophe (') par un apostrophe suivi d'un caractère d'espacement (' )
$element = str_replace ('\'', '\' ', $element);
// Remplacement de la première lettre de chaque mot par sont équivalent en majuscule
$element = ucwords($element);
// Remplacement du caractère apostrophe suivi d'un caractère d'espacement (' ) par une apostrophe simple (')
$element = str_replace ('\' ', '\'', $element);
// On crée l'option du menu déroulant correspondante
echo " <option value=\"". $format_elem ."\">". $element ."</option>";
}
}
// ... Ou alors si la le nom de la table est transmis en paramètre
elseif (!empty($param_table)) {
// On liste les champs de la table
$requete = "DESCRIBE ". $param_table;
$exec = mysql_query($requete);
while ($result = mysql_fetch_array($exec)) {
// On récupère le contenu de chaque élément du tableau $result avant son traitement
$result_origin = $result['Field'];
// Si la chaîne contient le mot "id" précédé ou suivi de n'importe quel caractère...
if (preg_match('#^[.]*id[.]*$#i', $result['Field'])) {
// ... on la remplace par la chaîne "numéros d'enregistrement"
$result['Field'] = "numéros d'enregistrement";
}
// Remplacement du caractère underscore (_) par un caractère d'espacement
$result['Field'] = str_replace ('_', ' ', $result['Field']);
// Remplacement du caractère apostrophe (') par un apostrophe suivi d'un caractère d'espacement (' )
$result['Field'] = str_replace ('\'', '\' ', $result['Field']);
// Remplacement de la première lettre de chaque mot par sont équivalent en majuscule
$result['Field'] = ucwords ($result['Field']);
// Remplacement du caractère apostrophe suivi d'un caractère d'espacement (' ) par une apostrophe simple (')
$result['Field'] = str_replace ('\' ', '\'', $result['Field']);
// Affichage des options du menu déroulant
echo " <option value=\"". $result_origin ."\">". $result['Field'] ."</option>";
}
}
// Fin du menu déroulant
echo " </select>";
}
// Affichage du bouton de validation et fin du formulaire
echo " <input type=\"submit\" name=\"trier\" value=\"Trier\" />".
"</form>";
}
}
?>
Vient ensuite la classe qui génère l'affichage multipage :<?php
class multipage {
function multi ($param_table) {
$enregistrements_par_page = isset($_GET['nb_rst']) ? $_GET['nb_rst'] : 10;
$ordASCDESC = isset ($_GET['opt1']) ? $_GET['opt1'] : "DESC";
$elem = isset ($_GET['opt2']) ? $_GET['opt2'] : "id";
$url = $PHP_SELF."?page=";
$page_courante = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee = ($page_courante + 1);
$requete1 = "SELECT COUNT(*) FROM ". $param_table;
$exec1 = mysql_query($requete1);
$nb_enregistrements = mysql_result($exec1, 0);
$nb_pages = ceil($nb_enregistrements / $enregistrements_par_page);
if($nb_pages > 0) {
$navigation = "";
if($nb_pages > 1) {
if($page_courante > 0) {
for($i = 0; $i < $page_courante; $i++) {
if (isset ($_GET['nb_rst'])) {
$rst = "&nb_rst=".$_GET['nb_rst'];
$ord1 = "&opt1=".$_GET['opt1'];
$ord2 = "&opt2=".$_GET['opt2'];
}
$p = $i + 1;
$navigation .= "<a href=\"". $url . $i . $rst . $ord1 . $ord2 ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}
$navigation .= "<strong>". $page_affichee ."</strong>";
if(($page_affichee) < $nb_pages) {
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++) {
if (isset ($_GET['nb_rst'])) {
$rst = "&nb_rst=".$_GET['nb_rst'];
$ord1 = "&opt1=".$_GET['opt1'];
$ord2 = "&opt2=".$_GET['opt2'];
}
$p = $j + 1;
$navigation .= " | <a href=\"". $url . $j . $rst . $ord1 . $ord2 ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
$page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
}
else {
$navigation .= "page 1/1";
}
$debut = $page_courante * $enregistrements_par_page;
$requete2 = "SELECT * FROM ". $param_table ." ORDER BY ". $elem . " ". $ordASCDESC ." LIMIT ". $debut .", ". $enregistrements_par_page .";";
$exec2 = mysql_query($requete2);
while($resultat = mysql_fetch_assoc($exec2)) {
echo "<hr />".
"Titre et sous-titre : <strong>".$resultat['champ1']."</strong> (".$resultat['champ2'].")<br />".
"Date et auteur : ".$resultat['champ3']." (".$resultat['champ4'].")<br />".
"Texte : ".$resultat['champ5'];
}
mysql_free_result($exec1);
mysql_free_result($exec2);
mysql_close();
echo "<hr /><p class=\"situation\">".$page_affichee."</p>";
echo "<hr /><p class=\"situation\">".$navigation."</p>";
}
else {
echo "<hr /><h3>Aucune donnée dans la base</h3>";
}
}
}
?>
Et enfin la page d'index qui appelle les deux classes et leur passe les arguments nécessaires à l'affichage :<?php
require_once ('configbdd.php');
$connexion = mysql_connect(*****, *****, *****) or die(mysql_error());
mysql_select_db(*****, $connexion) or die(mysql_error());
include ("class_form_tri.php");
include ("class_multipage.php");
$chxppage = range(5, 25, 5);
$triASCDESC = true;
$table = "ma_table";
$champs = "champ1, champ2, champ3, champ4, champ5";
$form = new formulaire_tri();
$form->form_tri($chxppage, $triASCDESC, $table, $champs);
$page = new multipage();
$page->multi($table);
echo $form->form_tri;
echo $page->multipage;
?>
Il suffit de changer dans l'index les valeurs des variables $table, $champs, $triASCDESC et $chxppage afin de les adapter à tes besoins. $nbre = 10;
$requete = "SELECT * FROM `commentaires` ORDER BY `dte_com` DESC, id_com DESC";
$result = mysql_query ($requete,$db);
$quantite = mysql_numrows($result);
{
for ($x=0; $x<$quantite; $x=$x+$nbre) {
$cedern = $x+$nbre;
if ($cedern > $quantite) $cedern = $quantite;
echo '
<a href="compl_compl_3.php?prem='.$x.'">
<font color="DDDD00">'.
($x+1).'-'.$cedern.'
</font>
</a>
<br>'
;
}
Tu comprends que