functie accepteert geen include

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Sylvester vader

sylvester vader

23/03/2020 16:55:27
Quote Anchor link
ik heb een functie welke in een loop een bestand moet zoeken en dan includen in geval deze bestaat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.'');
}

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?
 
PHP hulp

PHP hulp

20/04/2024 04:05:20
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 17:22:56
Quote Anchor link
Kan je die opbouw van het pad niet in een variabele onderbrengen? Dat is makkelijk als je het later moet wijzigen.

$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 -
 
Sylvester vader

sylvester vader

23/03/2020 17:46:50
Quote Anchor link
ja in een $path onderbrengen zou wel kunnen maar op dit moment klopt het path

/ 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)
PHP script in nieuw venster Selecteer het PHP script
1
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);

werkt niet maar echo doet hij wel perfect

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.'');
}


werkt wel, echo exact zelfde.
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 17:52:36
Quote Anchor link
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.
 
Sylvester vader

sylvester vader

23/03/2020 17:58:50
Quote Anchor link
had ik ook al gedaan
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
 
- SanThe -

- SanThe -

23/03/2020 18:06:50
Quote Anchor link
Zet je errors eens aan.

Helemaal bovenin je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 18:09:16
Quote Anchor link
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 -
 
Sylvester vader

sylvester vader

23/03/2020 18:36:52
Quote Anchor link
@- SanThe - heb errors aangezet en ik krijg wel errors maar alleen
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
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 18:40:54
Quote Anchor link
Dat moet gewoon werken! Ander moet je je code even tijdelijk minimaliseren naar wat simpels.
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 -
 
Sylvester vader

sylvester vader

23/03/2020 18:54:04
Quote Anchor link
OMG
ok ik zal het even in lekentaal neerzetten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
function includefile($bestand) {

if (file_exists(''.$bestand.'')) { //werkt
echo ''.$bestand.'<br>'; // werkt
include(''.$bestand.''); werkt niet
}
}

$link = 'linkbestand.php';

includefile($link); // wel echo geen bestand
  
include(''.$link.''); // werkt wel
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 18:57:30
Quote Anchor link
Werkt hier prima!
Je zal wel iets fout hebben in linkbestand.php
Gewijzigd op 23/03/2020 18:58:44 door - Ariën -
 
Sylvester vader

sylvester vader

23/03/2020 19:03:47
Quote Anchor link
ja bij mij dus niet
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'test of bestand werkt';
?>
Gewijzigd op 23/03/2020 19:04:58 door sylvester vader
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 19:54:01
Quote Anchor link
Hier werkt het prima.
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 -
 
Sylvester vader

sylvester vader

23/03/2020 20:06:16
Quote Anchor link
ok ik heb een scripter gesproken die een goede test aan mij liet zien, wat eigelijk logies klinkt alleen heb ik geen oplossing

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 ?
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 20:08:21
Quote Anchor link
Je bedoelt $_GET, $_POST, $_SERVER etc? Die zijn gewoon overal in PHP beschikbaar.
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 -
 
Sylvester vader

sylvester vader

23/03/2020 20:18:14
Quote Anchor link
ok uhm update:

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
 
Ivo P

Ivo P

23/03/2020 20:19:38
Quote Anchor link
luistert ie eindelijk een keer naar een advies (functies gebruiken), gebruikt hij het verkeerd:

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
 
Sylvester vader

sylvester vader

23/03/2020 20:27:19
Quote Anchor link
ik decht gewoon een beetje nieuw te doen door het geheel van het zoeken naar een cache en het aanmaken hiervan via een functie te doen

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
 
- Ariën  -
Beheerder

- Ariën -

23/03/2020 22:14:40
Quote Anchor link
Kan je niet misschien kijken naar een TEMPORARY TABLES in MySQL?
https://www.mysqltutorial.org/mysql-temporary-table/
Gewijzigd op 23/03/2020 22:14:54 door - Ariën -
 
Ivo P

Ivo P

23/03/2020 23:14:05
Quote Anchor link
je lijkt er naar te streven om alles zo onhandig mogelijk aan elkaar te knopen.

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
 
Ozzie PHP

Ozzie PHP

23/03/2020 23:20:53
Quote Anchor link
Wat een warrig topic.

Wat wil je nu precies bereiken in die functie? Wat moet er gebeuren?

Leg het eens uit in woorden, dus niet in code.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.