Include loop

Status
Niet open voor verdere reacties.

BoukeWeening

Gebruiker
Lid geworden
3 apr 2007
Berichten
232
Hallo, is er een soort van loop om bestanden te includen?

Iets dat alle bestanden van: nieuws1.html tot nieuws100.html worden geinclude als deze bestaan?

Alvest bedankt!

Groet
 
PHP:
<?
$maxAantal = 100;

for($i = 1; $i < $maxAantal; $i++)
{
  if(exists("nieuws$i.html"))
  {
    include("nieuws$i.html");
  }
}
?>

Volgens mij moet het zoiets worden...
 
werkt nog niet

Dit werkt nog niet?? ik weet niet of ik wat fout doe? maar plaats het het script tussen twee <div>

op deze manier:

<div id="content_nieuws">
<h1 class="kop">Nieuws</h1>

<p>


<?
$maxAantal = 10;

for($i = 1; $i < $maxAantal; $i++)

{
if(exists("nieuws$i.html"))
{
include("nieuws$i.html");
}
}

?>



</p>

</div>
 
Kijk even wat er in de bron staat, vervang anders
PHP:
for($i = 1; $i < $maxAantal; $i++)
{
  if(exists("nieuws$i.html"))
  {
    include("nieuws$i.html");
  }
}

even door
PHP:
for($i = 1; $i < $maxAantal; $i++)
{
  echo "$i, ";
}

Als je de max op 10 hebt gezet moet hij als het goed is dit weergeven.
Code:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
 
iets verder

Owkey, als ik dat vervang dan komt er ind. 1 t/m 9 te staan...

Zet ik de oude code terug dan valt de rest van de code wat na dit stukje PHP komt weg... dus in de bron houd hij dus op na deze code... Hij leest dus niet verder. is de loop wel af? moet er geen else bij??
 
Wat zou er in de else moeten komen dan? De IF stelt de vraag "Als {bestand} bestaat, dan doe ik ...". Dat is in dit geval het bestand includen.

Wat zou hij volgens jou moeten doen als hij het bestand niet vindt?

Probeer dit even, ik denk dat het met de bestandsnotatie te maken heeft...
PHP:
for($i = 1; $i < $maxAantal+1; $i++)
{
  $file = "nieuws$i.html";
  if(exists("$file"))
  {
    include("$file");
  }
}

Ik heb ook even nu $maxAantal+1 gedaan, want je zag waarschijnlijk al dat als je dus
PHP:
$maxAantal = 10;
doet hij van 1 t/m 9 gaat... Nu kun je dus gewoon het aantal intypen bij $maxAantal en dan komt alsnog de goede reeks eruit.

Heb je trouwens de bestanden wel in dezelfde map als dit script?
 
pff

Ja, die bestanden staan in dezelfde map... hij doet nu nog steeds hetzelfde, als ik de bron nu bekijk dan laat hij dit zien:

PHP:
    </p>

      </div>
      <div id="content_nieuws"> 
        <h1 class="kop">Nieuws</h1>

	<p>

en hierna komt dus normaal gesproken het script, maar daar stopt dus de bron. Hij laat de pagina niet verder dan het script dus. Sluit hij wel goed af ofzo? ik ben zoals duidelijk niet sterk in PHP...
 
Getest en werkt:
PHP:
<?
$maxAantal = 10;
for($i = 1; $i < $maxAantal+1; $i++)
{
  if(file_exists("nieuws$i.html"))
  {
    include("nieuws$i.html");
  }
}  
?>

De functie heet file_exists(); en niet exists(); :rolleyes:
 
Juist, maar je zet een variabele nooit tussen quotes, het volgende is dan ook veel beter:

PHP:
<?php 
$maxAantal = 10; 
for($forPointer = 1; $forPointer < $maxAantal+1; $forPointer++) 
{ 
  if(file_exists("nieuws".$forPointer.".html")) 
  { 
    include("nieuws".$forPointer.".html"); 
  } 
}   
?>

Dat is al een stuk netter.
 
Wat is het grootse verschil?

De gebruikte variabele komt vanuit de loop dus je hoeft hem niet door het hele script te zoeken.

En wie zegt trouwens dat je een variabele nooit tussen quotes mag zetten?
 
Wat is het grootse verschil?

De gebruikte variabele komt vanuit de loop dus je hoeft hem niet door het hele script te zoeken.

En wie zegt trouwens dat je een variabele nooit tussen quotes mag zetten?

Het grootste verschil is dus dat je de variabelen niet meer in de quotes hebt.

En wie dat zegt? Nou ja, het is niet nodig, maar zo wordt het door eigenlijk alle professionals gedaan, en PHP hoort niks tussen quotes te parsen, dus eigenlijk is het een fout van de parser.

Voorbeeldje:
PHP:
<?php
$textVar = "dit is een tekstje.";
echo "Dit wordt geëcho'd want $textVar";
?>

de output hoort hier ook letterlijk van te zijn: Dit wordt geëcho'd want $textVar
Dat de parser dit wel 'goed' doet, ligt aan het feit dat de parser hier dieper naar kijkt, en dus uiteindelijk beslist de var te parsen. Dit kost dus wel extra tijd.
 
Dat de parser dit wel 'goed' doet, ligt aan het feit dat de parser hier dieper naar kijkt, en dus uiteindelijk beslist de var te parsen. Dit kost dus wel extra tijd.
Waarom maakt het dan nog een verschil... als mijn variabele niet tussen quotes staat kijkt de parser nl ook 'dieper', aangezien die niet weet of er in een string een variabele staat of niet....

Echter zie ik zelf liever ook variabelen buiten een string, gwn omdat ze makkelijker te lokaliseren zijn voor mezelf. ik hoef nooit een string na te lezen op variabelen-fouten ;) Maar de var erin of eruit is pure persoonlijke smaak :cool:

--Johan
 
Ik haal escape alleen de vars wanneer ik met HTML bezig ben. Alleen gebruik ik dan ook enkele quotes in plaats van dubbele...

Wanneer het om 1 regel gaat dan ga ik echt niet moeilijk doen met het escapen van de variabele...
 
include loop met linkjes...

ik heb nu deze include loop:

PHP:
<?
$maxAantal = 10;
for($i = 1; $i < $maxAantal+1; $i++)
{
  if(file_exists("nieuws$i.html"))
  {
    include("nieuws$i.html");
  }
}  
?>

en dat werkt goed, maar kan deze include loop ook linkjes opvragen? zeg maar dat hij niet de bestanden include maar dat hij een linkje maakt naar dat bestand?

Dus hij include de bestanden nieuws1.html t/m nieuws10.html niet maar maakt de linkjes:
Nieuws1
Nieuws2
Nieuws3

en als je er op klikt opent hij ze in het zelfde venster in het zelfde <div></div> waar de include staat....

Is dit mogelijk?
 
Tuurlijk is dat mogelijk...
PHP:
<?
$maxAantal = 10;
for($i = 1; $i < $maxAantal+1; $i++)
{
  if(file_exists("nieuws$i.html"))
  {
    echo '<a href="nieuws'. $i .'.html">Nieuws'. $i .'</a><br />';
  }
}  
?>
 
Owkey, dat werkt dus in principe wel, maar hij opent ze nu in een nieuw venster... maar hij moet hem eigenlijk openen in de zelfde <div>... kan dat ook? dus de inhoud van nieuws openen in de <div> waar eerst de linkjes staan...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan