[erweitert] Wie sortiere ich nach Buchstaben ?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Jungteichbauer
Mitglied
Beiträge: 413
Registriert: 30.03.2003 11:45
Wohnort: Saarland
Kontaktdaten:

[erweitert] Wie sortiere ich nach Buchstaben ?

Beitrag 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:
Zuletzt geändert von Jungteichbauer am 20.10.2004 00:56, insgesamt 2-mal geändert.
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag 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
Benutzeravatar
Jungteichbauer
Mitglied
Beiträge: 413
Registriert: 30.03.2003 11:45
Wohnort: Saarland
Kontaktdaten:

Beitrag 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 ?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Poste doch mal die Tabellenstruktur.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Und dazu das Querry in $sql bitte.

Grüße
Dennis
Benutzeravatar
Jungteichbauer
Mitglied
Beiträge: 413
Registriert: 30.03.2003 11:45
Wohnort: Saarland
Kontaktdaten:

Beitrag 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>";
}
?>
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Ich vermute gerade, dass $lettre nicht richtig übergeben wird. Kannst du mal die Zeile posten, wo die Variable initialisiert wird?

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Jungteichbauer
Mitglied
Beiträge: 413
Registriert: 30.03.2003 11:45
Wohnort: Saarland
Kontaktdaten:

Beitrag 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();

?>
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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....
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Antworten

Zurück zu „Coding & Technik“