Seite 1 von 5

[erweitert] Wie sortiere ich nach Buchstaben ?

Verfasst: 09.10.2004 15:40
von Jungteichbauer
Hallo zusammen,

bin gerade an eine Script am verändern, stelle mich aber wohl zu doof an.
Ich möchte durch folgende Sätze eine Sortierung nach Buchstaben erreichen:

Code: Alles auswählen

if($lettre) 

// sortieren nach Buchstabe
$SQL = "SELECT * FROM $table2 WHERE titre LIKE '".$lettre."%' ORDER BY titre";

else 

// Sortierung per Zufall, 5 Stück wahllos anzeigen

$SQL = "SELECT * FROM $table2 ORDER BY RAND() LIMIT 0,5";
Bloss dat klappt nich so wie ich will. Hintergrund iss ein Lexikon, das mir aber in der usprünglichen Version nich so gefällt. Man klickt auf einen Buchstaben und dann sollen sämtliche Begriffe mit diesem Anfangsbuchstaben angezeigt werden.

Welchen Fehler mach ich da ? :oops: 8)

EDIT: Hier noch der Link http://forum2.tommis-page.de/lexique.php ... damit ihr seht, was nicht klappt :roll:

Verfasst: 09.10.2004 19:30
von Dennis63
Ich kenne Deine Tabellenstruktur nicht, aber vom Prinzip her geht das so (mit einem phpBB als Grundlage)

Code: Alles auswählen

  SELECT  topic_title
    FROM  phpbb_topics
   WHERE  topic_title LIKE 'a%'
ORDER BY  topic_title
Grüße
Dennis

Verfasst: 09.10.2004 21:51
von Jungteichbauer
Hallo Dennis,

also liege ich doch richtig mit Schreibweise, oder`? Nur sortiert er nix richtig ...

Welche Infos brauchste von mir , um zu helfen ?

Verfasst: 09.10.2004 23:12
von PhilippK
Poste doch mal die Tabellenstruktur.

Gruß, Philipp

Verfasst: 10.10.2004 00:09
von Dennis63
Und dazu das Querry in $sql bitte.

Grüße
Dennis

Verfasst: 10.10.2004 09:53
von Jungteichbauer
Guten Morgen,

hier die benötigten Infos (hoffentlich sind es die richtigen):

Code: Alles auswählen

# phpMyAdmin MySQL-Dump
# version 2.2.6
# http://phpwizard.net/phpMyAdmin/
# http://www.phpmyadmin.net/ (download page)
#
# Serveur: localhost
# Généré le : Lundi 26 Juillet 2004 à 14:32
# Version du serveur: 3.23.49
# Version de PHP: 4.2.0
# Base de données: `test`
# --------------------------------------------------------

#
# Structure de la table `phpbb_lexique`
#

DROP TABLE IF EXISTS `phpbb_lexique`;
CREATE TABLE `phpbb_lexique` (
  `id` tinyint(8) NOT NULL auto_increment,
  `titre` varchar(250) NOT NULL default '',
  `explication` longtext NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

#
# Contenu de la table `phpbb_lexique`
#

INSERT INTO `phpbb_lexique` (`id`, `titre`, `explication`) VALUES (1, 'MOD PHPBB : Lexique', 'Ajoute un lexique en MOD sur un forum de type PhpBB. \r\n* La configuration du mod, ainsi que la modification de mot \r\n*  se fais via le panneau d\'administration. ');
# --------------------------------------------------------

#
# Structure de la table `phpbb_lexique_config`
#

DROP TABLE IF EXISTS `phpbb_lexique_config`;
CREATE TABLE `phpbb_lexique_config` (
  `nom_page` varchar(250) NOT NULL default '',
  `explication_page` varchar(250) NOT NULL default ''
) TYPE=MyISAM;

#

INSERT INTO `phpbb_lexique_config` (`nom_page`, `explication_page`) VALUES ('eXperienZ.NET : Lexique', 'Ce site permet d\'ajouter un lexique sur un forum PhpBB');


Code: Alles auswählen

if($lettre) 

// Sélectionne les définitions correspondant à la lettre
$SQL = "SELECT * FROM $table2 WHERE titre LIKE '".$lettre."%' ORDER BY titre";

else 

$SQL = "SELECT * FROM $table2 ORDER BY RAND() LIMIT 0,5";


$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<tr><td>";
echo "<b>".$val["titre"]."</b><br>"
. "<div align=justify>".$val["explication"]."<br></div>"
. "</td></tr>";
}
?>

Verfasst: 10.10.2004 10:29
von PhilippK
Ich vermute gerade, dass $lettre nicht richtig übergeben wird. Kannst du mal die Zeile posten, wo die Variable initialisiert wird?

Gruß, Philipp

Verfasst: 10.10.2004 10:32
von Jungteichbauer
Moin,

wow, dat ging abba schnell .... ich poste gerade mal das komplette:

Code: Alles auswählen

<?php 
/*************************************************************************** 
*     debut                  : jeudi 22 juillet 2004 
*     copyright              : http://www.experienz.net 
*     Auteur                 : eXperienZ.NET 
*     version                : 1.0 
*     email                  : nellsy@experienz.net 
*     module                 : lexique 
**************************************************************************** 
*     description            : 
* 
* Ajoute un lexique en MOD sur un forum de type PhpBB. 
* La configuration du mod, ainsi que la modification de mot 
*  se fais via le panneau d'administration. 
**************************************************************************** 
* MOD crée par l'équipe d'eXperienZ.NET 
****************************************************************************/  

// Connection au fichier de la base de données
include("config.php");

// connection a la base de donnees
$connect = mysql_connect($dbhost,$dbuser,$dbpasswd);

// selection de la base
mysql_select_db($dbname, $connect);

// Définition des tables utilisés pour le lexique
$table = "phpbb_lexique_config"; // Par défaut phpbb_lexique_config
$table2 = "phpbb_lexique"; // Par défaut phpbb_lexique
$table_session = "phpbb_session"; // Par défaut phpbb_session

//Requête de selection des entrées
$affiche="SELECT * FROM $table ";
$result = mysql_query($affiche);
$val = mysql_fetch_array($result);

//Récupération des variables avant de les afficher
$nom_page=$val['nom_page'];
$explication_page=$val['explication_page'];

?>

<HTML><HEAD>

<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>
<b>
<font size="5"><? echo $nom_page; ?></font></b><font size="5"><br /></font>
<font size="2"><i>(<? echo $explication_page; ?>)</i></font><br>
<table cellspacing=10><tr><td align=center>
<?
// Recherche les lettres présentes dans le lexique
$res = mysql_query("SELECT DISTINCT ord(titre) FROM $table2");
$temp = " ";
while($val=mysql_fetch_array($res)) $temp.=strtoupper(chr($val[0]));

// Affichage de 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 $table2 WHERE titre LIKE '".$lettre."%' ORDER BY titre";

else 

// ou fait un tirage aléatoire sur la page d'accueil
$SQL = "SELECT * FROM $table2 ORDER BY RAND() LIMIT 0,5";

// Affiche les définitions entrées dans la table
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<tr><td>";
echo "<b>".$val["titre"]."</b><br>"
. "<div align=justify>".$val["explication"]."<br></div>"
. "</td></tr>";
}
?>


</table>
<br>

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

<?

// Déconnection de la base de données
mysql_close();

?>

Verfasst: 10.10.2004 15:03
von Blutgerinsel
Hi,

mach mal:

Code: Alles auswählen

error_reporting(E_ALL);
$result = mysql_query($affiche) or die("SQL-Error: ".mysql_error());
Fehler wenn nicht dann gib mal $SQL aus....

Verfasst: 10.10.2004 17:05
von PhilippK
Füg mal nach

Code: Alles auswählen

$table_session = "phpbb_session"; // Par défaut phpbb_session 
ein:

Code: Alles auswählen

$lettre = ( isset($HTTP_GET_VARS['lettre']) ) ? intval($HTTP_GET_VARS['lettre']) : FALSE;
Gruß, Philipp