Failed opening 'datumdropdown.php' for inclusion (include_path='.') in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris Bosmans

chris Bosmans

08/11/2015 23:11:04
Quote Anchor link
Allen ik heb een raar fenomeen

ik wil een php include in een pagina.
dit werkt perfect in de pagina zelf als ik onderstaande intype

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td width="201"><?php include("datumdropdown.php");?></td>


maar als ik echter deze pagina in een Case functie steek waar ik al mijn html wil echoen
dan krijg ik de melding als in de titel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo"    <td width='201'>". include('datumdropdown.php')."</td>";
?>


Failed opening 'datumdropdown.php' for inclusion (include_path='.')

wat doe ik mis?
Gewijzigd op 08/11/2015 23:12:34 door Chris Bosmans
 
PHP hulp

PHP hulp

24/04/2024 23:32:29
 
Thomas van den Heuvel

Thomas van den Heuvel

08/11/2015 23:16:16
Quote Anchor link
Als de eerste schrijfwijze wel werkt houd je die toch gewoon aan? De constructie van de tweede variant is gewoon raar, een echo van een geconcateneerde include?

What does that even mean :/
 
Chris Bosmans

chris Bosmans

08/11/2015 23:19:48
Quote Anchor link
de include zit in een tabel
en ik wil deze tabel alleen laten zien als er een requirement is voldaan
zoiets als onderstaand


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

switch (1){

Case
1:
echo"<table >";
echo"<tr>";
echo"    <td width='201'>". include('datumdropdown.php')."</td>";
echo"</tr>";
echo"</table>";

break;
}

?>
Gewijzigd op 08/11/2015 23:20:03 door chris Bosmans
 
- Ariën  -
Beheerder

- Ariën -

08/11/2015 23:25:50
Quote Anchor link
Waarom elke regel een echo gebruiken? Je kan een echo ook over meerdere regels gebruiken.

Verder lijkt het mij zinvoller om een functie aan te maken in je datumdropdown.php die je dropdown-menu genereert. En dat je die functie aanroept in je echo. Dat lijkt me een stuk netter.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// hoop code
echo'<td width="201">'.generate_dropdown().'</td>';
?>
 
Chris Bosmans

chris Bosmans

08/11/2015 23:30:57
Quote Anchor link
Ok ik kan meedere echo samen nemen maar wou effen de situatie schetsen.

het zal goed zijn dat jouw functie aanroepen werkt- maar ik zou niet weten hoe dat werkt

ik vroeg me gewoon af waarom dit niet werkt?
omdat het op dezelfde pagina maar dan niet in de switch / case wel werkt
 
- Ariën  -
Beheerder

- Ariën -

08/11/2015 23:35:36
Quote Anchor link
Op zich zou je gewoon include moeten kunnen gebruiken, geconcateneerd in een string.
Die foutmelding vertelt meer dat hij in de huidige working-directory geen datumdropdown.php kan vinden.

Maar persoonlijk vind ik een eigen geschreven functie veel netter.
 
Chris Bosmans

chris Bosmans

08/11/2015 23:39:45
Quote Anchor link
OK Ariën

dat dacht ik ook maar blijf die error krijgen, en zou echt die datum drop down in die tabel moet hebben

dit is mijn datumdropdown.php
hoe zou ik dit dan in een functie moeten steken? heb hier geen verstand van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
// De variabelen die gevuld worden zijn: $iDag, $iMaand en $iJaar

// Geef hier zelf de jaartallen die ingevuld mogen worden in de dropdown

$jaar        = range( 2006, 2015 );  

// Array met de namen van de maanden
$maand    = array(    "Januari", "Februari", "Maart", "April", "Mei", "Juni",
                        "Juli", "Augustus", "September", "Oktober", "November", "December");
                        
// Dropdown voor de dagen
echo '<select name="iDag">';
for($i=1; $i<=31; $i++)
{

    echo '<option value="' . $i . '">' . $i . '</option>';
}

echo '</select>';

// Dropdown voor de maanden
$count    = count($maand);
echo '<select name="iMaand">';
for($i=1; $i<=$count; $i++)
{

    echo '<option value="' . $i . '">' . $maand[$i-1] . '</option>';
}

echo '</select>';

// Dropdown voor de jaren
$count    = count($jaar);
echo '<select name="iJaar">';
for($i=1; $i<=$count; $i++)
{

    echo '<option value="' . $jaar[$i-1] . '">' . $jaar[$i-1] . '</option>';
}

echo '</select>';
?>
    
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/11/2015 23:51:24
Quote Anchor link
mijn inziens zijn er twee type "nette" includes:

1) om classes of functies in te laden (zoals Aar al een beetje aangaf)
2) om de view ofwel template in te laden

In alle andere gevallen ( en zeker midden in een regel): bad practice!

Daarbij zijn includes erg confusing. Stel je de volgende directory structuur voor:

/index.php
/lib/config.php
/lib/functions.php

nu wil je config.php vanuit index.php inladen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  include 'lib/config.php'; // dit werkt ?>


Maar nu wil je (stel dat) vanuit config.php functions.php includen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include 'functions.php' // of was het nou include lib/functions.php ??? ?>


Volgens mij één van de belangrijkste redenen om over te stappen op (een framework met) een frontcontroller
Gewijzigd op 08/11/2015 23:53:05 door Frank Nietbelangrijk
 
- Ariën  -
Beheerder

- Ariën -

09/11/2015 09:01:11
Quote Anchor link
Een framework, wat Frank zegt, is handig als je wat meer ervaring in PHP hebt, en goed weet hoe je eigen functies moet bouwen en kan organiseren tot classes.

Voor nu lijkt het mij het beste om eerst een eigen functie aan te maken voor je dropdown-menu.
Zie daarvoor deze tutorial: http://www.tizag.com/phpT/phpfunctions.php

Het komt er dan op neer dat je dat je dus zo een structuur krijgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
function generate_dropdown(){
// jouw code hier.
return $code;
}

?>

Let er dan wel op dat alles wat je in je functie echo'd, dat je dit dan in een variabele opslaat (bijv. $code), welke je aan het eind dan returned.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/11/2015 09:10:33
Quote Anchor link
De eerste variant werkt nog steeds in een switch-statement, er hoeft niets te veranderen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
switch ($whatever):
    case
'something':
        ?>
<td width="201"><?php
            include("datumdropdown.php");
        ?>
</td><?php
    break;
}

?>

Als je ook zorgt dat je maar 1 of enkele scripts hebt (denk bijvoorbeeld aan index.php) die in dezelfde directory staan (EDIT: die als kapstok dienen om de rest van je includes aan op te hangen), dan kun je altijd alle andere onderdelen op dezelfde manier includen. Idealiter heb je "one point of entry" (index.php).

@Ariën
Als je een vast onderdeel in je site hebt zitten wat je maar 1x gebruikt in je hele layout, zou ik hier persoonlijk geen functie van maken. Een functie heeft pas een zekere meerwaarde als je deze meerdere keren (tegelijkertijd) gebruikt. Ik denk dat hier een include meer op zijn plaats is (pun intended :)).

@Frank
Een framework is wellicht een beetje overkill, je zou ook kunnen volstaan met een simpele autoloader.
Gewijzigd op 09/11/2015 09:13:40 door Thomas van den Heuvel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/11/2015 09:22:38
Quote Anchor link
De intentie was een beetje om er op te hameren dat je een duidelijk beeld hebt van je mappenstructuur en nu we het er toch over hebben zijn er ook verschillende typen .php bestanden. Ik zelf maak graag de volgende onderverdeling:

- landing bestanden -> de pagina waar een gebruiker op 'landt' zoals index.php about.php en contact.php
- libraries -> hierin schrijf je classes of functies
- configuratie -> hierin staat je database servername, username en wachtwoord en meer van dat soort zaken.
- templates -> hierin staat de HTML met wat php variabelen die ge-echo-ed worden.

Als je hier nu al eens over nagedacht hebt dan ben je volgens mij al een aardig eindje in de goede richting.

@Thomas: Natuurlijk is autoloading een geweldige tool maar ook deze is onbekend voor een PHP beginneling...
 
Thomas van den Heuvel

Thomas van den Heuvel

09/11/2015 09:38:02
Quote Anchor link
Frank Nietbelangrijk op 09/11/2015 09:22:38:
nagedacht

That's asking alot.

EDIT: @Frank wat je hierboven beschrijft, zo zou ik het ook aanpakken (functionele onderverdeling). Een beginneling moet gaandeweg zelf het nut hiervan inzien. In eerste instantie zijn vragenstellers hier ook niet vaak geïntereseerd in het "hoe" of het "waarom", maar alleen maar in het "wat", met andere woorden een directe (ad hoc) oplossing voor het probleem in kwestie.
Gewijzigd op 09/11/2015 09:41:12 door Thomas van den Heuvel
 
Chris Bosmans

chris Bosmans

09/11/2015 20:33:34
Quote Anchor link
allen,


ik begrijp jullie punten allemaal
ik gebruik ook verschillende folders waar ik mijn scriptjes (die ik achteraf include), config, fotos bewaar
niet alles in 1 map.

voor het overzichtelijk te houden.

@thomas idd als je een probleem heb dan wil je ad hoc een oplossing of toch een punt waarop je verder kan bouwen.


ik probeer zo dadelijk de functie van Arien, ik heb met dit nog niet al te veel gewerkt.

en waarschijnlijk zullen er vele mogelijkheden zijn om dit op te lossen en als ik mijn totale code laat zien zal er ook veel commentaar ("hulp") op komen, maar iedereen heeft zijn werkwijze en probeert stilletjes aan te groeien in de code.

apprecieer de commentaar en we werken verder.
Gewijzigd op 09/11/2015 20:41:49 door chris Bosmans
 



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.