action "results.php"geeft leeg scherm

Status
Niet open voor verdere reacties.

kareltje1

Gebruiker
Lid geworden
19 aug 2009
Berichten
26
Hoi allemaal. Op mijn site kunnen mensen via een selectie zoeken naar type auto's

Echter wat niet werkt is het volgende.
<form action="results.php" method="post">

Als ik op de zoekbalk klik krijg ik wel de pagina results.php te zien maar die is leeg.
Verander ik bovenstaande door:

<form method="post">
Dus ik verwijder de action dan krijg ik de zoekresultaten wel maar dan op mn index pagina.
Maar ik wil ze op mn results.php pagina krijgen.

Iemand enig idee waarom mijn action het niet doet?
 
Tja dan is de vraag wat je op "results.php" doet met het formulier
 
bedoel je dat ik op results.php iets moet zetten wat door de action functie herkent wordt zodat de inhoud van de action daar gepost wordt?

Zo ja,
Wat moet ik daar dan neer zetten.
dit?
<form> </form>
 
Je stuurt het formulier met de "action=" naar results.php

Dan is het de bedoeling dat je op results.php het formulier gaat verwerken.

Je weet hoe PHP werkt?
 
Ik ben niet echt heel erg thuis in php.

Met hulp heb ik het volgende script gemaakt. Ik begrijp wel een groot deel er van maar het action deel niet echt en heb er naar gezocht maar kon het antwoord niet vinden in de tutorials op het web.

Code:
<?php
    error_reporting ( E_ALL );
    ini_set ( 'display_errors', 1 );
?>

<?php
include 'connect.php';
   ?>

<?php
    $merken = array("audi","bmw","opel");
    $kleuren = array("blauw","groen","rood",);
    if($_SERVER['REQUEST_METHOD'] == 'POST' ) {
        $where = array();
        if (isset($_POST["merk"]) && in_array($_POST["merk"],$merken)) {
            $where[] = "MERK='".$_POST["merk"]."'";
        }
        if (isset($_POST["kleur"]) && in_array($_POST["kleur"],$kleuren)) {
            $where[] = "KLEUR='".$_POST["kleur"]."'";
        }
        if (isset($_POST["bouwjaar"]) && preg_match("/^(19|20)\d\d$/i", $_POST["bouwjaar"])) {
            $where[] = "BOUWJAAR='".$_POST["bouwjaar"]."'";
        }
        if (count($where)==0) {
            echo "Geen zoektermen bekend. Opdracht geannuleerd.";
        } else {
            $query = "select ID, MERK, KLEUR, BOUWJAAR from catalog_tabel WHERE ".implode(" AND ",$where);
            if ($result = mysql_query($query)) {
                if (mysql_num_rows($result)<>0) {
                    while ( $row = mysql_fetch_assoc ( $result ) ) {
                        echo $row["MERK"]." - ".$row["KLEUR"]." - ".$row["BOUWJAAR"]."<br />";
                        $beschrijvingquery = "select BESCHRIJVING from beschrijving where Catalog_ID=".$row["ID"];
                        if ($beschrijvingresult = mysql_query($beschrijvingquery)) {
                            if (mysql_num_rows($beschrijvingresult)<>0) {
                                while ( $beschrijvingrow = mysql_fetch_assoc ( $beschrijvingresult ) ) {
                                    echo $beschrijvingrow["BESCHRIJVING"]."<br />";
                                }
                            } else {
                                echo "geen beschrijving<br />";
                            }
                        }
                        $fotoquery = "select FOTO from foto where Catalog_ID=".$row["ID"];
                        if ($fotoresult = mysql_query($fotoquery)) {
                            if (mysql_num_rows($fotoresult)<>0) {
                                while ( $fotorow = mysql_fetch_assoc ( $fotoresult ) ) {
                                    echo "<img src='".$fotorow["FOTO"]."' alt='".$row["MERK"]." - ".$row["KLEUR"]." - ".$row["BOUWJAAR"]."' /><br />";
                                }
                            } else {
                                echo "<img src='geenfoto.jpg' alt='geen foto' /><br />";
                            }
                        }
                    }
                } else {
                    echo "Geen auto's gevonden die voldoen aan uw zoekopdracht.";
                }
            }
        }
    }
 
?>
<hr />
<form method="post" action="results.php">
    <select name="merk">
        <option selected="selected">Merk</option>
        <option><?php echo implode("</option><option>",$merken); ?></option>
    </select>
    <select name="kleur">
        <option selected="selected">Kleur</option>
        <option><?php echo implode("</option><option>",$kleuren); ?></option>
    </select>
    <select name="bouwjaar">
        <option selected="selected">Bouwjaar</option>
        <option>1990</option>
        <option>1991</option>
        <option>1992</option>
    </select>
    <input type="submit" value="zoeken" />
</form>
 
Je huidige code verwacht dat de action naar dezelfde pagina als het formulier gaat (dus action="")

Daarom werkt het niet wanner je het formulier naar results.php verstuurt.

Wil je daar de resultaten laten zien moet je daar deze code in zetten
PHP:
<?php
    error_reporting ( E_ALL );
    ini_set ( 'display_errors', 1 );
?>

<?php
include 'connect.php';
   ?>

<?php
    $merken = array("audi","bmw","opel");
    $kleuren = array("blauw","groen","rood",);
    if($_SERVER['REQUEST_METHOD'] == 'POST' ) {
        $where = array();
        if (isset($_POST["merk"]) && in_array($_POST["merk"],$merken)) {
            $where[] = "MERK='".$_POST["merk"]."'";
        }
        if (isset($_POST["kleur"]) && in_array($_POST["kleur"],$kleuren)) {
            $where[] = "KLEUR='".$_POST["kleur"]."'";
        }
        if (isset($_POST["bouwjaar"]) && preg_match("/^(19|20)\d\d$/i", $_POST["bouwjaar"])) {
            $where[] = "BOUWJAAR='".$_POST["bouwjaar"]."'";
        }
        if (count($where)==0) {
            echo "Geen zoektermen bekend. Opdracht geannuleerd.";
        } else {
            $query = "select ID, MERK, KLEUR, BOUWJAAR from catalog_tabel WHERE ".implode(" AND ",$where);
            if ($result = mysql_query($query)) {
                if (mysql_num_rows($result)<>0) {
                    while ( $row = mysql_fetch_assoc ( $result ) ) {
                        echo $row["MERK"]." - ".$row["KLEUR"]." - ".$row["BOUWJAAR"]."<br />";
                        $beschrijvingquery = "select BESCHRIJVING from beschrijving where Catalog_ID=".$row["ID"];
                        if ($beschrijvingresult = mysql_query($beschrijvingquery)) {
                            if (mysql_num_rows($beschrijvingresult)<>0) {
                                while ( $beschrijvingrow = mysql_fetch_assoc ( $beschrijvingresult ) ) {
                                    echo $beschrijvingrow["BESCHRIJVING"]."<br />";
                                }
                            } else {
                                echo "geen beschrijving<br />";
                            }
                        }
                        $fotoquery = "select FOTO from foto where Catalog_ID=".$row["ID"];
                        if ($fotoresult = mysql_query($fotoquery)) {
                            if (mysql_num_rows($fotoresult)<>0) {
                                while ( $fotorow = mysql_fetch_assoc ( $fotoresult ) ) {
                                    echo "<img src='".$fotorow["FOTO"]."' alt='".$row["MERK"]." - ".$row["KLEUR"]." - ".$row["BOUWJAAR"]."' /><br />";
                                }
                            } else {
                                echo "<img src='geenfoto.jpg' alt='geen foto' /><br />";
                            }
                        }
                    }
                } else {
                    echo "Geen auto's gevonden die voldoen aan uw zoekopdracht.";
                }
            }
        }
    }
 
?>

en uiteraard de code uit je formulier halen.
 
kheb de code in de result.php pagina gezet maar ik krijg nu de volgende error in de scrolldown menus op mn index site:

"undefined variable merken"

heeft met de volgende regel te maken denk ik:
<?php echo implode("</option><option>",$merken); ?>

waarschijnlijk omdat de variabelen die ik gedefineerd heb nu op de result pagina staan.

Weet jij misschien een manier waarop ik dit kan corrigeren?
Ik heb al geprobeerd de variabelen te definieren op de index pagina maar dat helpt niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan