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

php via formulier gegeven uit database halen

Anoniem
Financial
13 antwoorden
  • Ik krijg het niet voor elkaar om via een zoekformulier gegevens uit een database te halen. In de database staan typenummer, pdfnaam en plaats. Als je in het formulier een typenummer invult, dan zou er het bijbehorende pdf formulier, via bv een link, moeten komen.
    Ik heb nu onderstaande code, maar zodra je op de submit knop drukt, krijg je alle gegevens uit de database.



    [code:1:a5e85ea325]<form action="<?echo $_SERVER["PHP_SELF"];?> " method="post">
    Artikel: <input type="text" name="intoets"> <input type="submit" name="verstuurd" value="Zoek typenummer">
    </form>
    <?php

    include ("config.inc");

    $tabel = "csi";

    if(!empty($_POST)) {

    if ($_POST['intoets']=="$typenummer") {

    // open database connectie.
    $connectie = mysql_connect($hostname, $gebruiker, $wachtwoord)
    or die ("Kan geen verbinding opbouwen!");

    // selecteer database.
    mysql_select_db($database) or die ("Kan geen database selecteren!");

    // Het opzetten van een vraagstelling
    $query = "SELECT * from $tabel";

    // Het uitvoeren van een vraagstelling
    $resultaat = mysql_query($query)
    or die ("Fout in query:$query. " . mysql_error());
    // Laat gegevens op het scherm zien
    while ( $rij = mysql_fetch_array($resultaat) )
    {

    // Vanuit array toewijzen van variabelen van de array $rij
    $typenummer = $rij["typenummer"];
    $pdfnaam = $rij["pdfnaam"];
    $plaats = $rij["plaats"];

    echo "Zoekresultaat:<a href=\"pdf/$plaats/$pdfnaam.pdf\" target=\"_blank\"> $typenummer</a>";
    }

    }
    else {

    ?>
    Artikel bestaat niet
    <a href="<?echo $_SERVER["PHP_SELF"];?>">Zoek opnieuw</a>
    <?php
    }
    }

    ?>
    [/code:1:a5e85ea325]

    Ik weet het, ik ben nog maar een beginner met php, maar kan iemand mij opweg helpen.
  • [quote:d86dbf293d]zodra je op de submit knop drukt, krijg je alle gegevens

    $query = "SELECT * from $tabel"; [/quote:d86dbf293d]

    Om met de woorden van Johan C. te spreken: "Da's logisch"

    Met een select * worden alle gegevens uit die tabel opgehaald.
    Je moet minimaal een "where"-clausule toevoegen. Dit limiteerd het resultaat tot de opgegeven vergelijking.
    't wordt dan zoiets als
    [code:1:d86dbf293d]"SELECT * from $tabel where typenummer = " . $_POST['intoets'][/code:1:d86dbf293d]
  • Bedankt voor je sneller reactie, maar nu krijg ik een SQL error

    [quote:8c7bf22615]Fout in query:SELECT * from csi WHERE typenummer = . You have an error in your SQL syntax near '' at line 1[/quote:8c7bf22615]

    Misschien moet ik het op een andere manier benaderen. Ik wil dus eigenlijk een zoekformulier waar men een typenummer intoest en dan de bijbehorende gebruiksaanwijzing in pdf formaat wordt geopend in een nieuw scherm. Er zijn een paar hondererd type nummers en 50 tot 100 gebruiksaanwijzingen.
  • Ik ken uiteraard de hele opbouw van je database en site niet, maar je aanpak lijkt me wel OK.
    De foutmelding lijkt te wijzen op een quote-jes probleem.
    Dus ergens die " of ' teveel of te weinig gebruikt.
    Kijk dit dus even goed na.
    Ook kun je de uiteindelijke query even naar je scherm schrijven dmv
    echo $query;
  • Ik dacht:[code:1:2aaa42fe40]$query = "SELECT *
    FROM $tabel
    WHERE typenummer = " . $_POST['intoets'];[/code:1:2aaa42fe40]veranderen in:[code:1:2aaa42fe40]$query = "SELECT *
    FROM $tabel
    WHERE typenummer='$_POST['intoets']'";[/code:1:2aaa42fe40]of:[code:1:2aaa42fe40]$query = "SELECT *
    FROM $tabel
    WHERE typenummer=$_POST['intoets']";[/code:1:2aaa42fe40]ffff uitprobleren.
  • Bedankt Jossan, ik heb nu de volgende code:
    [code:1:6039211976]
    <form action="<?echo $_SERVER["PHP_SELF"];?> " method="post">
    Artikel: <input type="text" name="intoets"> <input type="submit" name="verstuurd" value="Zoek typenummer">
    </form>

    <?php

    include ("config.inc");

    $tabel = "csi";
    $intoets = $_POST['intoets'];

    // open database connectie.
    $connectie = mysql_connect($hostname, $gebruiker, $wachtwoord)
    or die ("Kan geen verbinding opbouwen!");

    // selecteer database.
    mysql_select_db($database) or die ("Kan geen database selecteren!");

    // Het opzetten van een vraagstelling
    $query = ("SELECT * FROM $tabel WHERE typenummer='$intoets'");

    // Het uitvoeren van een vraagstelling
    $resultaat = mysql_query($query)
    or die ("Fout in query:$query. " . mysql_error());
    // Laat gegevens op het scherm zien
    while ( $rij = mysql_fetch_array($resultaat) )
    {

    // Vanuit array toewijzen van variabelen van de array $rij
    $typenummer = $rij["typenummer"];
    $pdfnaam = $rij["pdfnaam"];
    $plaats = $rij["plaats"];
    }
    echo "Zoekresultaat:<a href=\"pdf/$plaats/$pdfnaam.pdf\" target=\"_blank\"> $typenummer</a><br />";

    ?>
    [/code:1:6039211976]

    Maar hoe kan ik het nu zo maken dat de eerste keer als de pagina geladen wordt er geen zoekresultaten zijn te zien en als er niets is ingevuld en toch gesubmit wordt er een foutmelding komt.
  • Kijken of er daadwerkelijk iets 'gepost' is. Dus kijken of de variabele $_POST leeg is. Indien dat het geval is, komen ze op de pagina en hebben ze nergens op gedrukt.

    Om te kijken of ze het veld hebben ingevuld kun je kijken of dat veld een waarde heeft. Dus of $_POST['intoets'] niet leeg is.

    Lijken me eigenlijk de basisdingetjes…

    -Anne
  • Ik zou het zoiets oplossen:
    [code:1:a06338fb18]if (isset($_POST['intoets'])) {
    // intoets gevuld
    /** –bijbehorende actie (database openen)– */
    if /** hier kijken of record in database aanwezig is */ {
    // intoets geldig
    /** –bijbehorende actie (met betreffende record)– */
    }
    } else {
    // intoets ongeldig
    /** –bijbehorende actie (b.v. melding op scherm)– */
    }[/code:1:a06338fb18]Ik denk dat je er verder wel uitkomt. :wink:
  • jossan,

    Er staat me iets bij dat isset problemen op kan leveren, omdat de POST variabelen altijd een waarde hebben geloof ik. Misschien is het beter om er !empty van te maken ;)

    -Anne
  • [quote:ecc58bb751="termin8or"]Er staat me iets bij dat isset problemen op kan leveren, omdat de POST variabelen altijd een waarde hebben geloof ik. Misschien is het beter om er !empty van te maken ;)[/quote:ecc58bb751]Bedankt Anne,

    Dat zou inderdaad kunnen. (Ik ben zelf ook nog maar 2 maanden met PHP bezig :roll: )
    Heb ik er ook van geleerd!

    Jos
  • Bedankt allemaal voor het meedenken. Ik heb het nu werkend m.b.v. jullie tips, nadenken en zoeken. Ik heb nu deze code werkend.
    [code:1:4c8f66d529]
    <form action="<?echo $_SERVER["PHP_SELF"];?> " method="post">
    Artikel: <input type="text" name="intoets"> <input type="submit" name="verstuurd" value="Zoek typenummer">
    </form>

    <?php
    if ($_POST['verstuurd']) {

    include ("config.inc");

    $tabel = "csi";
    $intoets = $_POST['intoets'];


    // open database connectie.
    $connectie = mysql_connect($hostname, $gebruiker, $wachtwoord)
    or die ("Kan geen verbinding opbouwen!");

    // selecteer database.
    mysql_select_db($database) or die ("Kan geen database selecteren!");

    // Het opzetten van een vraagstelling
    $query = ("SELECT * FROM $tabel WHERE typenummer LIKE '$intoets'");

    // Het uitvoeren van een vraagstelling
    $resultaat = mysql_query($query)
    or die ("Fout in query:$query. " . mysql_error());
    // Laat gegevens op het scherm zien
    while ( $rij = mysql_fetch_array($resultaat) )
    {

    // Vanuit array toewijzen van variabelen van de array $rij
    $typenummer = $rij["typenummer"];
    $pdfnaam = $rij["pdfnaam"];
    $plaats = $rij["plaats"];
    }
    if ($_POST['intoets']=="$typenummer") {

    echo ("Zoekresultaat: <a href=\"pdf/" . $plaats . "/" . $pdfnaam . ".pdf\" target=\"_blank\">" . $typenummer . "</a><br />");
    }

    else {
    ?>
    Typenummer bestaat niet, let goed op hoofd letters en kleine letters.
    <a href="<?echo $_SERVER["PHP_SELF"];?>"><br />Zoek opnieuw</a>
    <?php
    }

    }
    ?>[/code:1:4c8f66d529]
  • Graag gedaan.
    Ik zag dat je nu [code:1:502cbc5b97]// Het opzetten van een vraagstelling
    $query = ("SELECT * FROM $tabel WHERE typenummer LIKE '$intoets'");[/code:1:502cbc5b97]gebruikt, terwijl je eerst[code:1:502cbc5b97]// Het opzetten van een vraagstelling
    $query = ("SELECT * FROM $tabel WHERE typenummer='$intoets'");[/code:1:502cbc5b97]gebruikte.
    Kan je me vertellen wat het verschil is tussen [typenummer LIKE '$intoets'] en [typenummer='$intoets']?
    Dan kan ik daar ook wat van leren.
  • Ik weet het verschil ook niet meer zo precies, ik was op zoek naar een manier om hoofd- en kleine letters invoer geen verschil te laten maken bij het zoeken in de database, maar daar kwam ik niet helemaal uit. Tijdens het uitproberen had ik dit ergens gelezen en heb het maar laten staan, want er is voor mij iig geen verschil te merken.

Beantwoord deze vraag

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