Opmaak van een kleine Dynamische toepassing (CMS)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met het maken van een kleine dynamische testpagina (enkel voor opleidingsdoeleinden voor mezelf)

Ik heb een tabel "languages" in Mysql en werk met PHP en PDO (met PDO ben ik ook bezig in zelfstudie)

IDtaal_nltaal_frtaal_en
1NaamNomeName
2VoornaamPrenomeFirstname
3NummerNumeroNumber



Ik heb in mijn PHP/HTML pagina een formulier waarvan ik de labels wil veranderen naar de keuze van de taal.

Ik heb bvb een Query (als voorbeeld):

code:
1
2
3
$query = $pdo->prepare("SELECT taal_nl FROM languages");
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC)


en in mijn label zet ik dan bvb:

code:
1
<label for="name" class="labelname"><?php echo $row['*******'];?></label><input type="text" name="name" id="name" class="inputname" onclick="fncCheck();"/>


Mijn vraag hier gaat vooral over die '*******' hierboven. Wat moet ik invullen om net daar die 'Naam', 'Nom' of 'Name' te krijgen.

ik dacht om het op deze manier te schrijven. Dan mag ik dat invullen bij iedere input en lijkt mij dit nogal lang...
code:
1
2
3
4
5
<?php
        $query = $pdo->prepare("SELECT taal_nl FROM languages WHERE id == 1");
                $query->execute();
                $row = $query->fetch(PDO::FETCH_ASSOC)
?>


thx voor de hulp!

Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
$row is een array met arrays lijkt me. Daar kan je dus let een loopje of een foreach overheen gaan om elke row te krijgen. Je kan je resultaat beter $rows noemen ofzo, om dat het er meerdere zijn.

Ik weet niet zeker of PDO je alle rows in een keer geeft of dat je een assoc fetch moet doen voor elke volgende row die je wil hebben.

In je tabel: $row['*******'] dat moet dus een kolomnaam zijn. Als jij de kolommen ID, taal_nl, taal_fr en taal_en hebt kan je daar dus uit kiezen.

Als je niet weet wat er in een array zit kan je tussendoor ergens array_dump of var_dump of print_r doen om te kijken wat er in zit, of je gebruikt een debugger.

Verder is je query uit het 2e stukje code niet correct. Ga eerst (in bijv. phpmyadmin) kijken wat de juiste query is ;)

[ Voor 44% gewijzigd door johnkeates op 25-01-2014 15:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
johnkeates schreef op zaterdag 25 januari 2014 @ 15:11:
$row['*******'] dat moet dus een kolomnaam zijn. Als jij de kolommen ID, taal_nl, taal_fr en taal_en hebt kan je daar dus uit kiezen.

Als je niet weet wat er in een array zit kan je tussendoor ergens array_dump of var_dump of print_r doen om te kijken wat er in zit, of je gebruikt een debugger.
Wel dat is het juist als ik daar mijn kolom zomaar inplaats dan krijg ik toch gewoon mijn volledige Array? Ik moet toch ergens kunnen kiezen welke rij ik wil tonen?

Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Verwijderd schreef op zaterdag 25 januari 2014 @ 15:13:
[...]


Wel dat is het juist als ik daar mijn kolom zomaar inplaats dan krijg ik toch gewoon mijn volledige Array? Ik moet toch ergens kunnen kiezen welke rij ik wil tonen?
Ik was je voor, zie mijn edit ;)

Als je alle rows in een keer ophaalt kan je ze dus allemaal laten zien.
Als je maar een specifieke row wil, dan moet je dus een query schrijven die maar 1 row teruggeeft.

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 18:11
fetch haalt maar 1 enkele rij op van de resultaatset.

fetchAll haalt alles op en stopt het in een multi-dimensionale array.

Wat ik zou doen in dit specifieke geval:

- De id en de taalspecifieke kolom ophalen en een multi-dimensionale array verkrijgen dmv fetchAll
- De multidimensionale array doorgeven aan een functie a la "getLanguageValueForId($array,$id)"
- Die functie doorloopt je array, zoekt de match en returnt deze waarde.

Edit:

Een vraagje voor jou: wat ga je doen als je nog een nieuwe taal wilt toevoegen? Misschien is het beter eerst eens te kijken hoe je in je databank vertalingen kunt bijhouden voor x talen...

[ Voor 18% gewijzigd door azerty op 25-01-2014 16:58 ]


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
Een tip: gettext

Doet precies wat je wilt + er is geen DB nodig, scheelt al weer wat resources. Succes :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wsitedesign schreef op zaterdag 25 januari 2014 @ 16:56:
fetch haalt maar 1 enkele rij op van de resultaatset.

fetchAll haalt alles op en stopt het in een multi-dimensionale array.

Wat ik zou doen in dit specifieke geval:

- De id en de taalspecifieke kolom ophalen en een multi-dimensionale array verkrijgen dmv fetchAll
- De multidimensionale array doorgeven aan een functie a la "getLanguageValueForId($array,$id)"
- Die functie doorloopt je array, zoekt de match en returnt deze waarde.

Edit:

Een vraagje voor jou: wat ga je doen als je nog een nieuwe taal wilt toevoegen? Misschien is het beter eerst eens te kijken hoe je in je databank vertalingen kunt bijhouden voor x talen...
Thx voor de tip! Wel mijn volgende uitdaging is om een admin pagina op te maken waarin ik één of meerdere kolommen aanmaak door middel van een input. Die input in een variabele te stoppen en ergens een update van men tabel proberen te doen om een kolom extra te creëren. Geen idee of dit mogelijk is maar het is dan ook de essentie van mijn zelfstudie om dat te ontdekken.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Verwijderd schreef op maandag 27 januari 2014 @ 08:05:
Thx voor de tip! Wel mijn volgende uitdaging is om een admin pagina op te maken waarin ik één of meerdere kolommen aanmaak door middel van een input. Die input in een variabele te stoppen en ergens een update van men tabel proberen te doen om een kolom extra te creëren. Geen idee of dit mogelijk is maar het is dan ook de essentie van mijn zelfstudie om dat te ontdekken.
Dit is niet hoe dit normaal opgelost wordt. Normaliter heb je een talen tabel, een 'teksten' tabel, en dan per taal en per label een koppeling tussen die twee. Schema-changes voor het toevoegen van een taal is not-done.

https://niels.nu

Pagina: 1