Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  15 3441
Hey hey,

Jeg er relativt ny i forhold til php, og prøver å lære meg litt samtidig som jeg prøver å bygge en side. Men det kan jeg love dere at ikke er lett.

Men hvertfall koden jeg prøver å få til å virke gir ingen output, men her er den:

Kode

require 'header.php';

include 'footer.php';

class index{
    public function homepage() {
        global $pdo;
        
        $query=$pdo->prepare("SELECT * FROM sites");
        $query->execute();
        
        return $query->fetchAll();
        print_r($query);
    }
}

$index = new index;
$homepage = $index -> homepage();


$smarty -> assign("index",$homepage);
Noen som vet hvorfor denne ikke virker?
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
new index(), tipper jeg?

Hvorfor skal dette være en klasse uansett?
Vet ikke om du mener at du ikke få output fra print_r i funsjonen din eller fra smarty (som jeg ikke er kjent med). For førstnevnte må du ha print_r($query) før du returnerer fra funksjonen, for sistnevnte skulle jeg tro du må kalle en eller annen render- eller displaymetode.
Sist endret av newsflash; 29. mai 2014 kl. 10:26.
For å finne rota til problemet OG gjøre det lettere for deg i fremtiden må du slå på visning av alle feilmeldinger på din lokale PHP-installasjon.
Trådstarter
13 0
Altså i templatefilen "index.tpl" så har jeg {$homepage} så den skal jo kalle på den funksjonen som er på index.php.

print_r($query) i funksjonen er prøvd, samme med print_r($homepage) utenfor funksjonen.
Problemet er at uansett så vil den ikke gi "output", uansett inholdet i funksjonen.
print_r har jeg der bare for å se om jeg får kontakt med databasen

Den ligger i en klasse, som beskrevet over(jeg trur jeg beskrev det over) at jeg er noob i php, så da vil jeg gjerne lære meg det. Og jeg sitterfast på funskjons og klasser.

$index = new index(); er også prøvd

localhost viser kun "Array ( )"
OOP er vel ikkje akkurat første emne man starter med, men slik gjør du det.

Lage en klasse:

Kode

class my_class
{
	private $key;
	private $value;

	public function __construct ( $key, $value )
	{
		$this -> key 	= $key;
		$this -> value 	= $value;
	}

	public function __toString ( )
	{
		return $this -> key . " : " . $this -> value . "\n";
	}
}
Lage en ny instanse av klassen:

Kode

$mc = new my_class ( "Website", "freak.no" );
Dette vil føre til at __construct ( ) methoden i klassen blir kjørt.

Også printe klassen ut:

Kode

echo $mc;
Dette vil føre til at methoden __toString ( ) kjøres.


Output:

Kode

Website : freak.no
Sist endret av 0xFF; 29. mai 2014 kl. 18:52.
Trådstarter
13 0
Okay, da følte jeg meg veldig lite klok, for dette skjønte jeg ingen ting av.

Men hvis du setter det i en setting som passer til mine koder da, hvordan ville du gjort det?

Blir også veldig glad, om du kan fortelle litt om hva det gjør eller hvorfor du gjør det slik
Sist endret av Wishcloud; 29. mai 2014 kl. 21:10.
Jeg ville først lært meg litt grunnleggende PHP før jeg ga meg ut på å kode en hjemmeside. Da du tydeligvis ikkje har mer kunnskap innen emne enn man kan tilegne seg løpet av 5 timer.
Trådstarter
13 0
Jobber med saken, men alle har hver sin måte å lære på.

Skal jeg kunn sitte å lese om det, så husker jeg ikke hva jeg har lest etterpå.

Problem Solved, mine 5 timer kunnskap løste saken alike vel. Lønner seg å se om jeg har skrevet riktig i databasen...
Fa** jeg føler meg dum som har sitti med dette problemet så lenge -.-
Sist endret av Wishcloud; 29. mai 2014 kl. 22:00. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Avventende
nudo's Avatar
Wishcloud: Til orientering, vi lever i 2014, hva med å ta en titt på AngularJS sin 2 way data binding? I de fleste tilfeller er AngularJS tilnærmingen vesentlig bedre enn smarty.
Trådstarter
13 0
Sitat av nudo Vis innlegg
Wishcloud: Til orientering, vi lever i 2014, hva med å ta en titt på AngularJS sin 2 way data binding? I de fleste tilfeller er AngularJS tilnærmingen vesentlig bedre enn smarty.
Vis hele sitatet...
Selv om at vi lever i 2014, så betyr ikke det at alle vet hva AngularJS er for noe, altså jeg har aldri hørt om det.

En annen ting, så hadde jo ikke det noen ting med spørsmålet mitt å gjøre.
Å anbefale AngularJS til en nybegynner er dødfødt. Egentlig vil jeg påstå at Smarty også er noe man bør vente med til man har et par prosjekter bak seg.
Innen objektorientert programmering (uavhengig av språk) er det en fordel å lære seg grunnleggende prinsipper. Jeg kan forsøke å forklare litt..

Et objekt er en realisering av klassen din. Du lager nye objekter ved å skrive new og klassenavnet. Klassen blir da en abstrakt beskrivelse av hva deler av programmet ditt skal gjøre. Det er vanlig å lage objekter av ting som skal skapes og fjernes ved jevne mellomrom.

Klassen inneholder felter og metoder, som representerer hva objektet ditt gjør og hvordan det skal gjøres. Metodene bestemmer hvordan spesielle hendelser skal utføres, og inneholder gjerne en sjekk av parametre som sendes inn til metodene, slik at du får et konsistent miljø med feltverdier som passer til objektet. Typisk vil man sjekke om tall er innenfor et intervall eller liknende.

Metodene slutter (generelt) å prosessere videre når man skriver return. Return betyr at metoden skal returnere noe, hva dette noe er avhenger av klassen og metoden. I din kodesnutt vil metoden slutte å prosessere etter at du har skrevet return, og vil aldri nå print_r-delen av koden din.

Ellers er det vanlig å flytte klasser til egne filer, slik at disse enkelt kan inkluders og brukes flere steder. Avhengig av hvordan du har planer om å strukturere koden din, vil det derfor kunne være hensiktsmessig å trekke klassen index ut i egne filer, som du senere kan benytte på andre områder. Alternativt så trekker du ut de delene av sidene som gjøres ofte. Typisk vil en meny kunne trekkes ut til en egen fil, for å bli inkludert på andre sider som du legger til senere. På denne måten har du en enkel fil for å vedlikeholde menyen (navigasjonen) på siden din, uten å måtte endre dette flere steder.
Trådstarter
13 0
Tusen takk for et godt svar.

Da forsto jeg litt mer
Avventende
nudo's Avatar
Det hosjmeister ikke nevner, eller tar for gitt i det han skriver er at klassen er en arkitekttegning av objektet, mens etter du har skrevet new fyller du objektet opp med de aktuelle data for dette tilfellet.

Sitat av fuzzy76 Vis innlegg
Å anbefale AngularJS til en nybegynner er dødfødt. Egentlig vil jeg påstå at Smarty også er noe man bør vente med til man har et par prosjekter bak seg.
Vis hele sitatet...
Men å plage nybegynnere med å gå veien om server side templating er veien å gå?

Templating med AngularJS: https://docs.angularjs.org/tutorial/step_02

Funker flott i HTML5 og SVG
Sist endret av nudo; 31. mai 2014 kl. 13:34. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av nudo Vis innlegg
Det hosjmeister ikke nevner, eller tar for gitt i det han skriver er at klassen er en arkitekttegning av objektet, mens etter du har skrevet new fyller du objektet opp med de aktuelle data for dette tilfellet.

Men å plage nybegynnere med å gå veien om server side templating er veien å gå?

Templating med AngularJS: https://docs.angularjs.org/tutorial/step_02

Funker flott i HTML5 og SVG
Vis hele sitatet...
Javascript er greit til sitt bruk. Men jeg er såpass gammeldags jeg vil råde TS til å holde seg unna Javascript på server-side, bruk javascript til det den var designet for. Bruk språk som er laget for server-side scripting, som PHP, Python, Ruby eller CGI hvis man er virkelig oldschool hardcore.

Og utfra forklaringen rundt nøkkelordet 'new' så kan jeg konkludere med at eneste språket du skriver må være Javascript.