login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nummer aanmaken (Opgelost)

Offline jc2 - 05/11/2008 22:48
Avatar van jc2PHP interesse Ik heb een database met songteksten, die genummerd zijn vanaf A0000000001. Het is mijn bedoeling dat elke nieuwe songtekst een nummer hoger krijgt dan het hoogste getal.
Ook moet na A9999999999 het nummer B0000000001 komen.
Hoe kan ik dit voor elkaar krijgen?
Ik ben al bezig geweest om de letter weg te halen, het nummer te verhogen en vervolgens de letter terug te zetten, maar het wil nog niet echt werken.
Ik weet dat ik beter met het id v/d database had kunnen werken, maar het is nu al bijna niet meer mogelijk dit te veranderen.

9 antwoorden

Gesponsorde links
Offline Wim - 05/11/2008 22:49
Avatar van Wim Crew algemeen hoeveel songteksten denk jij te hebben? :/
Offline Borre0 - 05/11/2008 23:04
Avatar van Borre0 Nieuw lid Hij geeft alleen een voorbeeld hé,

Maar ik denk dat je bijv een $var kan aan maken

dus $teller = '';
en elke x als er 1 bij komt moet je op een wijze $teller++ kunnen doen, mja, zo goed ben ik in dit ook niet..
Offline skillat2 - 05/11/2008 23:10
Avatar van skillat2 HTML beginner Post je tabellen is, hiermee blijft het gissen.

Je zou er een gedeelde sleutel van kunnen maken:
songtekst_letter + songtekst_id
Offline Wim - 06/11/2008 00:16
Avatar van Wim Crew algemeen volgens mij kan je beter dmv een script je id's normaal zetten (1 t.e.m. n), en vervolgens je auto_increment waarde in phpmyadmin op n+1 zetten... Gaat in de toekomst enkel voordelig uitkomen...
Offline Kr4nKz1n - 06/11/2008 09:22 (laatste wijziging 06/11/2008 18:37)
Avatar van Kr4nKz1n Onbekend
  1. // Functie om een getal naar een letter te zetten en terug
  2. function GetNumAlf($sInput)
  3. {
  4. // Array aanmaken met alles letters
  5. $aLetters = 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');
  6.  
  7. // Controleren of de input een getal is
  8. If(Is_Numeric($sInput))
  9. {
  10. // De letter die bij het getal hoort terug geven
  11. return $aLetters[$sInput];
  12. }
  13. Else
  14. {
  15. // De array omgooien
  16. $aLetters = Array_Flip($aLetters);
  17. // Het getal die bij de letter hoort terug geven
  18. return $aLetters[$sInput];
  19. }
  20. }
  21.  
  22. // Het aantal 0-en controleren en eventueel bijvoegen
  23. function CheckNulls($sInput)
  24. {
  25. // Aantal tekens tellen
  26. $iStrLenInput = StrLen($sInput);
  27.  
  28. // Controleren of het aantal tekens kleiner is dan 10
  29. If(StrLen($sInput) < 10)
  30. {
  31. // Een for-loop van 10 tot het aantal tekens
  32. For($iNull = 10; $iNull > $iStrLenInput; $iNull--)
  33. {
  34. // Een 0 erbij zetten
  35. $sInput = '0'.$sInput;
  36. }
  37. }
  38. // Terug geven
  39. return $sInput;
  40. }
  41.  
  42. // Functie waar alles om draait, het controleren
  43. function Check($sId)
  44. {
  45. // Controleren of 9999999999 al is bereikt
  46. If(SubStr($sId, 1) == 9999999999)
  47. {
  48. // Gooi hem door de GetNumAlf functie om de volgende letter te bepalen
  49. return GetNumAlf(GetNumAlf($sId{0}) + 1).'0000000000';
  50. }
  51. Else
  52. {
  53. // Tel 1 bij het getal op, en door de CheckNulls halen
  54. return $sId{0}.CheckNulls(SubStr($sId, 1) + 1);
  55. }
  56. }
  57.  
  58. // Voorbeelden
  59. echo Check('E9999999999').'<br />';
  60. echo Check('D0000283804');


astublief 

Edit
Wat commentaar erbij gezet

Ervoor gezorgt dat het aantal nullen gewoon weer ervoor komt. Niet m`n mooiste script, maar het werkt. Het moet denk ik wel anders kunnen maar kom er op dit moment niet op.

Maar het werkt.

PS: De CheckNulls functie kan inprincipe in de Check functie ingebouwd worden, maar ik vind functies nu eenmaal handig 

Edit
En? :P
Offline Joost - 06/11/2008 19:15 (laatste wijziging 06/11/2008 19:16)
Avatar van Joost PHP expert
  1. $aLetters = Array('A',... 'Z');

Kan korter:
  1. $aLetters = range('A', 'Z');


:P
Offline rredspike1 - 06/11/2008 19:18
Avatar van rredspike1 Lid hahaha  
Offline Kr4nKz1n - 06/11/2008 19:44
Avatar van Kr4nKz1n Onbekend
Medieval schreef:
[..code..]
Kan korter:
[..code..]

:P
Ik had eerst een for-loop. Ik dacht, kan ik net zo goed ff die for-loop echo`en dus 
Offline jc2 - 06/11/2008 19:49
Avatar van jc2 PHP interesse Hoi,

Bedankt allemaal.

@wimmarien [1]: nog maar 30, maar ik hoop er veel meer te krijgen, maar waarschijnlijk niet zoveel dat ik aan de B-serie moet beginnen.

@skillat2: ik ben daarvoor al te ver met mijn website. Bij de rest heb ik het getal kunnen omzeilen, maar nu moest het erbij komen.

@wimmarien [2]: het id gebruik ik al voor iets anders, waardoor ik problemen zou krijgen als ik het dubbel gebruik.

@kr4nkz1n: fantastisch! ik had wel een tip verwacht hoe ik het zou kunnen maken, maar niet zo'n heel script. 10x hoera voor jou!

@Medieval: bedankt, maar zo vind ik het ook al goed.

@rredspike1: lach me maar uit 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s