Afbeeldingen laden uit map met dezelfde naam als link.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Justin K

Justin K

05/07/2010 13:48:27
Quote Anchor link
Hallo,

Ik ben bezig met een website en ik kom er even niet meer uit met een PHP en MySQL deel.

Wat heb ik tot nu toe:
Het is een kleinschalige fotografie website. Ik heb de website zo opgebouwd dat de gebruiker d.m.v. een klein admin panel menu items kan toevoegen. Deze menu items worden opgehaald met een query en worden getoond in een <div> op de website. Query ziet er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
     $query
= "SELECT item FROM menu";
     $items = mysql_query($query);
                
      while($resultaat = mysql_fetch_array($items))
   {


       echo ("".$resultaat[item]." <br />");
  }

?>


Prima. Het werkt zoals het moet.

Waar kom ik niet uit:
Ik wil dat de menu items (opgehaald met query) automatisch links worden. Wanneer erop geklikt wordt, moet er in een andere <div> afbeeldingen worden geladen uit een map met een gelijknamige map als het menu item.

Kortom: Wanneer geklikt op menu item --> Afbeeldingen laden uit map met dezelfde naam als het menu item.

mijn vraag:
Hoe kan ik dit het beste aanpakken en welke functies moet ik hiervoor gebruiken?

Alvast bedankt!
 
PHP hulp

PHP hulp

08/11/2024 16:02:21
 
Joren de Wit

Joren de Wit

05/07/2010 13:52:11
Quote Anchor link
Je zou de betreffende links kunnen laten verwijzen naar dezelfde pagina waarbij je een extra GET variabele meegeeft met de naam van de map:

<a href="pagina.php?map=mapnaam">Mapnaam</a>

Vervolgens in je script controleren de variabele $_GET['map'] bestaat en zo ja een <div> met de afbeeldingen uit die map weergeven...
 
- -

- -

05/07/2010 14:00:19
Quote Anchor link
Eerst vier korte opmerkingen over je code:
- Negen van de tien keer is het slim om enkele quotes te gebruiken om strings heen, enkel bij SQL-queries is het handig om dubbele quotes te gebruiken. Jij zou dus op regel acht ook het beste enkele quotes kunnen gebruiken.
- Bij het echo-en is het gebruik van haakjes niet nodig, deze mag je dus weghalen op regel acht. Verder heb je na het openingshaakje een lege string (""), die kan ook best weg.
- Als je een bepaalde waarde uit een array wilt weten, moet je gewoon quotes om de key heen zetten. $resultaat[item] op regel acht moet dus eigenlijk $resultaat['item'] zijn.
- Vergeet je de foutafhandeling voor al je database-activiteiten niet?

Dan weer inhoudelijk, terug naar je vraag. Ik weet niet precies hoe jouw datamodel in elkaar zit, het lijkt me in ieder geval handig om met ID's te werken. Die kan je ook handig gebruiken in je URL's om aan te geven welk item aangeklikt is.

Een klein voorbeeld van hoe een link eruit kan zien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
echo '<a href="?item=' . $resultaat['item'] . '">' . $resultaat['item'] . '</a><br />';

// Je URL komt er dan bijvoorbeeld zo uit te zien:
// ?item=home

?>


In je code kan je nu met $_GET['item'] de waarde ophalen, in het voorbeeldje zou de waarde dus "home" zijn. Met de PHP-functie scandir kan je vervolgens een map doorlopen en alle bestanden (of submappen) erin ophalen.
 
Justin K

Justin K

05/07/2010 15:16:10
Quote Anchor link
Bedankt voor de snelle reacties, hier kon ik zeker wat mee. Ik heb het inmiddels in basis voor elkaar gekregen!

Met wat verder zoeken ben ik de glob() functie tegen gekomen. Dit in combinatie met de $_GET['item'] kan nu afbeeldingen laden uit de map met de zelfde naam als het menu item waarop geklikt is. Ik ga het geheel flink fine tunen!

en Jonathan bedankt voor je tips over mijn code, PHP is echt nieuw voor me dus alle tips zijn welkom!
Gewijzigd op 05/07/2010 15:18:07 door Justin K
 
Justin K

Justin K

06/07/2010 15:05:37
Quote Anchor link
Ik heb nog één vraag:

Hoe kan ik een map met afbeeldingen standaard openen? Dus een standaard map die altijd als eerst geopend wordt wanneer een gebruiker op de site komt?

Ik heb het geprobeerd met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php  
header("Location: ?item=start");
?>


Waarbij ik dus probeerde standaard de map 'start' te openen. Alleen wanneer ik dit doe beland het mn site in een soort loop. Hij opent wel in m'n adresbalk het juiste adres, maar de browser zegt: "Deze webpagina bevat een omleidingslus."

Enig idee hoe ik dit kan oplossen?

Alvast bedankt!
 
Joren de Wit

Joren de Wit

06/07/2010 18:11:24
Quote Anchor link
Kijk of de GET variabele item bestaat. Zo niet, dan neem je de start waarde:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!isset($_GET['item'])) {
    $item = 'start';
}

?>
 
P Lekensteyn

P Lekensteyn

06/07/2010 18:31:26
Quote Anchor link
Ook even controleren of het een string is.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(isset($_GET['start']) && is_string($_GET['start'])){
 //hier valideren, en .. herleiden
}
else{
 $item = 'start';
?>
 
- Mark -

- Mark -

06/07/2010 21:45:00
Quote Anchor link
@Peter Wat is het nut van is_string? $_POST en $_GET waardes zijn altijd strings als ik me niet vergis.
 
Justin K

Justin K

08/07/2010 11:35:29
Quote Anchor link
Bedankt voor de reacties! Ik heb het echter nog niet werkend gekregen.

In de <div> waar de afbeeldingen in geladen worden heb ik nu de volgende code:

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
<?php        
    if(!isset($_GET['item']))
     {

       $item = 'start';
     }
                                
    
       $files = glob("fotos/" . $_GET['item'] . "/*.*");
        for ($i=0; $i<count($files); $i++)
                    
     {

       $num = $files[$i];                
        echo '<img src="'.$num.'" alt="IMG" height="500px">'."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
      }
                    
            
?>


Er gebeurt niks wanneer ik de pagina refreshed. De map 'start' wordt niet geopend in de <div>. Ook in de adresbalk is er geen ?item=start te zien. Heb de de

if(!isset($_GET['item']))
{
$item = 'start';
}

Op de verkeerde plek staan? of mis ik nu nog een cruciale stap?

Alvast bedankt!
Gewijzigd op 08/07/2010 11:37:33 door Justin K
 
Joren de Wit

Joren de Wit

08/07/2010 12:43:37
Quote Anchor link
Je maakt nu de variabele $item aan, maar gebruikt verderop in je code weer $_GET['item']. Doe het dan bijvoorbeeld zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(!isset($_GET['item'])) {
  $item = 'start';
}

else {
  $item = $_GET['item'];
}

?>


En gebruik dan voor de rest van je script gewoon de variabele $item...
 
Justin K

Justin K

08/07/2010 17:48:32
Quote Anchor link
Oké! Dat verklaard een hoop inderdaad. Ik heb het werkend gekregen.

Bedankt voor de reactie!
 
P Lekensteyn

P Lekensteyn

08/07/2010 17:57:54
Quote Anchor link
Mark Coenen op 06/07/2010 21:45:00:
@Peter Wat is het nut van is_string? $_POST en $_GET waardes zijn altijd strings als ik me niet vergis.


url.php?ditiseenarray[]=inhoud&ditiseenarray[metDezeKey]=nogMeerInhoud bijvoorbeeld.
Altijd even opletten, hier houden weinig mensen rekening mee.
 
- Mark -

- Mark -

08/07/2010 18:01:33
Quote Anchor link
@Peter Daar had ik dus inderdaad niet aan gedacht.
 



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.