Avatar billede jamler Nybegynder
17. juli 2007 - 14:00

Grafisk implimentering af iSearch på site.

Det er ikke så nemt, ikke at kunne sproget synderligt. I dette tilfælde php.
Jeg har overtaget administrationen af en foreningshjemmeside i forbindelse med en flytning fra ét hotel til et andet. Flytningen har

desværre også medført, at den gamle søgefunktion gik død. Derfor har jeg i stedet fundet iSearch2, som fungerer fint i sammenhæng med

siden. Desværre går implimeteringen af søgefunktionen i den eksisterende side knap så godt, som det kan ses på iaml.dk/isearch2/ .

Søgefunktionen bliver præsenteret gennem en php-side, kaldet index (originalt nok). Denne side sammensættes af tre delsider, som vist

her:

---------------------
include "$isearch_path/inc/header.inc.php";

echo "
        <h1 class=\"isearch\">$isearch_pageTitle</h1>
";

/* Include the search itself. */
require_once "$isearch_path/isearch.inc.php";

/* Display the search form */
require_once "$isearch_path/inc/form_internal.inc.php";

include "$isearch_path/inc/footer.inc.php";
-----------------------


Header.inc.php ligger lige efter <body> og footer.inc.php lige før </body>. Det oplagte ville være at lægge den generelle formatering

(med henvisning til sitets css) i header og binde en ende på det i footer. Desværre er det ikke fuldt tilstrækkeligt. Midterdelen kan

jeg ikke lægge ind i den box, formateringen lægger op til, som vist på den gamle (og uvirksomme) søgeside:

iaml.dk/diverse/konference2.php?id=oversigt2
Jeg er ude af stand til at skære php'en ned, så den stadig fungerer, men undlader at bryde formateringen fra header. (<h1>Søg på dette

site</h1> og "søg på nettet"-knappen skal også fjernes) Kan nogen hjælpe mig?

Source på iaml.dk/isearch2/ er som tidligere nævnt en sammensætning af header, isearch, form_internal og footer. Header og footer er

meget bygget op omkring echo, og er derfor, som siden ses, hvis man beder om at få vist source. Det er de andre imidlertid ikke . De ser

sådan ud i stedet:

isearch
--------------------
$isearch_path = dirname(__FILE__);
@define('IN_ISEARCH', true);

require_once "$isearch_path/inc/core.inc.php";
require_once "$isearch_path/inc/search.inc.php";

/* Open the search component (read only) */
isearch_open(True);

$partial = isset($_REQUEST['partial']) ? $_REQUEST['partial'] : ($isearch_config['search_partial'] == 1);
$advanced = isset($_REQUEST['advanced']) ? $_REQUEST['advanced'] : 0;

if (isset($_REQUEST['s_all']))
{
    /* Using advanced search form. Build up search string. */
    $advanced = 1;
    $s = '';
    $s_all = trim($_REQUEST['s_all']);
    $s_any = trim($_REQUEST['s_any']);
    if ($s_all != '')
    {
        $s .= '+' . ereg_replace(' +', '+', $s_all);
    }
    if ($s_any != '')
    {
        $s .= ' ' . $s_any;
    }







    if (!$isearch_config['allow_dashes'])
    {
        $s_without = trim($_REQUEST['s_without']);
        if ($s_without != '')
        {
            $s .= '-' . ereg_replace(' +', '-', $s_without);
        }
    }
}
else if (isset($_REQUEST['s']))
{
    $s = $_REQUEST['s'];
}
else
{
    $s = '';
}
$s = trim($s);

if (isset($_REQUEST['internet']))
{
    @ob_end_clean();
    $url =

'http://www.iSearchTheNet.com/search.php?s='.urlencode(isearch_cleanSearchString($s)).'&amp;lang='.$isearch_config['lang_name'].'&amp;st

yle='.$isearch_config['style_name'];
    if (headers_sent())
    {
        echo '
<body>
<script type="text/javascript">
<!--
window.location="'.$url.'"
-->
</script>
</body>
<noscript>
<head>
<meta http-equiv="REFRESH" content="1;URL='.$url.'">
</head>
</noscript>
';
    }
    else
    {
        @header( 'Location: '.$url );
    }

    /* Close the search component */
    isearch_close();

    exit;      /*** EXIT ***/
}

/* Check the action and set the page title accordingly */
if (isset($_REQUEST['action']))
{
    $isearch_pageTitle = $isearch_lang['results_title'];
}
else
{
    $isearch_pageTitle = $isearch_lang['search_title'];
}

if ($s == '')
{
    /* We do not have a search string to process */
}
else if ((preg_match('#[\\x0d\\x0a]#', $s)) || (preg_match('#content-type multipartmixed#', $s)))
{
    echo '<p>Probable SPAM hacking attempt detected.</p>
';
}
else
{
    /* Process the search form data */
    if ($isearch_config['char_set'] == 'utf-8')
    {
        $s = utf8_decode($s);
    }

    /* Clean the search strings */
    $s = isearch_cleanSearchString($s);

    if (isset($_REQUEST['groups']))
    {
        $group = '';
        foreach ($_REQUEST['groups'] as $g)
        {
            if ($g == 'isearch_all')
            {
                $group = '';
                break;
            }

            if ($group != '')
            {
                $group .= ',';
            }
            $group .= $g;
        }
    }
    else if (isset($_REQUEST['group']))
    {
        $group = ($_REQUEST['group'] == 'isearch_all') ? '' : $_REQUEST['group'];
    }
    else
    {
        /* Search all groups */
        $group = '';
    }

    if ($isearch_config['soundex'] == 1)
    {
        /* Always use soundex */
        $numResults = isearch_find($s, $group, $partial, True);

        if (($numResults == 0) && (!$partial) && ($isearch_config['search_partial'] == 2))
        {
            $numResults = isearch_find($s, $group, True, True);
        }
    }
    else
    {
        /* Try normal match */
        $numResults = isearch_find($s, $group, $partial, False);

        if (($numResults == 0) && (!$partial) && ($isearch_config['search_partial'] == 2))
        {
            /* Try partial match */
            $numResults = isearch_find($s, $group, True, False);
        }

        if (($numResults == 0) && ($isearch_config['soundex'] == 2))
        {
            /* Try soundex match */
            $numResults = isearch_find($s, $group, $partial, True);
        }
    }

    isearch_showResults(isset($_REQUEST['page']) ? $_REQUEST['page'] : 1);
}

--------------


form_internal
---------------
if ($isearch_config['char_set_8_bit'])
{
    $trans = get_html_translation_table(HTML_ENTITIES);
}
else
{
    $trans = get_html_translation_table(HTML_SPECIALCHARS);
}

$htmlSearchString = strtr($s, $trans);

if (eregi('/(sitemap|stats)\\.php$', $_SERVER['PHP_SELF']))
{
    $target = $isearch_config['base_url'].'/index.php';
}
else
{
    $target = $_SERVER['PHP_SELF'];
}

echo '
<form method="post" action="index.php" target="'.$target.'" name="isearch_form" style="text-align: center">
';

if ($advanced)
{
    echo '

<script type="text/javascript">
<!--
function searchClickedAdvanced(form)
{
    if ((form.s_all.value==\'\') && (form.s_any.value==\'\') && (form.s_without.value==\'\') && ((form.s_exact == null) ||

(form.s_exact.value==\'\')))
    {
        alert("Please enter at least 1 term to search for.");
        return false;
    }
    return true;
}
// -->
</script>




';
    if (!isset($s_all))
    {
        $s_all = '';
    }
    if (!isset($s_any))
    {
        $s_any = '';
    }
    if (!isset($s_without))
    {
        $s_without = '';
    }
    echo '
    <tr>
        <td><label for="s_all">'.$isearch_lang['with_all'].'</label></td>
        <td><input type="text" maxlength="255" name="s_all" size="'.$isearch_config['search_box_width'].'" value="'.$s_all.'" /></td>
    </tr>
    <tr>
        <td><label for="s_any">'.$isearch_lang['with_any'].'</label></td>
        <td><input type="text" maxlength="255" name="s_any" size="'.$isearch_config['search_box_width'].'" value="'.$s_any.'" /></td>
    </tr>
</table>
';





    if (!$isearch_config['allow_dashes'])
    {
        echo '
    <tr>
        <td><label for="s_without">'.$isearch_lang['without'].'</label></td>
        <td><input type="text" maxlength="255" name="s_without" size="'.$isearch_config['search_box_width'].'" value="'.$s_without.'"

/></td>
    </tr>
    <tr>
        <td colspan="2">&nbsp;</td>
    </tr>
';
    }

    $checked = $partial ? ' checked="checked"' : '';
    echo '
    <tr>
        <td><label for="partial">'.$isearch_lang['partial'].'</label>:</td>
        <td><input type="checkbox" name="partial"'.$checked.' /></td>
    </tr>';





    echo '
    <tr>
        <td colspan="2">&nbsp;</td>
    </tr>
';

    if ($isearch_config['search_internet'])
    {
        echo '
    <tr>
        <td style="text-align: center"><input type="submit" value="'.$isearch_lang['searchbutton'].'" onclick="return

searchClickedAdvanced(this.form);" /></td>
        <td style="text-align: center"><input type="submit" name="internet" value="'.$isearch_lang['searchinternetbutton'].'"

onclick="return searchClickedAdvanced(this.form);" /></td>
    </tr>';
    }
    else
    {
        echo '
    <tr>
        <td colspan="2" style="text-align: center"><input type="submit" value="'.$isearch_lang['searchbutton'].'" onclick="return

searchClickedAdvanced(this.form);" /></td>
    </tr>';
    }

    echo '
    <tr>
        <td style="text-align: center"><a target="_blank"

href="'.$isearch_config['base_url'].'help/help.php">'.$isearch_lang['helpbutton'].'</a></td>
        <td style="text-align: center"><a href="' . $_SERVER['PHP_SELF'] . '">'.$isearch_lang['simple'].'</a></td>
    </tr>
</table>
';
}
else
{
    echo '
<script type="text/javascript">
<!--
function searchClickedSimple(form)
{
';
    if ($isearch_config['check_empty_search'])
    {
        echo '    if (form.s.value==\'\')
    {
        alert("'.$isearch_lang['please_enter'].'");
        return false;
    }
';
    }
    echo '    return true;
}
// -->
</script>
';


    if (!isset($s))
    {
        $s = '';
    }

    echo '
<div style="text-align: center; margin: 0 auto" >
    <label for="s">'.$isearch_lang['simple'].'</label>:
    <input type="text" maxlength="255" name="s" size="'.$isearch_config['search_box_width'].'" value="'.$htmlSearchString.'" />
';
    if ($isearch_config['form_show_partial'])
    {
        $checked = $partial ? ' checked="checked"' : '';
        echo '
    <label for="partial">'.$isearch_lang['partial'].'</label>:
    <input type="checkbox" name="partial"'.$checked.' />
';
    }



    echo '
    <input type="submit" value="'.$isearch_lang['searchbutton'].'" onclick="return searchClickedSimple(this.form);" />
';

    if ($isearch_config['search_internet'])
    {
        echo '
    <input type="submit" name="internet" value="'.$isearch_lang['searchinternetbutton'].'" onclick="return

searchClickedSimple(this.form);" />
';
    }

    if ($isearch_config['search_help_link'])
    {
        echo '
    <a target="_blank" href="'.$isearch_config['base_url'].'help/help.php">'.$isearch_lang['helpbutton'].'</a>
';
    }

    if ($isearch_config['form_show_advanced'])
    {
        echo '
    <a href="' . $_SERVER['PHP_SELF'] . '?advanced=1">'.$isearch_lang['advanced'].'</a>
';
    }
    echo '
</div>
';
}

echo '
<input type="hidden" name="action" value="search" />
</form>
';


----------------
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester