functie accepteert geen include
Code (php)
1
2
3
4
2
3
4
if (file_exists(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'')) {
echo ''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'<br>';
include(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'');
}
echo ''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'<br>';
include(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'');
}
1 van de linken naar een bestand is
beheer/cache/45/2020/3/users/3/dag_13_03_2020.php
hij doet de echo dus het bestand bestaat
maar de include werkt echter niet
doe ik deze zelfde code nou op de pagina waar ik de functie opvraag dan doet hij het wel
dus zonder functie wel en met gebruik van een functie niet.
mag je geen files includen in een functie?
of is er iets anders dat ik ben vergeten?
$path = $folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file;
Let wel op wat je werkdirectory is, want als dit verschilt, klopt je pad ook niet meer.
Mogelijk ben je de / vooraf vergeten? En wat is de reden dat je het idee hebt dat je include niet lukt? Want als die bestaat, dan zou includeren ook moeten lukken.
Gewijzigd op 23/03/2020 17:38:46 door - Ariën -
/ vooraf heb ik ook al gedaan
heb zelfs https://'.$_SERVER[HTTP_HOST].' ervoor proberen te zetten
hij vind het bestand.
hij laat de link met echo ook zien.
als ik de link open doet deze het ook.
maar de include doet het niet.
include doet het wel als ik de functie niet gebruik
dus
de functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
function checkcachefolder($folder,$accountid,$jaar,$maand,$id,$datum = NULL) {
if($datum !== NULL) {
$file_date = '' . date("d_m_Y", strtotime($datum)) . '';
$file = 'dag_' . $file_date . '.' . php;
if (file_exists(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'')) {
echo ''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'<br>';
include(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'');
}
}
}
checkcachefolder($cachefolder,$accountid,$jaarcache,$maandcache,$row['id_user'],$page_dag_cache);
if($datum !== NULL) {
$file_date = '' . date("d_m_Y", strtotime($datum)) . '';
$file = 'dag_' . $file_date . '.' . php;
if (file_exists(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'')) {
echo ''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'<br>';
include(''.$folder.'/'.$accountid.'/'.$jaar.'/'.$maand.'/users/'.$id.'/'.$file.'');
}
}
}
checkcachefolder($cachefolder,$accountid,$jaarcache,$maandcache,$row['id_user'],$page_dag_cache);
werkt niet maar echo doet hij wel perfect
Code (php)
1
2
3
4
2
3
4
if (file_exists(''.$cachefolder.'/'.$accountid.'/'.$jaarcache.'/'.$maandcache.'/users/'.$row[id_user].'/'.$cachefile_dag_user.''))
echo ''.$cachefolder.'/'.$accountid.'/'.$jaarcache.'/'.$maandcache.'/users/'.$row['id_user'].'/'.$cachefile_dag_user.'<br>';
include(''.$cachefolder.'/'.$accountid.'/'.$jaarcache.'/'.$maandcache.'/users/'.$row['id_user'].'/'.$cachefile_dag_user.'');
}
echo ''.$cachefolder.'/'.$accountid.'/'.$jaarcache.'/'.$maandcache.'/users/'.$row['id_user'].'/'.$cachefile_dag_user.'<br>';
include(''.$cachefolder.'/'.$accountid.'/'.$jaarcache.'/'.$maandcache.'/users/'.$row['id_user'].'/'.$cachefile_dag_user.'');
}
werkt wel, echo exact zelfde.
Sylvester vader op 23/03/2020 17:46:50:
ja in een $path onderbrengen zou wel kunnen maar op dit moment klopt het path
Waarom pas je het niet direct aan? We geven niet voor niets adviezen, hé? ;-)
Naar mijn persoonlijke mening komt zo iets niet echt sportief over.
Maar waar baseer je op de dat include niet werkt? Gooi eens een echo in die cache file, en kijk eens of je die terug ziet? In dat geval speelt er wat anders dan waar je nu een tunnelvisie op staat te turen.
echo komt niet terug
if (file_exists
werkt wel dus het bestand is gevonden, maar ik krijg niks uit de file
path ja kan maar vind ik nu niet belangrijk
is net zoiets als een blauwe auto rood verven terwijl dat motor stuk is
eerst fixen wat stuk is daarna verbeteringen toevoegen
Helemaal bovenin je script:
Sylvester vader op 23/03/2020 17:58:50:
path ja kan maar vind ik nu niet belangrijk
Ja, kom op zeg... :-/
Dat is flauwekul en een non-argument.
Met zo'n insteek zullen mensen je toch minder snel willen gaan helpen omdat je toch geen adviezen opvolgt. En eerlijk gezegd word ik hier nu ook best moe van deze flauwekul, terwijl het een kleinigheidje is. Ga eens rechtop zitten en grijp alles met beide handen aan! Want met zo'n lakse houding gaat het echt niet helpen.
Ik kan me overigens niet indenken dat die include niet laadt, want include werkt prima in een functie. Ik denk dat je verkeerd kijkt, of een fout path hebt. Of je error reporting staat uit, zoals SanThe zegt. Maar dat moet je bij ontwikkelen altijd aan hebben staan.
Gewijzigd op 23/03/2020 18:12:15 door - Ariën -
errors mbt dat hij de variabelen niet kan vinden die dus in die includes staan
verder geen errors mbt tot dit probleem
wel heel veel Notice: Undefined variable: ...........
deze staan in de files die ik dus wil includen
en nogmaals aan mensen die niet lezen of niet willen lezen.
include werkt niet in de functie
zonder de functie werkt het wel
de if (file_exists werkt op bijde plekken
als ik dus een echo daarna neerzet dan werkt de echo
de include werkt echter niet in de functie
ik zeg bij voorbaat dat ik dus weinig kaas heb gegeten van functies
dus misschien ben ik iets specials vergeten ? dat je moet gebruiken bij een functie voor een include ofzo
Een simpele echo in een php-file, en kijken wat er dan gebeurt als je dat bestand includeert in een functie. In veel gevallen is het toch een fout van de gebruiker die ergens verkeerd kijkt. Dus daarom: back to basic.
Gewijzigd op 23/03/2020 18:43:45 door - Ariën -
ok ik zal het even in lekentaal neerzetten.
Je zal wel iets fout hebben in linkbestand.php
Gewijzigd op 23/03/2020 18:58:44 door - Ariën -
de functie wordt ingeladen via functies.php op zelfde locatie
echter staat de index enz waarmee de gehele pagina word gelanden een stuk terug
moet je mischien bij functies de hele path compleet opgeven met root enzo ?
ik snap het dus niet
nu snap je waarom ik dus vast zit
dit is dus ook 1 van redenen waarom ik liever geen functies gebruik
omdat niemand dus oplossing weet voor dit soort dingen :(
ik probeer nog wel even te klooien en anders gaat functie gewoon weer in prullebak en ga ik weer terug naar hardcoded
heb niet de tijd om jaren te klooien en cursusen als zelfs jullie niet weten waarom dit gebeurt
..................
wat is er fout in
Gewijzigd op 23/03/2020 19:04:58 door sylvester vader
Let wel op dat de include in zijn script het pad gebruikt van directory waar je jouw parent-script in uitvoert. Dit kan je checken via de getcwd functie.
PS: Als je zit te tobben met scripts, en het wil niet lukken. Neem een pauze en ga later weer verder met een fris en fruitig brein. Dat voorkomt tunnelvisie. Overal is wel een verklaring voor te vinden. Dit kan haast nooit een excuus zijn om weer terug te vallen in oude plakband-code.
Gewijzigd op 23/03/2020 19:58:18 door - Ariën -
een functie heeft zijn eigen variablenen scope en dus kan je geen variabelen includen in een functie
of zoiets :S
ik heb namelijk even de link rechtstreeks in die functie gezet in de include met een echo erin
het bestand wordt dan wel geinclude ik krijg dan dus wel een echo
maar niet de variabelen
dus hoe kan ik globals ontvangen in een functie :P ?
maar als je buiten je functie bijvoorbeeld $var gebruikt, dan kan je die niet direct gebruiken in je functie, tenzij:
- Je deze als parameter meegeeft in de functie aanroep
- Of je globaliseert deze met global $var in jouw functie. Maar dat geeft minder overzicht in mijn ogen, en zulke dingen moet je liever vermijden.
Gewijzigd op 23/03/2020 20:11:08 door - Ariën -
include functie werkt, maaar.....
in de functie zelf dacht ik laat ik deze eens een echo geven in de functie
dit werkt
buiten deze functie niet
hoe moet ik dit doen dat hij dus een standaard result terug geeft :P
ik ben hier dus echt een noob in dat blijkt maar weer :P
als je include uitvoert IN een functie in de include bevat $x = 10; dan zal IN de functie een var bestaan met de naam $x.
Daarbuiten niet.
En de caching bestanden bevatten kennelijk geen data, maar PHP scripts waarin vars voorzien worden van data;
En die wil hij net weer in de globale namespace hebben, net als alle vars.
ALS je dan al wilt cachen, cache dan de DATA. ofwel in een file, of liever in een tabel in de database. Die je dan 1 op 1 ergens inleest: overzichtelijker en ook niet gevoelig voor fouten.
En de data is ook elders herbruikbaar. Zonder dat je altijd dezelfde 30-karaketer variabelen nodig hebt.
Maar ja: liever chaos dan overzicht in deze applicatie.
Zal wel aan de brance liggen...
Gewijzigd op 23/03/2020 20:20:48 door Ivo P
de map aanmaken deel werkt
cache aanmaken deel werkt ook via functie
het includen van de cache via de functies dus niet :P
dit moet echter wel
Quote:
ALS je dan al wilt cachen, cache dan de DATA. ofwel in een file,
dit gebeurt dus, de data wordt in deze files gezet bij een variabelen :)
Quote:
of liever in een tabel in de database. Die je dan 1 op 1 ergens inleest:
dit was vroeger via sql geregeld allemaal en dat kan nogsteeds echter scheeld het inladen via cache 99%
van 3 min+ naar 3 sec
ik heb dus liever de cache :)
-----------------------
maar bottomline jullie zeggen dus eigelijk dat het niet kan met een functie bestanden includen met vars
en dat ik dit dus hardcoded moet doen,
Gewijzigd op 23/03/2020 20:32:13 door sylvester vader
laten we aannemen dat je berekeningen inderdaad door jou niet in sql uitgevoerd kunnen worden en caching van de berekening dus nodig is.
waarom sla je dan de berekende DATA niet op in een DATAbase?
als er een reden zou zijn om de data in een file op te slaan, zou ik dan denken aan een file met data.
CSV of Json bijvoorbeeld
maar kennelijk bouw je er een php script van dat vervolgens geinclude wordt.
nu kunnen we redenen aanvoeren waarom dat niet handig is
# je data files verbieden nu aanpassing van het hoofdscript want namen van vars liggen vast
# alles hangt per se aan de scope van van het script en binnen functies of classes loopt niets.
opgeslagen berekende DATA moet je binnen 0.01 sec kunnen selecten in een query.
je hoeft immers niet meer te rekenen.
Toevoeging op 23/03/2020 23:16:48:
maar bottomline jullie zeggen dus eigelijk dat het niet kan met een functie bestanden includen met vars
en dat ik dit dus hardcoded moet doen,
nee. dat zegt volgens mij niemand.
Gewijzigd op 24/03/2020 01:27:29 door Ivo P
Wat wil je nu precies bereiken in die functie? Wat moet er gebeuren?
Leg het eens uit in woorden, dus niet in code.