Hoe krijg ik book_title geordend?

  • Onderwerp starter Onderwerp starter koja
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

koja

Gebruiker
Lid geworden
19 aug 2010
Berichten
7
Mijn vraag lijkt makkelijk maar is net iets moeilijker. Wat doe ik nu?
PHP:
<?php
// Run
	$query = "SELECT book_isbn_13, book_title FROM BOOK ORDER BY book_title";

	$result = mysqlQuery($query);
// Geef MySQL result

// Alfabet lijst genereren
	$arrList = array_merge(array('0-9'), range('A','Z'));
	foreach ($arrList as $value) {
	echo '<a href="?menuid=1&p=boeken&letter=' . $value . '">' .
	$value . '</a>&nbsp;';
	}
	echo "<br><br>";
	if(!isset($_GET['letter'])){
// Title lijst genereren	
		foreach ($result as $value){		
		$alfabet = substr($value['book_title'], 0,1);
		echo $alfabet."<br>";
			foreach ($result as $value){			
				if(substr($value['book_title'], 0,1) == $alfabet){
					echo $value['book_title']. "<br>";
					}
			}		
		}		
		} else {
		foreach ($result as $value){		
		$alfabet = substr($value['book_title'], 0,1);
			if($_GET['letter'] == $alfabet){
				echo $value['book_title']. "<br>";
				}
		}
	}
?>

En wat wil ik. Ik wil een lijst van titels op alfabet. Dit resultaat krijg ik ook uit de database.
Code:
print_r($result)
Array ( [0] => Array ( [book_isbn_13] => 9789062492039 [book_title] => Al het water van de zee ) [1] => Array ( [book_isbn_13] => 9789062492033 [book_title] => Alle kleuren van de regenboog ) [2] => Array ( [book_isbn_13] => 9789062495313 [book_title] => De dealer ) [3] => Array ( [book_isbn_13] => 9789062491988 [book_title] => Een lange reis op korte pootjes ) [4] => Array ( [book_isbn_13] => 9789062492800 [book_title] => Kom uit het ei, kleintje ) [5] => Array ( [book_isbn_13] => 9789062492107 [book_title] => Ontvoerd ) [6] => Array ( [book_isbn_13] => 9789062495283 [book_title] => Top Secret ) )

Ik wil graag een lijst hebben zoals dit:
A
Al het water van de zee
Alle kleuren van de regenboog
D
De dealer
E
Een lange reis op korte pootjes
K
Kom uit het ei, kleintje
O
Ontvoerd
T
Top Secret

Alleen ik krijg nu met deze code 2x A. Omdat hij 2x de titel A heeft in de database. Ik heb dit ook al geprobeerd met een for loop. Volgens mij doe ik iets goeds fout.

Wie zou mij hiermee kunnen helpen?
 
Distinct

Wat bedoel je precies met 2x de titel A in je database? Als je 2x hetzelfde boek bedoelt, kan je dit makkelijk oplossen door ipv SELECT book_title -> SELECT DISTINCT(book_title). DISTINCT filtert alle dubbele records uit je resultaat. Hoop dat je hier iets mee kan ;).
 
Bedankt voor het reageren.
Maar wat ik bedoel dat ik 2 dezelfde titels heb die met een a beginnen.
Als resultaat krijg ik nu:

A
Al het water van de zee
Alle kleuren van de regenboog
A
Al het water van de zee
Alle kleuren van de regenboog
D
De dealer
E
Een lange reis op korte pootjes
K
Kom uit het ei, kleintje
O
Ontvoerd
T
Top Secret

Misschien nog niet gevraagd maar waarom ik een isbn nr ophaal? Dat is omdat mijn isbn nummer een PK is in de DB. Ik geeft dit isbn nummer straks mee met een titel. Zodat mensen op de titel kunnen klikken om informatie over het boek op te vragen.
 
Tijdens het eten dacht ik om anders een array uit te lezen met het alfabet. Misschien een hack maar het werkt wel aardig. Alleen heb ik bijvoorbeeld geen titels met een Y. Wie weet hoe ik de alfabet dat niet weer geef?
Dit is mijn hack:

PHP:
$alphabet = array ("A","B","C","D","E","F","G","H","I","J","K","L","M",
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z");

foreach ($alphabet as $value){		
		echo $value."<br>";
			foreach ($result as $book_title){			
				if(substr($book_title['book_title'], 0,1) == $value){
						echo $book_title['book_title']. "<br>";	
					}
			}		
		}
(EDIT:Elke titel begint in de database met een hoofdletter. Maar ik ga hier nog wel even een check voor bouwen of de result ook een hoofdletter heeft aan het begin.)
Misschien nog een loop hier om heen? om te kijken of er wel boeken zijn met een a, b of c enzovoort.
Pfff... In ieder geval iedereen alvast super bedankt.
 
Laatst bewerkt:
Je kan je check in je if gewoon lowercase doen.. met de functie strtolower() kan je de hem omzetten naar een kleine letter ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan