Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Probleem met hyperlink en bijbehorende variabele

Defreeze
4 antwoorden
  • Ik ben vrij nieuw in php/MySQL dus misschien doe ik het sowieso niet handig; ik sta open voor alle tips.
    Het gaat om een site waar teksten van koorstukken staan met vertalingen. Ik ben nu bezig om deze wat 'beter' op te zetten. De teksten worden vanuit een gewoon tekstbestand ingevoegd in de uitvoerpagina's. Ik heb een database opgezet met daarin de volgende gegevens:
    componist, titel, naam tekstbestand, naam vertalingbestand, naam tekstschrijver, naam vertaler, beginregel, naam uitvoerpagina.
    Op de frontpagina wordt met php een lijst samengesteld uit de db van de aanwezige teksten/vertalingen en er zijn vier sorteringen te kiezen: op componist, op titel, op tekstschrijver en op beginregel. Dit doe ik met een while. Hieronder deze code uit de componistgesorteerde versie:
    [code:1:956498cd72]
    <?php
    include ("db_connect.php");
    $query="SELECT * FROM teksten ORDER BY componist";
    $resultaat = mysql_query($query);
    while ($record = mysql_fetch_object($resultaat)){
    echo '<a href="tekst.php"';
    echo " target=";
    echo '"main" >';
    echo "$record->componist";
    echo " - $record->titel";
    echo "<br></a>
    ";
    }
    ?>
    [/code:1:956498cd72]
    Deze code wordt uiteraard omgeven door de nodige html.
    Dit levert mij een keurige lijst hyperlinks op bij uitvoer. Nu wil ik alleen liever niet voor elke uiteindelijke keuze een aparte pagina maken, maar ik wil één basispagina die weer dynamisch, op grond van de gemaakte keuze de juiste tekst en vertaling etc. laadt. Daarvoor moet ik dus op een of andere manier de gemaakte keuze overbrengen naar die pagina.
    Ik kan b.v. dit invoegen:
    [code:1:956498cd72]
    $bestand = "$record->bestand"; session_register("bestand");
    [/code:1:956498cd72]
    Die variabele krijg ik dan wel beschikbaar in de volgende pagina, maar dan staat die variabele na het samenstellen van de eerste pagina op het laatste bestand, dus daar heb ik niets aan.
    Dus als er b.v. een manier is om die variabele op het goede record te krijgen dan is het verder vrij simpel, maar hoe doe ik zoiets?

    Overigens staan er wat veel echo's in de code maar dat heeft te maken met mijn experimenten met invoegen van mogelijke codes om dit probleem mee op te lossen.
    Bij voorbaat dank voor reacties,
    groet,
    Rein
  • Ik ben al wat verder. Het werkt nu met de volgende code:
    [code:1:b6e8318cd8]
    <?php
    include ("db_connect.php");
    $query="SELECT componist, titel, tekstbestand, vertalingbestand, schrijver, vertaler, beginregel, bestand FROM teksten ORDER BY componist";
    $resultaat = mysql_query($query) or die (mysql_error());
    $aantal = mysql_num_rows($resultaat);
    $teller = 0;
    for ($i= 0; $i<$aantal; $i++){
    $row= mysql_fetch_object($resultaat);
    echo "<a href=\"tekst.php?bestand=$row->bestand\" target='main'>$row->titel</a><br>
    ";
    }
    ?>
    [/code:1:b6e8318cd8]
    Nu moet ik uitvinden hoe ik in het volgende bestand de variabele gebruik om naar de betreffende rij te wijzen, maar daar zou ik uit moeten kunnen komen. Desondanks sta ik natuurlijk open voor tips. :wink:
  • Op de volgende pagina kan je de meegestuurde waarde uitlezen uit de $_GET array. En door nu op dezelfde tabel in je database een query uit te voeren met het bestand als criterium in de WHERE clause kan je ervoor zorgen dat alleen het record wat je nodig hebt terug komt.

    [code:1:36e32a234f]
    <?php
    include ("db_connect.php");

    $bestand = $_GET["bestand"];

    $query = "SELECT componist, titel, tekstbestand, vertalingbestand, schrijver, vertaler, beginregel, bestand
    FROM teksten
    WHERE bestand = '" . $bestand . "'";
    $resultaat = mysql_query($query) or die (mysql_error());
    // enz.
    ?>
    [/code:1:36e32a234f]

    Is er overigens een specifieke reden waarom je de teksten in losse bestanden plaatst en niet in de database?
    Het lijkt mij namelijk makkelijker om de teksten in de database te zetten en deze met een numerieke ID op te halen.
  • Geweldig bedankt. Het werkt.
    Dat ik met losse tekstbestanden werk heeft waarschijnlijk gewoon ermee te maken dat deze technieken sowieso vrij nieuw voor mij zijn. Ik vind het zelf geen bezwaar, maar misschien ga ik dat in een later stadium ook nog eens veranderen.
    Nogmaals bedankt!

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.