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] Ik doe iets fout maar weet niet wat...

InZane
4 antwoorden
  • Hallo,

    Ik heb een klein tabelletje met de volgende indeling:

    CREATE TABLE prod (
    name varchar(100) NOT NULL default "",
    nr int(5) NOT NULL,
    descr text NOT NULL,
    PRIMARY KEY (nr),
    UNIQUE KEY nr (nr),
    UNIQUE KEY name (name)
    ) TYPE=MyISAM COMMENT="Products";

    Ik heb een werkend php programma om data toe te voegen aan de tabel.
    Ik heb ook een werkend programma om alle records als een lijst te tonen.
    Ik probeer nu een programma te maken die een specifiek record toont. Ik wil die routine als volgt aanroepen:

    http://localhost/pdc/listprod.php?prodnr=3

    Mijn progje ziet er zo uit:

    <?
    # standaard routine met logingegevens
    include 'db.php';
    ?>
    <html>
    <head>
    <title>Products/title>
    </head>
    <body>

    <?
    # setup SQL statement
    $sql = " SELECT * FROM prod WHERE nr = '$prodnr'";
    # SQL statement uitvoeren
    $rs = mysql_query($sql, $cid);
    if (mysql_error()) { print "Database Error: $sql " . mysql_error(); }
    # resultaat tonen
    print "<p><b>Products</b><p>
    ";
    print "<table border=0>";
    $name = $row["name"];
    $nr = $row["nr"];
    $descr = $row["descr"];
    print "<table border=0>";
    print "<tr><td>$name</td><td>$nr</td><td>$descr</td><tr>";
    print "</table>";
    ?>
    </body>
    </html>

    Er komt echter geeneen record naar voren terwijl een product met nr=3 wel degelijk bestaat (gechecked met PHPMYADMIN).
    Wat doe ik verkeerd?

    Alvast bedankt,
    Webguy
  • Vervang $prodnr een met $_GET["prodnr"], waarschijnlijk is dat alles.

    En voortaan even eerst zoeken op dit forum, het is al meerdere malen aan bod geweest.

    - Bas
  • [quote:c3ec29dec0="webguy"]
    [code:1:c3ec29dec0]
    # setup SQL statement
    $sql = " SELECT * FROM prod WHERE nr = '$prodnr'";
    [/code:1:c3ec29dec0]
    [/quote:c3ec29dec0]

    Wordt dus dit:
    [code:1:c3ec29dec0]
    $sql = " SELECT * FROM prod WHERE nr = $_GET['prodnr']";
    [/code:1:c3ec29dec0]

    De var hoef je niet tussen quotes (') te zetten in dit geval (getal).
  • [quote:80542c98d2="InZane"]De var hoef je niet tussen quotes (') te zetten in dit geval (getal).[/quote:80542c98d2]Correctie, je moet de variabele[b:80542c98d2]naam[/b:80542c98d2] [i:80542c98d2]altijd[/i:80542c98d2] tussen quotes zetten! Dit is niet alleen een voorschrift van PHP maar ook een goede manier om in enige mate te garanderen dat het script bij toekomstige versies van PHP blijft werken.

    Nogmaals: ook al bevat de variabele een getal, de verwijzing in de array is aan de hand van een naam (string) en moet tussen aanhalingstekens. Het zal ook werken zonder, maar dat kan ik de toekomst veranderen.

    - Bas

Beantwoord deze vraag

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