5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)
  • Q:
    Bijdrager
    Guidoooh

    Probleem met php zoek functie script

    Ik ben zelf een zoekfunctie aan het maken voor de website van m’n zusje, alleen loop tegen een probleem aan. Ik heb ervoor een stukje script van internet gepakt en deze zelf verder uitgebreid, maar nu loop ik tegen het volgende probleem aan. Wanneer ik in het script echo’s gebruik dan valt de functie buiten de lay-out van de website en als ik $naam = ‘php code dan hier’; gebruik dan komt die wel in de lay-out maar laat de functie maar een zoekresultaat zien. Ik gebruik een templateparser en (moet) draardoor moet ik dat $naam = ‘php code dan hier’; gebruiken.

    Een voorbeeld van wat er gebeurd, vul invoer vak het woord zon als zoekterm en dan categorie afbeeldingen en druk dan op zoeken.
    http://www.fancyshots.nl/search2.php – Hierbij vallen de zoekresultaten buiten de lay-out
    http://www.fancyshots.nl/testa.php – Hier valt het binnen de lay-out maar wordt er maar een zoekterm weergeven

    Script van http://www.fancyshots.nl/testa.php
    [code:1:0b9edc3bd5]
    // Toon als $_POST[’zoek’] verstuurd is
    if(isset($_POST[’zoek’]))
    {
    // Stel variable in voor onze post zoekwoord.
    $zoekwoord = $_POST[’zoekwoord’];

    // Je zoekwoord is korter dan 3 karakters en dan krijg je teveel resultaten
    if(strlen($zoekwoord) <= 2){
    $searcherror1 = ‘Je zoekterm is te kort.’;
    }
    else
    {
    // Zoek op zoekwoord en vraag aantal op om te gebruiken :)

    if($_POST[’categorie’] == ‘items’){
    $sql = mysql_query("SELECT * FROM items WHERE titel LIKE ‘%$zoekwoord%’ AND publiceren = ‘Ja’ ORDER BY datum")or die(mysql_error());
    }

    elseif($_POST[’categorie’] == ‘images’){
    $sql = mysql_query("SELECT * FROM images WHERE omschrijving LIKE ‘%$zoekwoord%’ ORDER BY id")or die(mysql_error());
    }

    $aantal = mysql_num_rows($sql);

    // Als er geen zijn toon niets.
    if($aantal == "0")
    {
    $searcherror2 = ‘<b>Zoekresultaten:</b><br />
    Er is niets gevonden in de database…’;
    }
    else
    {
    // Als er wel zijn toon mooi tabelletje + wat informatie.
    $searchterm = ‘Zoekresultaten voor: "’.$zoekwoord.’".<br /><br />
    <b>Resultaten:</b><br />’;

    // Zet een while loop en haal informatie op
    while($result = mysql_fetch_assoc($sql))
    {
    if($_POST[’categorie’] == ‘items’){
    // Defineer opgehaalde items
    $id = $result[’id’];
    $titel = $result[’titel’];
    $datum = $result[’datum’];
    $intro = $result[’intro’];

    // Stel het toon tabelletje op
    $searchresults = ‘<p>
    <b><a class="hidlink" href="item.php?id=’.$id.’"">"’ .$titel. ‘"</a></b><br />
    <a>’ .$datum. ‘ – ‘ .$intro. ‘</a> <a class="hidlink" href="item.php?id=’.$id.’"">Lees verder…</a>
    </p>’;
    }

    elseif($_POST[’categorie’] == ‘images’)
    {
    // Defineer opgehaalde items
    $id = $result[’id’];
    $omschrijving = $result[’omschrijving’];
    $alt = $result[’alt’];
    $afbeelding = $result[’afbeelding’];
    $album = $result[’album’];
    $product = $result[’product’];
    $auteur = $result[’auteur’];

    // Stel het toon tabelletje op
    $searchresults = ‘<p>
    <b>Naam: </b><a href="’ .$afbeelding. ‘" rel="lightbox[searchimage]" title="Omschrijving: ‘ .$omschrijving. ‘ <br /> Gemaakt met een: ‘ .$product. ‘<br /> Auteur: ‘ .$auteur. ‘">"’ .$alt. ‘"</a><br />
    <b>Omschrijving: </b> <a>’ .$omschrijving. ‘</a><br />
    <b>Ga naar het album: </b><a class="hidlink" href="image.php?naam=’ .$album. ‘&id=’ .$id. ‘">Klik hier</a><br />
    </p>’;
    }

    }
    }
    }
    }

    // Zoek formulier
    $searchform = ‘<form method="post" action="testa.php">
    <b>Door FancyShots.nl zoeken:</b><br />
    Naam: <input type="text" name="zoekwoord">
    Categorie: <select name="categorie" >
    <option value="images">Afbeeldingen</option>
    <option value="items">Items</option>
    </select>
    <input type="submit" name="zoek" value="Zoeken"><br />
    </form>’;
    [/code:1:0b9edc3bd5]

    http://www.fancyshots.nl/search2.php
    [code:1:0b9edc3bd5]
    // Toon als $_POST[’zoek’] verstuurd is
    if(isset($_POST[’zoek’]))
    {
    // Stel variable in voor onze post zoekwoord.
    $zoekwoord = $_POST[’zoekwoord’];

    // Je zoekwoord is korter dan 3 karakters en dan krijg je teveel resultaten
    if(strlen($zoekwoord) <= 2){
    $searcherror1 = ‘Je zoekterm is te kort.’;
    }
    else
    {
    // Zoek op zoekwoord en vraag aantal op om te gebruiken :)

    if($_POST[’categorie’] == ‘items’){
    $sql = mysql_query("SELECT * FROM items WHERE titel LIKE ‘%$zoekwoord%’ AND publiceren = ‘Ja’ ORDER BY datum")or die(mysql_error());
    }

    elseif($_POST[’categorie’] == ‘images’){
    $sql = mysql_query("SELECT * FROM images WHERE omschrijving LIKE ‘%$zoekwoord%’ ORDER BY id")or die(mysql_error());
    }

    $aantal = mysql_num_rows($sql);

    // Als er geen zijn toon niets.
    if($aantal == "0")
    {
    $searcherror2 = ‘<b>Zoekresultaten:</b><br />
    Er is niets gevonden in de database…’;
    }
    else
    {
    // Als er wel zijn toon mooi tabelletje + wat informatie.
    $searchterm = ‘Zoekresultaten voor: "’.$zoekwoord.’".<br /><br />
    <b>Resultaten:</b><br />’;

    // Zet een while loop en haal informatie op
    while($result = mysql_fetch_assoc($sql))
    {
    if($_POST[’categorie’] == ‘items’){
    // Defineer opgehaalde items
    $id = $result[’id’];
    $titel = $result[’titel’];
    $datum = $result[’datum’];
    $intro = $result[’intro’];

    // Stel het toon tabelletje op
    $searchresults = ‘<p>
    <b><a class="hidlink" href="item.php?id=’.$id.’"">"’ .$titel. ‘"</a></b><br />
    <a>’ .$datum. ‘ – ‘ .$intro. ‘</a> <a class="hidlink" href="item.php?id=’.$id.’"">Lees verder…</a>
    </p>’;
    }

    elseif($_POST[’categorie’] == ‘images’)
    {
    // Defineer opgehaalde items
    $id = $result[’id’];
    $omschrijving = $result[’omschrijving’];
    $alt = $result[’alt’];
    $afbeelding = $result[’afbeelding’];
    $album = $result[’album’];
    $product = $result[’product’];
    $auteur = $result[’auteur’];

    // Stel het toon tabelletje op
    $searchresults = ‘<p>
    <b>Naam: </b><a href="’ .$afbeelding. ‘" rel="lightbox[searchimage]" title="Omschrijving: ‘ .$omschrijving. ‘ <br /> Gemaakt met een: ‘ .$product. ‘<br /> Auteur: ‘ .$auteur. ‘">"’ .$alt. ‘"</a><br />
    <b>Omschrijving: </b> <a>’ .$omschrijving. ‘</a><br />
    <b>Ga naar het album: </b><a class="hidlink" href="image.php?naam=’ .$album. ‘&id=’ .$id. ‘">Klik hier</a><br />
    </p>’;
    }

    }
    }
    }
    }

    // Zoek formulier
    $searchform = ‘<form method="post" action="testa.php">
    <b>Door FancyShots.nl zoeken:</b><br />
    Naam: <input type="text" name="zoekwoord">
    Categorie: <select name="categorie" >
    <option value="images">Afbeeldingen</option>
    <option value="items">Items</option>
    </select>
    <input type="submit" name="zoek" value="Zoeken"><br />
    </form>’;
    [/code:1:0b9edc3bd5]

    Hopelijk kan iemand mij helpen, want ben al ruim twee uur bezig met het oplossen van dit probleem maar kom niet tot een oplossing.

    Bijdrager
    The_J

    Layoutproblemen zijn te wijten aan niet-valide HTML. (En misschien verkeerde plaatsing en foute css – kan allemaal nog maar heb ik niet naar gekeken)

    Je script is zo lek als een mandje, iedereen kan willekeurig code uitvoeren via die scripts:)

    Bijdrager
    Guidoooh

    Ligt niet aan het html, dat weet ik sowieso al;) Ligt aan het gebruik van echo of $naam = ‘php code’; gebruik bij beide pagina’s dezelfde html code.

    En dat het php scripts niet echt veilig is dacht ik al wel, aangezien eerst keer is dat ik probeer een zoekfunctie te maken. Helaas heb ik nog geen script of tutorial gevonden met een beter zoekfunctie script. Gaat me nu even om het idee dat ik er een heb gemaakt en dat die werkt en daarna kijk naar hoe veilig het script is.

    Bijdrager
    Guidoooh

    Ik hou het wel bij de zoekmachine die ik er op heb staan, topic kan op slot gezet worden.

    Bijdrager
    sturb
    ”The_J”

    Layoutproblemen zijn te wijten aan niet-valide HTML. (En misschien verkeerde plaatsing en foute css – kan allemaal nog maar heb ik niet naar gekeken)

    Heeft met beide niks te maken.

    Het komt doordat je een echo aanroept in een functie. Die echo word uitgevoerd op het moment dat het script uitgevoerd word, op de server dus; voordat je html opgebouwd is.

    Kan het heel lastig uitleggen mijn excuses. Maar als je zoekt op functies, php en de “return” value dan moet je er wel komen:)

5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.