Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] dynamische content in een div

Pagina: 1
Acties:

Onderwerpen


  • Alwinonline
  • Registratie: Mei 2009
  • Niet online
Ik ben niet zo lang geleden begonnen met het werken in html en php en loop nu tegen het volgende probleem aan. Ik heb een website opgebouwd uit meerdere divs. In deze divs wil ik content plaatsen, als je op een link klikt moet de content wisselen. Ik werk met 5 divs in een container div namelijk header, footer, main blok1 en blok 2. Nu pas ik in mijn main div de content op de volgende manier aan: (dit is een test website ik ben aan het oefenen dus alle tips zijn welkom)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
switch (isset($_GET['id']))
    {
    case "test":
        include 'test.php';
        break;
        case "test2":
        include 'test2.php';
        break;
    case "":
        echo "Id is not set" ;
        break;
    }


Nu werkt dit allemaal zo als het hoort (waarschijnlijk vol schoonheidsfoutjes en gevaarlijk voor injecties e.d. maar daar weet ik nog te weinig vanaf).

Wat ik nu wil is een 2e div (blok1) ook laten veranderen als ik op een link klik alleen hoe kan ik dit doen en er ook voor zorgen dat de main div hetzelfde blijft? op dit moment ziet een link er als volgt uit: <a href="index.php?id=test">Test</a><br> alleen als ik wil dat de 2e div veranderd dan word de main div weer leeg. in welke richting moet ik de oplossing zoeken?

hopelijk is het duidelijk maar termen zijn nogal lastig. ik heb op google gezocht maar ik gebruik denk ik de verkeerde termen.

  • dev10
  • Registratie: April 2005
  • Laatst online: 27-11 08:33
Deze code gaat sowieso niet werken, omdat je expressie in je switch maximaal twee waardes teruggeeft. (Hint: http://nl3.php.net/isset en dan de return value. ;))

Je kunt in je tweede <div> ook een stuk code gebruiken aan de hand van de variabele in je URL het juiste stukje laadt. Daarvoor kun je het stuk code dat je hebt gewoon gebruiken, maar dan met andere bestandsnamen.

  • Alwinonline
  • Registratie: Mei 2009
  • Niet online
Bedankt voor je tip het is even wennen allemaal :), ik heb de originele code vervangen door:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    <?php
    if (isset($_GET['id']))
    {
        switch ($_GET['id'])
        {
        case "register":
            include 'register.php';
            break;
        case "test":
            include 'test.php';
            break;
        case "login":
            include 'login.php';
            break;
        }
    }
    else
    {
        echo "id not set";
    }


Alleen je laatste zin begrijp ik niet helemaal want ik gebruik nu al een variabele in mijn url? namelijk id toch? als ik er dan een aan toevoeg (id2) voor het gemak verdwijnt id uit de url en blijft mijn main div toch leeg?

  • dev10
  • Registratie: April 2005
  • Laatst online: 27-11 08:33
Je kunt gerust een variabele in een url twee keer gebruiken.

En anders kun je index.php?variable1=foo&variabele2=bar ook nog doen. Dan krijg je:

PHP:
1
var_dump($_GET) => array('variabele1' => 'foo', 'variabele2' => 'bar');


Verder kun je je code ook als volgt gebruiken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch ($_GET['id']) 
        { 
        case "register": 
            include 'register.php'; 
            break; 
        case "test": 
            include 'test.php'; 
            break; 
        case "login": 
            include 'login.php'; 
            break;
        default:
            echo "id not set";
            break;
        }


Een default in een switch wordt altijd uitgevoerd als de switch nergens aan kan matchen.

  • Alwinonline
  • Registratie: Mei 2009
  • Niet online
bedankt voor je tip over default, dit is inderdaad wat netter. Even over 2 variabelen, ik zal proberen wat duidelijker uit te leggen wat mijn probleem is. Mijn opmaak heeft (buiten de header en de footer) 3 divs. main, blok 1 en blok 2.

In blok 2 staan alle links. Main en blok1 moeten dynamisch worden (dus veranderen als ik op een link klik). mijn link ziet er als volgt uit:
HTML:
1
 <a href="index.php?id=test">Test</a><br>


en met de bovengenoemde phpcode word de content dan geladen. Het punt is dat niet elke link zowel blok1 als main aanpast. de ene link zal dus main aanpassen en een andere link alleen blok1. als ik voor blok1 bijvoorbeeld id2 gebruik zal een link er als volgt uitzien:

HTML:
1
 <a href="index.php?id2=test">Test blok 1</a><br>

Alleen als ik hier op klik zal de contant in mijn main div weer veranderen naar de basiswaarde (default) omdat in de link die ik klik geen waarde word meegegeven voor id. Wat ik graag wil is dat hij zowel de huidige info van 'main'zowel als 'blok 1' meegestuurd.

Hopelijk heb ik het zo iets duidelijker uitgelegd

  • gvdh
  • Registratie: December 2009
  • Laatst online: 11:40
Zorg dat al je links een id en een id2 bevatten. Bij blokken die niet veranderen kan je de huidige code ophalen via $_GET en in je link zetten.

  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

Het is geen slecht idee hoor om isset te gebruiken, anders ga je foutmeldingen krijgen als je een niet bestaande GET variabele uit probeert lezen.

"True skill is when luck becomes a habit"
SWIS


  • Alwinonline
  • Registratie: Mei 2009
  • Niet online
@UltimateB bedankt dit heb ik idd weer terug gedaan omdat ik meldingen kreeg

@gvdh en de rest
Ik heb het nu op de volgende manier opgelost:
bovenin de pagina
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (isset($_GET['id']) && isset($_GET['id2']))
{
$getid = $_GET['id'];
$getid2 = $_GET['id2'];
}
else
{
$getid = "";
$getid2 = "";
}
?>


en in de links:
PHP:
1
2
3
4
        <a href="index.php?id=main&id2=<?php echo $getid2; ?>"> Home </a><br>
    <a href="index.php?id=test&id2=<?php echo $getid2; ?>"> Test</a><br>
    <a href="index.php?id2=register&id=<?php echo $getid;  ?>"> Register</a><br>
    <a href="index.php?id2=login&id=<?php echo $getid; ?>"> login</a><br>


Nu past hij elke keer alleen de div aan die ik wil :) iedereen bedankt voor de hulp en mochten jullie nog meer aanwijzingen hebben of tips dan hoor ik het graag.

  • Staatslot
  • Registratie: December 2007
  • Laatst online: 31-10 22:10
Je kunt dan misschien beter dit doen
PHP:
1
 $getid1 = isset($_GET['id1']) ? mysql_real_escape_string(strip_tags($_GET['id1'], "")) : '';


Als er niets is meegegeven of als de $_GET helemaal niet is geset, dan blijft je variabele getid1 leeg..
Bovendien wordt je inhoud direct gestript zodat er geen vreemde injecties etc kunnen plaatsvinden.

Succes!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 12:11

MueR

Admin Devschuur® & Discord

is niet lief

Staatslot schreef op vrijdag 11 februari 2011 @ 16:51:
Je kunt dan misschien beter dit doen
Nee. mysql_real_escape_string is voor input naar mysql. Voor een heel simpele switch zoals deze is gewoon vergelijken prima. Je moet alleen in je default zorgen dat er geen meuk in die $id komt, voor de rest is je $id altijd bekend en correct, anders matcht ie per definitie niet.

[ Voor 22% gewijzigd door MueR op 11-02-2011 16:57 ]

Anyone who gets in between me and my morning coffee should be insecure.


  • Staatslot
  • Registratie: December 2007
  • Laatst online: 31-10 22:10
MueR schreef op vrijdag 11 februari 2011 @ 16:56:
[...]

Nee. mysql_real_escape_string is voor input naar mysql. Voor een heel simpele switch zoals deze is gewoon vergelijken prima. Je moet alleen in je default zorgen dat er geen meuk in die $id komt, voor de rest is je $id altijd bekend en correct, anders matcht ie per definitie niet.
inderdaad, te snel gelezen dacht dat het ook naar mysql ging maar het wordt alleen gebruikt om een pagina te includen..
Pagina: 1