Hvordan bruke database i joomla
Moderators: sone12, Per Yngve Berg
-
- Joomla! Apprentice
- Posts: 9
- Joined: Wed Jul 14, 2010 6:34 pm
Hvordan bruke database i joomla
Jeg holder på å lage en side hvor det skal være mulig for brukeren å lagre informasjon i databasen. Denne biten er grei, og jeg har fått til dette. Men så skal det som lagres i databasen også vises på en side, slik at alle kan se hva andre har skrevet (dette skal da fungere som en slags brukerlogg). Denne biten sliter jeg med.
Altså, hvordan skal jeg få presentert dataene som er lagret i databasen på siden (artikkelen)?
Mvh
Kjetil A.
Altså, hvordan skal jeg få presentert dataene som er lagret i databasen på siden (artikkelen)?
Mvh
Kjetil A.
- Per Yngve Berg
- Joomla! Master
- Posts: 26205
- Joined: Mon Oct 27, 2008 9:27 pm
- Location: Akershus, Norway
-
- Joomla! Apprentice
- Posts: 9
- Joined: Wed Jul 14, 2010 6:34 pm
Re: Hvordan bruke database i joomla
Lager ikke denne kun rapporter basert på en tabell? Jeg ønsker å kunne trekke ut lagret info fra en tabell og vise den på siden.
En bruker skal kunne lagre info i databasen (om f. eks en anmeldelse av en cd). Deretter kan brukeren gå inn på f.eks "Se cd anmeldelser" og få opp alle anmeldelser som er skrevet.
Jeg vil også ha muligheten for å sortere anmeldelsene basert på f.eks sjanger.
Det å lagre informasjon til databasen har jeg fått til, men klarer ikke å presentere den på noen vis for brukeren (leseren).
Noen som kan hjelpe?
En bruker skal kunne lagre info i databasen (om f. eks en anmeldelse av en cd). Deretter kan brukeren gå inn på f.eks "Se cd anmeldelser" og få opp alle anmeldelser som er skrevet.
Jeg vil også ha muligheten for å sortere anmeldelsene basert på f.eks sjanger.
Det å lagre informasjon til databasen har jeg fått til, men klarer ikke å presentere den på noen vis for brukeren (leseren).
Noen som kan hjelpe?
- EivindJ
- Joomla! Explorer
- Posts: 411
- Joined: Mon Nov 17, 2008 12:16 pm
- Location: Drammen
- Contact:
Re: Hvordan bruke database i joomla
Hm, kan virke som du altså skriver dette selv, stemmer det?
Du kan bruke Joomlas innebygde funksjoner for å hente informasjon fra databasen. Hva med f.eks. noe lignende dette?:
Du kan bruke Joomlas innebygde funksjoner for å hente informasjon fra databasen. Hva med f.eks. noe lignende dette?:
Code: Select all
$db =& JFactory::getDBO();
$sql = "SELECT * from #__cd_reviews WHERE sjanger = '$sjanger'";
$db->setQuery($sql);
$row = $db->loadAssocList();
foreach($row as $cd)
{
echo $cd['name'];
echo "<br />";
echo $cd['review'];
echo "<br />";
}
-
- Joomla! Apprentice
- Posts: 9
- Joined: Wed Jul 14, 2010 6:34 pm
Re: Hvordan bruke database i joomla
Ikke helt riktig, jeg ønsker primært å finne en extension jeg kan bruke. Men slik jeg forstår det finnes det svært lite av disse som gjør det jeg ønsker?
Hvordan lager jeg min egen modul?
Hvordan lager jeg min egen modul?
- Per Yngve Berg
- Joomla! Master
- Posts: 26205
- Joined: Mon Oct 27, 2008 9:27 pm
- Location: Akershus, Norway
Re: Hvordan bruke database i joomla
Sobi2 er også en mulighet. Den har kategorier du kan bruke til sjangrene. Tillegg til Sobi2 finner du her: http://extensions.joomla.org/extensions/1113/details
-
- Joomla! Apprentice
- Posts: 9
- Joined: Wed Jul 14, 2010 6:34 pm
Re: Hvordan bruke database i joomla
Jeg vet ikke helt om jeg er klar nok på det jeg ønsker. Jeg bruker allerede en extension for å lage skjemaer og putte inndata i databasen. En bruker (leser, hvem som helst) kan nå bruke skjemaet til å lagre sin info i databasen.
Det jeg nå ønsker er å få presentert disse dataene som er lagret i databasen på en side. Jeg tror nok EivindJ er inne på hva jeg bør gjøre, og sql syntaks og spørrespråk er jeg kjent med. Det jeg ikke helt forstår er:
Om jeg skal lage en egen spørring, hvor skal denne lagres? Å skrive en spørring direkte i en artikkel er jo ikke mulig. Hvordan lager jeg egne moduler, og hvor skal disse plasseres på serveren? Og hvordan gjør jeg et kall på disse via artikklen i Joomla?
Det jeg nå ønsker er å få presentert disse dataene som er lagret i databasen på en side. Jeg tror nok EivindJ er inne på hva jeg bør gjøre, og sql syntaks og spørrespråk er jeg kjent med. Det jeg ikke helt forstår er:
Om jeg skal lage en egen spørring, hvor skal denne lagres? Å skrive en spørring direkte i en artikkel er jo ikke mulig. Hvordan lager jeg egne moduler, og hvor skal disse plasseres på serveren? Og hvordan gjør jeg et kall på disse via artikklen i Joomla?
- EivindJ
- Joomla! Explorer
- Posts: 411
- Joined: Mon Nov 17, 2008 12:16 pm
- Location: Drammen
- Contact:
Re: Hvordan bruke database i joomla
Heisann ... hvis du er litt kjent med php og sql, kan man ganske enkelt lage en joomla-komponent. Du kan f.eks. bruke en komponent-generator (http://www.alphaplug.com/index.php/prod ... nline.html). Dette gir deg en tom, men installerbar, joomla-komponent som du kan gå inn og lage kode i.
Hvis du skal lage en forholdsvis liten komponent holder det kanskje å legge all koden du ønsker inn i views/componentname/default.php
Hvis du skal lage en forholdsvis liten komponent holder det kanskje å legge all koden du ønsker inn i views/componentname/default.php

-
- Joomla! Apprentice
- Posts: 9
- Joined: Wed Jul 14, 2010 6:34 pm
Re: Hvordan bruke database i joomla
Takker 
Ett lite spørsmål i forhold til egen modul i MVC generator:
Join SQL install files.
CREATE TABLE IF NOT EXISTS #__table_name (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`published` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Hvorfor lages det en ny tabell? Kan jeg slette dette og her skrive min select spørring mot databasen ?

Ett lite spørsmål i forhold til egen modul i MVC generator:
Join SQL install files.
CREATE TABLE IF NOT EXISTS #__table_name (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`published` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Hvorfor lages det en ny tabell? Kan jeg slette dette og her skrive min select spørring mot databasen ?
- sone12
- Joomla! Champion
- Posts: 5440
- Joined: Wed Oct 11, 2006 1:12 pm
- Location: Kristiansand, Norway
- Contact:
Re: Hvordan bruke database i joomla
Du har jo allerede opprettet tabeller i databasen, så denne delen i innstallasjonsfilen kan du jo i utgangspunktet fjerne, om du kun skal lage en komponent for å vise allerede eksisterende innhold fra databasen.
Men om du skulle finne på å lage en mer helhetlig komponent som inneholder både visning samt skjema for å legge inn innhold til databasen så er det gunstig å opprette tabeller du trenger til komponenten ved innstallasjon.
Med andre ord...de tabellene du allerede har opprettet i databasen kunne blitt opprettet i innstallasjonsprosessen av komponenten.
Men om du skulle finne på å lage en mer helhetlig komponent som inneholder både visning samt skjema for å legge inn innhold til databasen så er det gunstig å opprette tabeller du trenger til komponenten ved innstallasjon.
Med andre ord...de tabellene du allerede har opprettet i databasen kunne blitt opprettet i innstallasjonsprosessen av komponenten.
Kristian P. Granrud - Global Moderator
-
- Joomla! Apprentice
- Posts: 9
- Joined: Wed Jul 14, 2010 6:34 pm
Re: Hvordan bruke database i joomla
Det finne sikke noe mer dynamisk metode for å iterere å printe ut radene i databasen?EivindJ wrote:Hm, kan virke som du altså skriver dette selv, stemmer det?
Du kan bruke Joomlas innebygde funksjoner for å hente informasjon fra databasen. Hva med f.eks. noe lignende dette?:Code: Select all
$db =& JFactory::getDBO(); $sql = "SELECT * from #__cd_reviews WHERE sjanger = '$sjanger'"; $db->setQuery($sql); $row = $db->loadAssocList(); foreach($row as $cd) { echo $cd['name']; echo "<br />"; echo $cd['review']; echo "<br />"; }
(Jeg har nå fått lest meg mer opp på MVC pattern)
- EivindJ
- Joomla! Explorer
- Posts: 411
- Joined: Mon Nov 17, 2008 12:16 pm
- Location: Drammen
- Contact:
Re: Hvordan bruke database i joomla
Hm, ja, det er ikke så dumt å følge mvc-metoden. Da må du vel kanskje gjøre noe følgende:
I modellen, legg til:
I controller, legg til:
i view.html.php, legg til:
i default.php, legg til
Jeg har ikke testet dette i det hele tatt, så det kan godt være det ikke fungerer 
I modellen, legg til:
Code: Select all
function getReviews($sjanger)
{
//koble til db
$db =& JFactory::getDBO();
// Lag din sql-query
$sql = "SELECT * FROM #__cd_reviews WHERE sjanger = '$sjanger'";
// hent resultatet
$db->setQuery($sql);
$row = $db->loadAssocList();
//hvis ingen treff, gi false
if(!$row)
{
return false;
}
//returner til controller
return $row
}
Code: Select all
function getReviews($sjanger)
{
// hvis ingen sjanger, gi false
if(!$sjanger)
{
return false;
}
//hent modell
$model =& $this->getModel();
// hent reviews
$row = $model->getReview($sjanger);
//returner resultat
return $row;
}
Code: Select all
// opprett ny instans av kontrolleren (bytt ut "komponentnavn")
$kontroll = new komponentnavnController();
//hent sjanger
$sjanger = JRequest::getVar('sjanger');
// hent reviews fra sjanger
$reviews = $kontroll->getReviews($sjanger);
//push til viewet
$this->assignRef( 'reviews', $reviews);
Code: Select all
// sjekk om du har fått noen svar
if(!$this->reviews)
{
echo "Fant ikke reviews";
}else{
// loop igjennom array med reviews
foreach($reviews as $review)
{
echo $review['name'];
echo "<br />";
echo $review['review'];
echo "<br />";
}
}
