• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

where mit order by - Problem

Die Zahl

Neues Mitglied
Hallo liebe Forumgemeinde,

ich habe mich heute Nacht über Google hier her verirrt und nach langen Suchen und viel Kaffee habe ich es mittlerweile fast aufgegeben.

Ich hoffe ihr könnt mir helfen.

Mein Problem:
Code:
$sqlbefehl = "SELECT * FROM lst_list WHERE show='1' ORDER BY rank ASC";
Damit möchte ich bezwecken, das alle Daten von lst_list raus sucht, welche den Wert "show" auf 1 haben, zudem soll nach dem "rank" (1-9) sortiert werden.

Also ich sehe in diesem Befehl kein Problem, dennoch meldet die Seite:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/studio-y.de/httpdocs/ogame/test.php on line 39
Die Zeile 39 ist die oben genannte.

Ich habe die ganze Nacht an diesem Fehler hängen geblieben. Ich weis nicht mehr weiter. Ich sehe das Problem einfach nicht.

Jeoch funktioniert es, wenn ich ORDER BY nicht verwende.

Fals es hilft, hier der gesamte Code in vereinfachter Form:
Code:
$sqlbefehl = "SELECT * FROM lst_list WHERE show='1' ORDER BY rank ASC";
$exec3  = mysql_query($sqlbefehl, $serverid);

?>
<table border="0" width="100%">
<?
while ($data1 = mysql_fetch_array ($exec3)) {
?>
    <tr>
        <td align="left"><a href="<? echo $url; ?>" target="_BLANK"><? echo utf8_decode($data1[name]); ?></a></td>
        <td align="left"><img src="<? echo $page; ?>/images/icons/class/<? echo $data1[classid]; ?>.gif"> <img src="<? echo $page; ?>/images/icons/race/<? echo $data1[usrid]; ?>-<?echo $data1[sex]; ?>.gif"></td>
        <td>&nbsp;</td>
        <td align="left"><img src="images/rank/rank<? echo $data1[rank]; ?>.jpeg"></td>
    </tr>

<? } ?>
</table>
Laut Handbuch sollte dies funktionieren. Ich weis nicht mehr weiter.
Ich hoffe, ihr könnt mir helfen.

Danke schonmal an alle, die antworten.

Mfg
 
Werbung:
mach mal hinter das mysql_query folgende zeile:
or die(mysql_error));

damit wird er dir sagen wo der fehler liegt...
 
Code:
[B]Parse error[/B]:  syntax error, unexpected T_LOGICAL_OR in [B]/var/www/vhosts/studio-y.de/httpdocs/ogame/test.php[/B] on line [B]32[/B]
Ich verstehe es nicht.... Laut meinen Büchern udn das, was mir google ausspuckt ist mein sql Befehl durchaus durchführbar. Schreibfehler oder ähnliches habe ich schon offt überprüft.
Wenn ich ORDER BY weck lasse, dann geht es... ist halt nur nicht sotiert und dann ziehmlich unübersichtlich :/
- edit -
Nachtrag: in Zeile 32 steht nun der oben genannte sql-Befehl
 
Werbung:
Dann gibt es vermutlich das Feld rank nicht. Führ das Statement doch mal im phpmyadmin aus, da wirst du es konkret sehen was daran nicht geht.
Hallo!

danke für deine Antwort.

Dieser Befehl geht in phpmyadmin auch nicht. Es kommt die Meldung:
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show = '1' ORDER BY rank ASC  LIMIT 0, 30' at line 1
Das LIMIT 0, 30 fügt phpmyadmin immer mit drann.

Hier der Aufbau der Tabelle:
Code:
-- 
-- Tabellenstruktur für Tabelle `lst_list`
-- 

CREATE TABLE `lst_list` (
  `id` int(11) NOT NULL auto_increment,
  `ico` varchar(100) default NULL,
  `classid` varchar(100) default NULL,
  `genderId` varchar(100) default NULL,
  `level` varchar(100) default NULL,
  `name` varchar(100) default NULL,
  `raceid` varchar(100) default NULL,
  `rank` varchar(100) default NULL,
  `url` varchar(100) default NULL,
  `show` varchar(100) NOT NULL default '0',
  `sex` varchar(100) NOT NULL default '0',
  `hallotext` text,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=54 DEFAULT CHARSET=utf8 AUTO_INCREMENT=54 ;
Sowohl "show" als auch "rank" enthalten jeweils nur eine Zahl. Ich verstehe nur nicht, warum das mit dem ORDER BY nicht klappt. Gibt es vielleicht eine Alternative?

Mfg
 
Umgib die Feldnamen sowie den Tabellennamen mal mit Backticks. Vermutlich entsprechen deren Namen einem SQL-Befehl wodurch es zu dem Problem kommt.

Code:
SELECT * FROM `lst_list` WHERE `show` = '1' ORDER BY `rank` ASC
 
Werbung:
Umgib die Feldnamen sowie den Tabellennamen mal mit Backticks. Vermutlich entsprechen deren Namen einem SQL-Befehl wodurch es zu dem Problem kommt.
Das war es! Vielen lieben dank. Da währe ich nie drauf bekommen.
Hab diese "Backticks" sonst nie benutzt. Hatte zwar von diesen "Bad-Words" schonmal gehört, jedoch währe ich da nicht von alleine drauf gekommen.

Ich danke euch für die Hilfe.

Mfg
 
Zurück
Oben