Defo Skrevet 24. september 2014 Del Skrevet 24. september 2014 Hei! Jeg har en array ved navn $produktArray liggende i fil produkter.php. Denne filen er inkludert i header.php, ved hjelp av include. Sistnevnte er så inkludert i en fil ved navn produkt.php. I denne filen legger jeg et objekt ($produkt) til arrayen: array_push($produktArray, $produkt); I samme fil fungerer følgende: echo $produktArray[0]->navn; Overnevnte fungerer imidlertid ikke i en annen fil som også inkluderer header.php. Der får jeg "Undefined offset: 0". Help anyone? Lenke til kommentar
Thorbear Skrevet 24. september 2014 Del Skrevet 24. september 2014 Kan det være at du i den andre filen prøver å benytte $produktArray inni en funksjon?Vanskelig å si noe mer om hvorfor dette skjer uten å se innholdet i filene dine. Lenke til kommentar
Crowly Skrevet 25. september 2014 Del Skrevet 25. september 2014 Uten så se noe kode er det ikke helt lett. Header blir inkludert i (minimum) to filer, det du da legger til i $produktArray i fil1 er ikke tilgjengelig i $produktArray i fil2, noe du kanskje forventer hvis jeg forstår ting riktig? $produktArray blir opprettet på nytt i fil1 og fil2. Bruk print_r() for å kontrollere innholde i variablene echo '<pre>'.print_r($produktArray, true).'</pre>'; Det er også greit å kontrollere at det du skal bruke faktisk finnes if (isset($produktArray[0]) and is_object($produktArray[0]) and property_exists($produktArray[0],'navn')){ echo $produktArray[0]->navn; } Lenke til kommentar
Defo Skrevet 25. september 2014 Forfatter Del Skrevet 25. september 2014 (endret) Takk for tilbakemeldinger. Vil altså $produktArray behandles en unik array for hver include av produkt.php? Filene ser omtrent slik ut: (unnlatt instansvariabler og initiering av disse) produkt.php class Produkt { // instansvariabler public function __construct(/*instansvariabler*/) { // initierer instansvariabler } public toString() { // echo'er ut instansvariabler } } $produktArray = array(); // Inneholder alle produkter header.php <!DOCTYPE html> <html> <head> <base href="http://localhost/PHP/Nettbutikk/"/> <link rel="stylesheet" type="text/css" href="myStyle.css"> <meta charset="UTF-8"> <?php include 'produkt.php';?> <link rel="icon" type="image/png" href="img/favicon.png"> </head> <body> // resten av innhold på siden produkter.php <?php include '../header.php'; array_push($produktArray, new Produkt(/*instansvariabler*/)); ?> Legger jeg til et produkt objekt i arrayen fra produkt.php, så er eksisterer det i alle undersider som inkluderer nevnt fil. Legger jeg imidlertid til et produkt objekt i arrayen fra produkter.php, så eksisterer det kun i samme fil. Endret 25. september 2014 av Defo Lenke til kommentar
Crowly Skrevet 26. september 2014 Del Skrevet 26. september 2014 (endret) Legger jeg til et produkt objekt i arrayen fra produkt.php, så er eksisterer det i alle undersider som inkluderer nevnt fil. Legger jeg imidlertid til et produkt objekt i arrayen fra produkter.php, så eksisterer det kun i samme fil. Ja. For hver gang du laster produkter.php så vil du kun få med deg de opprinnelige verdiene i $produktArray, som blir satt i produkt.php. Når siden er ferdig "behandlet" så blir alle variabler og slik ryddet vekk.Skal du ha med dette videre må du lagre det ett sted: i $_SESSION (da kun så lenge session eksisterer), i en fil, database eller lignende. Og så må du hente frem de lagrende produktene igjen hver gang siden lastes. Slik du inkluderer filene så kan du se på det som en fil som ser slik ut <!DOCTYPE html> <html> <head> <base href="http://localhost/PHP/Nettbutikk/"/> <link rel="stylesheet" type="text/css" href="myStyle.css"> <meta charset="UTF-8"> <?php class Produkt { // instansvariabler public function __construct(/*instansvariabler*/) { // initierer instansvariabler } public toString() { // echo'er ut instansvariabler } } $produktArray = array(); // Inneholder alle produkter ?> <link rel="icon" type="image/png" href="img/favicon.png"> </head> <body> // resten av innhold på siden <?php array_push($produktArray, new Produkt(/*instansvariabler*/)); ?> Endret 26. september 2014 av Crowly Lenke til kommentar
lombriz Skrevet 25. oktober 2014 Del Skrevet 25. oktober 2014 (endret) Ikke for å virke ekkel - men ikke gi vane av å laste alt i header (header.php holder produkt variabel). Om du ikke koder i MVC - så ta heller og inkluder modellen for dataene du henter ut, kjør $produkt = new produktModell(); så f.eks $produktliste = $produkt->hentAlleProdukter(); Les opp på MVC. Separering av alle deler av en side (Model View Controller) gjør ting enklere å feilsøke, vedlikeholde, endre og videreutvikle. Endret 25. oktober 2014 av lombriz Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå