login  Naam:   Wachtwoord: 
Registreer je!
 Forum

while loop met alfabet

Offline kenzo - 24/04/2008 16:34
Avatar van kenzoPHP beginner is er een while loop met het alfabet?


dus niet 1 tot en met bv 14

maar met bijvoorbeeld de letters die ik opgeef in een array ofzo?

A - B - C - D - E - ... - X - Y - Z - 0/9



Zoiets?


Bedankt

Anders moet ik de query 27x uitvoeren  

18 antwoorden

Gesponsorde links
Offline Rens - 24/04/2008 16:38
Avatar van Rens Gouden medaille

Crew algemeen
Met de volgende 2 functies is dit heel makkelijk te maken:
PHP.net: range
PHP.net: implode
  1. <?PHP
  2. $aLetters = range("a", "z");
  3. $sLetters = implode(" - ", $aLetters):
  4. echo $sLetters;
Offline jelle - 24/04/2008 16:39
Avatar van jelle PHP beginner je maakt een array met alle letters van het alfabet en leest die uit met een for loopje
Offline kenzo - 24/04/2008 16:39
Avatar van kenzo PHP beginner en hoe laat ik hem beginnen en aflopen?
Offline ikki007 - 24/04/2008 16:46
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Ehm, volgens mij nog altijd een foreach loop jelle en sander, alleen de manier van rens lijkt me stukken makkelijker!
Offline Rens - 24/04/2008 16:50
Avatar van Rens Gouden medaille

Crew algemeen
Wat Kr4nkz1n zei voordat hij vond ik dat kinderachtig deed:
  1. <?PHP
  2. For($sAlpha = 'a'; $sAlpha != 'aa'; $sAlpha++)
  3. {
  4. echo $sAlpha;
  5. }
Offline kenzo - 24/04/2008 16:50 (laatste wijziging 24/04/2008 16:52)
Avatar van kenzo PHP beginner Bedankt Rens,

Precies wat ik nodig heb!
Offline Rens - 24/04/2008 16:53
Avatar van Rens Gouden medaille

Crew algemeen
Maak een query met een order by.
Dan maak je een var aan, en in die var zet je telkens van het woord de eerste letter.
Zo kun je kijken of je alweer bij een nieuwe letter bent of niet.
  1. <?PHP
  2. $sQuery = "SELECT * FROM <tbl> ORDER BY <veld> ASC";
  3. $rResult = MySQL_Query($sQuery) or die(MySQL_Error());
  4. $sLetter = '';
  5. while($aFetch = MySQL_Fetch_Assoc($rResult))
  6. {
  7. if($sLetter != subStr($aFetch['veld'], 0, 1))
  8. {
  9. // volgende letter
  10. $sLetter = subStr($aFetchVeld, 0, 1);
  11. }
  12. // nog steeds dezelfde letter
  13. }

Hoop dat je begrijpt wat ik bedoel? 
Offline Kr4nKz1n - 24/04/2008 17:03 (laatste wijziging 24/04/2008 17:04)
Avatar van Kr4nKz1n Onbekend
  1. For($sAlpha = 'A'; $sAlpha != 'AA'; $sAlpha++)
  2. {
  3. $aCharacter[] = $sAlpha;
  4. }
  5. $aCharacter[] = '0-9';
  6.  
  7. $qSelect = Mysql_Query("SELECT * FROM tabel WHERE username REGEXP '^[".$_GET['character']."]'");
  8. }


Zoiets proberen...
Offline kenzo - 24/04/2008 17:05
Avatar van kenzo PHP beginner bedankt, heb alles al.


(Misschien nog een overig vraagje)

Ik heb nu letters A t'm Z

Kan ik daar makkelijk 1 waarde bij krijgen die alles pakt van 0 t'm 9?


Of moet ik dat gewoon op een andere manier doen?
Offline Kr4nKz1n - 24/04/2008 17:08 (laatste wijziging 24/04/2008 17:09)
Avatar van Kr4nKz1n Onbekend Zie mijn reactie...

Gewoon 0-9.

Wat is het doel van het uit eindelijke script?

Alleen de gebruikersnamen o.i.d. ophalen die beginnen met die bepaalde letter of een cijfer?
Offline kenzo - 24/04/2008 17:15
Avatar van kenzo PHP beginner
Kr4nKz1n schreef:
Zie mijn reactie...

Gewoon 0-9.

Wat is het doel van het uit eindelijke script?

Alleen de gebruikersnamen o.i.d. ophalen die beginnen met die bepaalde letter of een cijfer?



Ik krijg deze fout:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/shamrock/public_html/paginas/letter.php on line 9



Ik wil de code gebruiken om merken te laten rangschikken van a t'm z en een tabel erbij met alles wat begint van 0 t'm 9


De letters A t'm Z heb ik al:

http://shamrock...a=merk.php


Dit is het script van rens.
Offline Kr4nKz1n - 24/04/2008 17:28
Avatar van Kr4nKz1n Onbekend Welk script van Rens heb je gebruikt dan?

Met die SubStr?

En iig als je alleen getallen wilt doe je.
  1. $qSelect = Mysql_Query("SELECT * FROM tabel WHERE brand REGEXP '^[0-9]'");}
Offline kenzo - 24/04/2008 17:37 (laatste wijziging 24/04/2008 17:39)
Avatar van kenzo PHP beginner
  1. <?PHP
  2. For($sAlpha = 'a'; $sAlpha != 'aa'; $sAlpha++)
  3. {
  4. echo $sAlpha;
  5. }



Ok, ik zal kijken hoe ik dat moet doen met de REGEXP '^[0-9]'");}


PS: Begint het dan met getallen of mogen het alleen getallen zijn in de naam?

3_naam
of

44444
Offline Kr4nKz1n - 24/04/2008 17:41 (laatste wijziging 24/04/2008 17:53)
Avatar van Kr4nKz1n Onbekend Het begint met getallen.
De ^ geeft aan dat hij aan het begin controleert.

En die andere was ook van mij 
edit
Mare ga je nu echt 27 Query`s uitvoeren?

Misschien kun je in die for-loop alles in een array plaatsen en daarna uitlezen.

  1. //Array aanmaken
  2. $aCharacter = Array();
  3.  
  4. //Je maakt een query die alle brandnames pakt
  5. $qSelect = Mysql_Query("SELECT brandname FROM brands ORDER BY brandname");
  6. //Die fetch je
  7. While($qBra = Mysql_Fetch_Assoc($qSelect))
  8. {
  9. //Controleer de eerste karakter, indien dit een nummer is geef je NUMERIC terug, andere de letter
  10. $sFirstCharacter = Is_Numeric($qBra['brandname']{1}) ? 'NUMERIC' : $qBra['brandnam']{0};
  11. //Zet het in de array, als key gef je de eerste karakter
  12. $aCharacter[$sFirstCharacter][] = $qBra['brandname'];
  13. }
  14.  
  15. //For-loop om alle alfabet letters te krijgen
  16. For($sAlpha = 'A'; $sAlpha != 'AA'; $sAlpha)
  17. {
  18. //For-loop om alle brandnames van een bepaalde letter te krijgen
  19. For($iAlpha = 0; $iAlpha < Count($aCharacter[$sAlpha]); $iAlpha)
  20. {
  21. //De brandname weergeven
  22. echo $aCharacter[$sAlpha][$iAlpha];
  23. }
  24. }
  25.  
  26. //For-loop om alle brandnames die beginnen met een getal te pakken
  27. For($iNumeric = 0; $iNumeric < Count($aCharacter['NUMERIC']); $iNumeric++)
  28. {
  29. //De brandname weergeven
  30. echo $aCharacter['NUMERIC'][$iNumeric];
  31. }


Probeer zoiets.

edit
Even comment bij gezet zodat je het enigzins snapt.
Offline kenzo - 24/04/2008 17:42
Avatar van kenzo PHP beginner ow sorry

maar dat werkt in ieder geval goed

Bedankt daarvoor!  
Offline jc2 - 24/04/2008 18:39
Avatar van jc2 PHP interesse je website ziet er grafisch wel mooi uit kenzo
Offline kenzo - 24/04/2008 18:43
Avatar van kenzo PHP beginner bedankt,

maar het zijn geen 27 loops...


ik heb met deze code:

  1. <?PHP
  2. For($sAlpha = 'a'; $sAlpha != 'aa'; $sAlpha++)
  3. {
  4. echo $sAlpha;
  5. }


de 26 letters van het alfabet gepakt, en nog 1 extra query voor de cijfers.

Hele code:

Plaatscode: 7499
Offline Kr4nKz1n - 25/04/2008 00:18 (laatste wijziging 25/04/2008 00:19)
Avatar van Kr4nKz1n Onbekend Dat is jammer, want nu gebruik je echt absurd veel querys. Wat ook kan is dat je een query uitvoert met ORDER BY brandname, en controleren of de eerste karakter hetzelfde is met de vorige.

  1. $sPreviousFirstCharacter = 'NUMERIC';
  2. //Je maakt een query die alle brandnames pakt
  3. $qSelect = Mysql_Query("SELECT brandname FROM brands ORDER BY brandname");
  4. //Die fetch je
  5. While($qBra = Mysql_Fetch_Assoc($qSelect))
  6. {
  7. $sFirstCharacter = Is_Numeric($qBra['brandname']{1}) ? 'NUMERIC' : $qBra['brandnam']{0};
  8. If($sFirstCharacter != $sPreviousFirstCharacter)
  9. {
  10. //Vorige html tabel afsluiten, nieuwe openen.
  11. }
  12. $sPreviousFirstCharacter = $sFirstCharacter;
  13. }


Zoiets. Veel plezier ermee.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.335s