login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[class] meer personen?

Offline lasdesigner - 08/05/2006 18:32
Avatar van lasdesignerPHP beginner Hallo, ik ben bezig met een scriptje (zodat Nemesiskoen ook nog wat te doen heeft ).

Ik wil dus (om te oefenen) een soort van klaslokaal maken. Waarin MEERDERE gegevens opgeslagen worden. Ik heb nu dit.

  1. <?php
  2.  
  3. class Klas {
  4. public $Aantalleerlingen = 0;
  5. public $leerling;
  6. private $leeftijd;
  7.  
  8. public function NieuwLeerling($naam, $leeftijd) {
  9. $this->Aantalleerlingen++;
  10. $this->leerling = $naam;
  11. $this->leeftijd = $leeftijd;
  12. }
  13.  
  14. public function VerwijderLeerling($naam) {
  15. $this->aantalLeerlingen = ($this->Aantalleerlingen - 1);
  16. }
  17.  
  18. public function Namen() {
  19. $namen = array($this->leerling);
  20. for($i = 0; $i < count($namen); $i++) {
  21. echo $namen[$i]. "<BR />";
  22. }
  23. }
  24.  
  25. private function LeeftijdBijNaam($naam) {
  26. $leeftijd = $this->leeftijd;
  27. return $leeftijd;
  28. }
  29. public function NamenVijftien() {
  30. $allenamen = array($this->leerling);
  31. for($i = 0; $i < count($allenamen); $i++) {
  32. $leeftijdje = Klas::LeeftijdBijNaam($allenamen[$i]);
  33. if($leeftijdje == 15) {
  34. echo $allenamen[$i];
  35. }
  36. }
  37. }
  38.  
  39. }
  40.  
  41. $ghv3a = new Klas;
  42. $ghv3a->NieuwLeerling('Luuk', 15);
  43. $ghv3a->NieuwLeerling('Coen', 15);
  44. $ghv3a->NamenVijftien();
  45. ?>


Maar hij geeft alleen Coen weer.. Wat doe ik verkeerd?

10 antwoorden

Gesponsorde links
Offline Simon - 08/05/2006 18:37
Avatar van Simon PHP expert $naam en $leeftijd zijn geen array's, dus overschrijft hij ze telkens
Offline lasdesigner - 08/05/2006 18:40 (laatste wijziging 08/05/2006 18:45)
Avatar van lasdesigner PHP beginner [edit] Sorry van dubbelpost, klikte 2 keer op de button, moest nog gauw [/ code] erachter zetten!

Dus kan dit:

  1. <?php
  2. class Klas {
  3. public $Aantalleerlingen = 0;
  4. public $leerling = array();
  5. private $leeftijd = array;
  6. ?>
Offline Sitefoon - 08/05/2006 18:45 (laatste wijziging 08/05/2006 18:46)
Avatar van Sitefoon Nieuw lid simon bedoeld dat je beter dit kunt doen:

  1. <?php
  2. class Klas {
  3. public $Aantalleerlingen = 0;
  4. public $leerling = array();
  5. private $leeftijd = array();
  6.  
  7. public function NieuwLeerling($naam, $leeftijd) {
  8. $this->Aantalleerlingen++;
  9. $this->leerling = $naam[$aantalleerlingen];
  10. $this->leeftijd = $leeftijd[$aantalleerlingen];
  11. }
Offline lasdesigner - 08/05/2006 18:58
Avatar van lasdesigner PHP beginner Mmm.. oké? Maar dan komt toch niet de eigen naam erin? Ik doe nu namelijk zo:

  1. <?php
  2. class Klas {
  3. public $Aantal;
  4. public $Naam = array();
  5. private $Leeftijd = array();
  6.  
  7. function NieuwLeerling($naam, $leeftijd) {
  8. $this->Aantal++;
  9. array_push($this->naam, $naam);
  10. array_push($this->leeftijd, $leeftijd);
  11. }
  12.  
  13. function Namen() {
  14. for($i = 0; $i < count($this->Naam); $i++) {
  15. echo $this->Naam[$i];
  16. }
  17. }
  18. }
  19.  
  20. $ghv3a = new Klas;
  21. $ghv3a->NieuwLeerling('luuk', 15);
  22. $ghv3a->NieuwLeerling('coen', 17);
  23. $ghv3a->Namen();
  24.  
  25.  
  26. ?>


maar dit werkt niet..?
Offline Sitefoon - 08/05/2006 19:00 (laatste wijziging 08/05/2006 19:00)
Avatar van Sitefoon Nieuw lid
  1. <?php
  2. class Klas {
  3. public $Aantal = 0;
  4. public $leerling = array();
  5. private $leeftijd = array();
  6.  
  7. public function NieuwLeerling($naam, $leeftijd) {
  8. $this->Aantal++;
  9. $this->leerling = $naam[$aantalleerlingen];
  10. $this->leeftijd = $leeftijd[$aantalleerlingen];
  11. }
Offline Stijn - 08/05/2006 19:00
Avatar van Stijn PHP expert euhm juist omgekeerd zekers 

  1. <?php
  2. class Klas {
  3. public $Aantalleerlingen = 0;
  4. public $leerling = array();
  5. private $leeftijd = array();
  6.  
  7. public function NieuwLeerling($naam, $leeftijd) {
  8. $this->Aantalleerlingen++;
  9. $this->leerling[ ] = $naam; //voegt één toe
  10. $this->leeftijd[ ] = $leeftijd; //voegt één toe
  11. }
  12. ...


@sitefoon: waar haal jij $aantalleerlingen vandaan je bedoelt zekers $this->Aantalleerlingen.
Offline Sitefoon - 08/05/2006 19:02
Avatar van Sitefoon Nieuw lid ja, ik ken eigenlijk weinig van classen daarom en ja dit is gewoon normale php (maar dan met $this>aantal)
Offline lasdesigner - 08/05/2006 19:04 (laatste wijziging 08/05/2006 19:06)
Avatar van lasdesigner PHP beginner Gelukt, dank je stijn! 
Voor de mensen die het antwoord willen weten:

  1. <?php
  2. class Klas {
  3. public $Aantal;
  4. public $Naam = array();
  5. private $Leeftijd = array();
  6.  
  7. function NieuwLeerling($naam, $leeftijd) {
  8. $this->Aantal++;
  9. $this->Naam[ ] = $naam;
  10. $this->Leeftijd[ ] = $leeftijd;
  11. }
  12.  
  13. function Namen() {
  14. for($i = 0; $i < count($this->Naam); $i++) {
  15. echo $this->Naam[$i]. "<BR />";
  16. }
  17. }
  18.  
  19. function NaamVijftien() {
  20. for($i = 0; $i < count($this->Naam); $i ++) {
  21. if($this->Leeftijd[$i] == 15) {
  22. echo $this->Naam[$i]. "<BR />";
  23. }
  24. }
  25. }
  26. }
  27.  
  28. $ghv3a = new Klas;
  29. $ghv3a->NieuwLeerling('luuk', 15);
  30. $ghv3a->NieuwLeerling('coen', 17);
  31. $ghv3a->NieuwLeerling('carolien', 15);
  32. $ghv3a->NaamVijftien();
  33.  
  34.  
  35. ?>

Edit Nog 1 ding.. Ze zeggen altijd dat je in classes (of de functies) niet mag echo'en. Hoe kan ik dit maken zonder in de classes te echo'en?
Offline Maarten - 08/05/2006 19:19 (laatste wijziging 08/05/2006 19:20)
Avatar van Maarten Erelid Je mag het wel maar het is niet altijd even logisch.

Je kan dan wel return ipv echo gebruiken. Let wel: na return wordt niks meer uitgevoerd:
return 'murfy';
return 'vinTage is kool';
dat tweede zal niet meer weergegeven worden omdat het eerste dus je functie als het ware beëindigd (en ook omdat het niet waar is, maar dat doet er niet toe)
  1. <?php
  2. function demo() {
  3. return 'aap';
  4. }
  5. // Om nu die aap op je scherm te krijgen doe je:
  6. echo demo();
  7. // Zelfde dus met die classen, als je dan echo ipv return gebruikt krijg je
  8. echo $ghv3a->NaamVijftien();
  9. ?>
Offline nemesiskoen - 08/05/2006 20:10
Avatar van nemesiskoen Gouden medaille

PHP expert
Err.... dit is het niet helemaal:

check dit voorbeeld even (staat wat uitleg bij)

http://plaatscode.be/1139/

Het kan zijn dat er fouten zijn/het nutteloos is, maar het geeft een globaal idee. Ik ben overigens bezig met iets dat je wel interessant gaat vinden. Een forum dat als database gebruik maakt van een geserialiseerd object. Zodat je objecten op een andere pagina ook kan gebruiken (initialiseer object op ene pagina, en geef waardes, roep hetzelfde object aan op een totaal andere pagina (of bij het verversen van een pagina) en gebruik deze waardes). Echt geniaal die serialize en unserialize. Ik zal het ook toevoegen aan de script-library als het eenmaal volledig af is; ik heb er nu slechts nog maar voor gezorgd dat alles _mogelijk_ is maar het toevoegen en formuliers aanmaken etc is nog niet gebeurd.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.288s