' . date_etendue(date('Y-m-d', $resultat['date'])) . '
' . date('H:i:s', $resultat['date']) . ' ' . $resultat['titre'] . ' ' . $resultat['prenom'] . ' ' . $resultat['nom'] . ' [ ] ' . nl2br($resultat['message']) . ' '; } // Inutile de conserver la requête. mysqli_free_result($requete); // Infos sur la discussion. $infos_discussion = rechligne(requete(' SELECT titre, nom, prenom FROM elvakt_discussions INNER JOIN elvakt_membres ON ref_membre = id_membre WHERE id_discussion = ' . $id_discussion . ';' )); $sortie = '

' . $infos_discussion['titre'] . '

' . $infos_discussion['prenom'] . ' ' . $infos_discussion['nom'] . '

' . $messages . '
' . DATE . ' ' . MESSAGES . ' ' . AUTEUR_B . '
' . pagination($nb_pages); } else { // Sélection des discussions du forum. $requete = requete(' SELECT id_discussion, elvakt_discussions.titre AS discussion, nom AS nom_createur, prenom AS prenom_createur, id_membre, COUNT(id_message) AS nb_messages FROM elvakt_discussions INNER JOIN elvakt_membres ON elvakt_discussions.ref_membre = id_membre INNER JOIN elvakt_messages ON ref_discussion = id_discussion GROUP BY discussion;' ); // On place les résultats dans un tableau. while ($resultat = rechligne($requete)) { $tableau[] = $resultat; } // Inutile de conserver la requête. mysqli_free_result($requete); // Tri des résultats. $ordre = isset($_GET['ordre']) ? $_GET['ordre'] : 'discussion'; // Ordre des résultats. $option = isset($_GET['option']) ? $_GET['option'] : ''; // Option de tri. // Seulement s'il y a des résultats, pour éviter d'afficher un message d'erreur. if (is_array($tableau)) { foreach ($tableau AS $cle => $element) { // On récupère le dernier message de chaque discussion. $last_post = rechligne(requete('SELECT date, titre FROM elvakt_messages INNER JOIN elvakt_membres ON ref_membre = id_membre WHERE ref_discussion = ' . $tableau[$cle]['id_discussion'] . ' ORDER BY date DESC LIMIT 1;', $connexion)); $tableau[$cle]['date'] = $last_post['date']; $tableau[$cle]['titre'] = $last_post['titre']; $tri[$cle] = strip_tags($tableau[$cle][$ordre]); // Tri selon la colonne. } $option_tri = $option == 'desc' ? SORT_DESC : SORT_ASC; // Option de tri pour la fonction multisort. $tri_lower = array_map('strtolower', $tri); // On rend le tri insensible à la casse. array_multisort($tri_lower, $option_tri, $tableau); // Tri dynamique des résultats. } $page = (isset($_GET['page']) AND is_numeric($_GET['page'])) ? $_GET['page'] : 1; // Déclaration du numéro de la page en cours. $nb_resultats = count($tableau); // Comptabilisation du nombre de lignes de résultats. $nb_resultats_p_page = 20; // Nombre de résultats souhaités par page. $nb_pages = ceil($nb_resultats / $nb_resultats_p_page); // Calcul du nombre de pages. $premier_resultat = ($page * $nb_resultats_p_page) - ($nb_resultats_p_page - 1); // Calcul du numéro du premier résultat de la page. $dernier_resultat = $premier_resultat + ($nb_resultats_p_page + 1) > $nb_resultats ? $nb_resultats : $page * $nb_resultats_p_page; // Calcul du numéro du dernier résultat de la page. // Tant que l'on n'a pas atteint le nombre de résultats souhaités par page, on continue l'affichage des éléments de la liste. $i = 0; $k = ($page * $nb_resultats_p_page) - $nb_resultats_p_page; // Permet de déterminer sur quel résultat on se positionne. Par exemple, k vaut 0 pour la page 1 (les array commencent à 0), 10 pour la page 2, 20 pour la page 3 etc... while ($i < $nb_resultats_p_page) { if (!empty($tableau[$k])) { $discussions .= ' ' . $tableau[$k]['discussion'] . ' (' . $tableau[$k]['nb_messages'] . ' ' . strtolower(MESSAGES) . ') ' . $tableau[$k]['prenom_createur'] . ' ' . $tableau[$k]['nom_createur'] . ' [ ] ' . $tableau[$k]['titre'] . '
' . date('d/m/Y H:i', $tableau[$k]['date']) . ' '; } $i++; $k++; } $sortie = ' ' . $discussions . '
' . option_tri(DISCUSSION, 'discussion') . ' ' . option_tri(DISCUSSION_AUTEUR, 'nom_createur') . ' ' . option_tri(DERNIER_MSG, 'date') . '
' . pagination($nb_pages); } return $sortie; } ?> Forum | Archiwum Kazimierza Twardowskiego