[Kohana] DB result eerst door functie halen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sinds een aantal dagen ben ik me aan het verdiepen in het Framework van Kohana. Om het allemaal kort en krachtig te houden... het is echt een geweldig framework.

Ondanks dat ik een aantal jaar al actief ben met het opzetten van m'n eigen php-applicaties heb ik wel het idee dat ik bijna op 0 moet beginnen om het te begrijpen. Bij Kohana zit er én een logica in en het werk snel. Bij mijn code ontbrak de logica (Althans, ik begreep het wel...) maar werkte het wel.

Nu loop ik tegen het volgende probleem op. Ik laad een tabel in uit mijn database via
PHP:
1
$results = ORM::factory('testtabel')->find_all();

Deze wordt vervolgens naar de view verzonden via
PHP:
1
$this->template->set('output',$results)

In de view gooi ik 'm door een 'foreach' om te zorgen voor het juiste resultaat:
PHP:
1
2
3
4
5
6
7
<? foreach($output as $item); ?>
          <div class="result"> 
          <div class="name"><?php echo $item->name; ?> </div>
          <div class="link"><?php echo HTML::anchor($item->link, "Linkje"); ?> </div>
          <div class="test123"><?php echo $item->stand; ?> </div>

<?php endforeach; ?>


Nu wil ik dat de waarde $item->stand; eerst door een functie gehaald wordt die ervoor zorgt dat elk teken in een aparte div terecht komt. Deze functie heb ik al geschreven en werkt. Echter is het voor mij compleet onduidelijk hoe ik deze nou koppel aan het database result. Hieronder de functie...


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Model_digitize extends Model {
public function digitize() {
    
     //Random number als placeholder voor waarde uit db
     $numb = rand(1000000, 9999999); 
     $arraynumb = str_split($numb);
     $result = "";
     foreach ($arraynumb as &$digit) {
         
      $result .= "<div class='digit'>".$digit."</div>";
      
    }
     
     
     return $result;
}


Als ik deze nou inlaadt in m'n controller met $digits = $model->digitize(); & ->set('digits', $digits) en in m'n view met print $digits; dan werkt dat gewoon.
Bottomline: een waarde uit m'n database moet door een functie gehaald worden die ervoor zorgt dat elk teken uit die waarde in een aparte div komt.

PS: het kan zijn dat er wat kleine foutjes in zijn gekomen omdat ik alles vervangen heb door fictieve namen een waardes. Voor de duidelijkheid; alles werkt alleen wil ik er iets in waarvan ik geen idee heb hoe.

Acties:
  • 0 Henk 'm!

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

Hoe bekend ben je met het [google]mvc[/google] principe?
Je wilt nu de data in unieke div's krijgen, dat is iets van de opmaak en hoeft in principe dus niet via "de database" te gebeuren. Het is iets van wat de view aangaat dus de view zich mee bezig houd, want als je in plaats van een website xml gaat versturen is dat div gebeuren toch helemala niet van belang?
Ook zou je eens ORM voorbeelden van kohana en [google]ORM[/google] moeten kijken, ik heb de indruk dat je het niet helemaal begrijpt :|

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ibmos2warp schreef op zondag 18 maart 2012 @ 19:46:
Hoe bekend ben je met het [google]mvc[/google] principe?
Je wilt nu de data in unieke div's krijgen, dat is iets van de opmaak en hoeft in principe dus niet via "de database" te gebeuren. Het is iets van wat de view aangaat dus de view zich mee bezig houd, want als je in plaats van een website xml gaat versturen is dat div gebeuren toch helemala niet van belang?
Ook zou je eens ORM voorbeelden van kohana en [google]ORM[/google] moeten kijken, ik heb de indruk dat je het niet helemaal begrijpt :|
Ik begrijp het nog niet helemaal nee, daar ben ik eerlijk over. Wel wil ik het zsm begrijpen. ;-)
Anyhow, zoals ik heb begrepen is je view niet bedoeld om functies in te stoppen. Daarvoor gebruik je de models. Maar ik kan er -wederom- naast zitten.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Een view kan je best functies inzetten, zolang het maar functies enkel voor die view zijn.

Nu wil je iets opsplitsen, dan moet je jezelf de vraag stellen : Wil ik het altijd opsplitsen of enkel en alleen maar voor deze view?

Oftewel is de opsplitsing puur iets cosmetisch (bijv uitlijning van getallen na de punt) of is het echt een integraal iets wat met de data moet gebeuren (waarbij je je weer de vervolgvraag moet stellen : Waarom splits ik het niet in de dbase al uit elkaar)

Elke keuze heeft een aantal mitsen en maren eraan verbonden. Er is geen ultieme weg.
In principe is het af te raden om functies in views te zetten (omdat het al heel snel op copy-paste neerkomt als er een andere view bij moet komen), maar als je het echt enkel in deze view nodig hebt...

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Snap niet zo heel erg het probleem?

Je kan toch gewoon:

- Controller

- Je vraagt je model om de gegevens
- Je voert je functie uit
- Je zet de waardes van je functie in een array bij je $results

- Model

- Voert gewoon je database vraag uit

- View

- Dumpt gewoon je gegevens die je hebt opgemaakt in je controller


Dus even heel snel gekeken:

Je hebt een LOOP in je controller voor de database gegevens, en dan for each de waarde "stand" (die dacht ik?) voer je even je functie uit en dit alles zet je gewoon in een var $data die je aan je naar je view stuurt.
Vervolgens hoef je in je view alleen even je items door te loopen zoals je nu al doet