Hvordan bruke database i joomla

Generelle spørsmål relatert til Joomla! 1.5, som ikke passer i andre forum ovenfor

Moderators: sone12, Per Yngve Berg

Locked
Kjetil-A
Joomla! Apprentice
Joomla! Apprentice
Posts: 9
Joined: Wed Jul 14, 2010 6:34 pm

Hvordan bruke database i joomla

Post by Kjetil-A » Thu Jul 15, 2010 6:43 am

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.

User avatar
Per Yngve Berg
Joomla! Master
Joomla! Master
Posts: 26017
Joined: Mon Oct 27, 2008 9:27 pm
Location: Akershus, Norway

Re: Hvordan bruke database i joomla

Post by Per Yngve Berg » Thu Jul 15, 2010 2:16 pm


Kjetil-A
Joomla! Apprentice
Joomla! Apprentice
Posts: 9
Joined: Wed Jul 14, 2010 6:34 pm

Re: Hvordan bruke database i joomla

Post by Kjetil-A » Sat Jul 17, 2010 3:00 pm

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?

User avatar
EivindJ
Joomla! Explorer
Joomla! Explorer
Posts: 411
Joined: Mon Nov 17, 2008 12:16 pm
Location: Drammen
Contact:

Re: Hvordan bruke database i joomla

Post by EivindJ » Sat Jul 17, 2010 8:36 pm

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 />";
}
Trond Eivind Johnsen

[ lei en Joomla!-ekspert på www.exentra.no ]

Kjetil-A
Joomla! Apprentice
Joomla! Apprentice
Posts: 9
Joined: Wed Jul 14, 2010 6:34 pm

Re: Hvordan bruke database i joomla

Post by Kjetil-A » Sun Jul 18, 2010 5:55 am

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?

User avatar
Per Yngve Berg
Joomla! Master
Joomla! Master
Posts: 26017
Joined: Mon Oct 27, 2008 9:27 pm
Location: Akershus, Norway

Re: Hvordan bruke database i joomla

Post by Per Yngve Berg » Sun Jul 18, 2010 6:44 am

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

Kjetil-A
Joomla! Apprentice
Joomla! Apprentice
Posts: 9
Joined: Wed Jul 14, 2010 6:34 pm

Re: Hvordan bruke database i joomla

Post by Kjetil-A » Sun Jul 18, 2010 8:35 am

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?

User avatar
EivindJ
Joomla! Explorer
Joomla! Explorer
Posts: 411
Joined: Mon Nov 17, 2008 12:16 pm
Location: Drammen
Contact:

Re: Hvordan bruke database i joomla

Post by EivindJ » Sun Jul 18, 2010 8:46 am

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 :)
Trond Eivind Johnsen

[ lei en Joomla!-ekspert på www.exentra.no ]

Kjetil-A
Joomla! Apprentice
Joomla! Apprentice
Posts: 9
Joined: Wed Jul 14, 2010 6:34 pm

Re: Hvordan bruke database i joomla

Post by Kjetil-A » Sun Jul 18, 2010 9:07 am

Takker :D

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 ?

User avatar
sone12
Joomla! Champion
Joomla! Champion
Posts: 5440
Joined: Wed Oct 11, 2006 1:12 pm
Location: Kristiansand, Norway
Contact:

Re: Hvordan bruke database i joomla

Post by sone12 » Sun Jul 18, 2010 9:33 pm

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.
Kristian P. Granrud - Global Moderator

Kjetil-A
Joomla! Apprentice
Joomla! Apprentice
Posts: 9
Joined: Wed Jul 14, 2010 6:34 pm

Re: Hvordan bruke database i joomla

Post by Kjetil-A » Sun Jul 25, 2010 10:49 am

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 />";
}
Det finne sikke noe mer dynamisk metode for å iterere å printe ut radene i databasen?
(Jeg har nå fått lest meg mer opp på MVC pattern)

User avatar
EivindJ
Joomla! Explorer
Joomla! Explorer
Posts: 411
Joined: Mon Nov 17, 2008 12:16 pm
Location: Drammen
Contact:

Re: Hvordan bruke database i joomla

Post by EivindJ » Wed Jul 28, 2010 12:25 pm

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:

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

}
I controller, legg til:

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;
}
i view.html.php, legg til:

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);
i default.php, legg til

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 />";
}
}
Jeg har ikke testet dette i det hele tatt, så det kan godt være det ikke fungerer ;)
Trond Eivind Johnsen

[ lei en Joomla!-ekspert på www.exentra.no ]


Locked

Return to “Generelt”