Problema cautare in site

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
nutzu123
Mesaje: 83

Problema cautare in site

Salut! Cand dau sa caut ceva in site in da ca rezultat toate fisierele din site :(

Pagina cu form.php

Cod: Selectaţi tot

<form id="searchthis" action="cauta.php" style="display:inline;" method="get">
<input id="namanyay-search-box" name="q" size="40" type="text" placeholder="Cauta pe site"/>
<input id="namanyay-search-btn" value="Search" type="submit"/>
</form>
Pagina search.php

Cod: Selectaţi tot

<?php
include('../configurare.php');
include('../functii.php');
$cautare= htmlentities ($_POST['search']);
$query="SELECT * FROM tags where cautare='" . $cautare . "'";
$res=mysql_query($query) or die(mysql_error());
if (mysql_num_rows($res)==0 && strlen($cautare)>2 && strlen($cautare)<100)
{
$cautare=str_replace("'","-",$cautare);
$cautare=str_replace("`","-",$cautare);
$cautare=str_replace("[","",$cautare);
$cautare=str_replace("]","",$cautare);
$cautare=str_replace(",","-",$cautare);
$cautare=str_replace(".","-",$cautare);
$cautare=str_replace(":","-",$cautare);
$cautare=str_replace(";","-",$cautare);
$cautare=str_replace("?","",$cautare);
$cautare=str_replace("!","",$cautare);
$cautare=str_replace("&","-",$cautare);
$cautare=str_replace("@","",$cautare);
$cautare=str_replace(")","",$cautare);
$cautare=str_replace("(","",$cautare);
$cautare=str_replace("~","",$cautare);
$cautare=str_replace("#","",$cautare);
$cautare=str_replace("%","",$cautare);
$cautare=str_replace("^","",$cautare);
$cautare=str_replace("*","",$cautare);
$cautare=str_replace("'\'","",$cautare);
$cautare=str_replace("|","",$cautare);
$cautare=str_replace("<","",$cautare);
$cautare=str_replace(">","",$cautare);
$cautare=str_replace("/","",$cautare);
$cautare=str_replace("+","-",$cautare);
$cautare=str_replace("=","",$cautare);
$cautare=str_replace("+","-",$cautare);
$cautare=str_replace("~","-",$cautare);
$cautare=str_replace("http","_",$cautare);
$cautare=str_replace("www","_",$cautare);
$cautare=str_replace("pula ","_",$cautare);
$cautare=str_replace("puta","_",$cautare);
$cautare=str_replace("putza","_",$cautare);
$cautare=str_replace("pulica","_",$cautare);
$cautare=str_replace("puloi","_",$cautare);
$cautare=str_replace("putulica","_",$cautare);
$cautare=str_replace("putzulica","_",$cautare);
$cautare=str_replace("pizda","_",$cautare);
$cautare=str_replace("pizdulica","_",$cautare);
$cautare=str_replace("coi","_",$cautare);
$cautare=str_replace("coaie","_",$cautare);
$cautare=str_replace("puli","_",$cautare);
$cautare=str_replace("pizde","_",$cautare);
$cautare=str_replace("muie","_",$cautare);
$cautare=str_replace("sloboz","_",$cautare);
$cautare=str_replace("mata","_",$cautare);
$cautare=str_replace("morti","_",$cautare);
$cautare=str_replace("matii","_",$cautare);
$cautare=str_replace("cacat","_",$cautare);
$cautare=str_replace("pisat","_",$cautare);
$cautare=str_replace("rahat","_",$cautare);
$cautare=str_replace("muiut","_",$cautare);
$cautare=str_replace("suge","_",$cautare);
$cautare=str_replace("sugi","_",$cautare);
$cautare=str_replace("porno","_",$cautare);
$cautare=str_replace("porn","_",$cautare);
$cautare=str_replace("fute","_",$cautare);

$q="INSERT INTO tags (cautare) VALUES('" . $cautare . "')";
$cautare=str_replace(" ","-",$cautare);
mysql_query($q) or die(mysql_error());
}
mysql_close();

header("Location: cauta.php?q=" . $cautare . "");
?>
Pagina cu rezulate cauta.php

Cod: Selectaţi tot

<?php
include('../configurare.php');
include('../functii.php');
$tag = htmlentities($_GET['cautare']);
        
$query = "SELECT * FROM tonuri WHERE titlu LIKE '%$tag%' ORDER BY data_ad DESC";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
$result = mysql_query($query);
if(mysql_num_rows($result)>0)
{    
echo '<div id="postswrapper">';
} else {
    echo '<div class="error">Fisier inexistent!</div>';
}
$total_pages=1;
while ($row=mysql_fetch_array($result))
{
$des1=str_replace($tag, "<u>$tag</u>", $row['titlu']);
$titluurl=str_replace(" ","-",$row['titlu']);
$titluurl=str_replace("'","-",$titluurl);
$titluurl=str_replace("`","-",$titluurl);
$titluurl=str_replace("[","",$titluurl);
$titluurl=str_replace("]","",$titluurl);
$titluurl=str_replace("(","",$titluurl);
$titluurl=str_replace(")","",$titluurl);
$titluurl=str_replace(",","-",$titluurl);
$titluurl=str_replace(".","-",$titluurl);
$titluurl=str_replace(":","-",$titluurl);
$titluurl=str_replace(";","-",$titluurl);
$titluurl=str_replace("?","",$titluurl);
$titluurl=str_replace("!","-",$titluurl);
$titluurl=str_replace("&","",$titluurl);
$titluurl=str_replace("@","",$titluurl);
$titluurl=str_replace("*","",$titluurl);
$titluurl=str_replace("^","",$titluurl);
$titluurl=str_replace("%","",$titluurl);
$titluurl=str_replace("#","",$titluurl);
$titluurl=str_replace("=","",$titluurl);
$titluurl=str_replace("+","-",$titluurl);
$titluurl=str_replace("<","",$titluurl);
$titluurl=str_replace(">","",$titluurl);
$titluurl=str_replace("|","",$titluurl);
$titluurl=str_replace("{","",$titluurl);
$titluurl=str_replace("}","",$titluurl);
$titluurl=str_replace("\"","",$titluurl);
$titluurl=str_replace("/","",$titluurl);
$titluurl=str_replace("~","-",$titluurl);
$id=$row['id'];
$titlu=$row['titlu'];
$categorie=$row['categorie'];
$data=explode(" ",$row['data_ad']);
$data=explode("-",$data['0']);
echo "<li>
<div class='post-title'>" . $i . ". <a href='descarca.php?id=" . $row['id'] . "' title='" . $row['titlu'] . "'>" . $row['titlu'] . "</a></div>
<div class='post-details'>Accesari: " . $row['hits'] . " | Categorie: tonuri " . $row['categorie'] . "</div></li>";$i++;}
?>
Ce poate fi gresit in scriptul asta? Stie cineva, va multumesc!

MarPlo Mesaje: 4343
Salut
In formular nu e caseta cu name="cautare", ci "q".
In "cauta.php" inlocuieste:

Cod: Selectaţi tot

$tag = htmlentities($_GET['cautare']);
Cu:

Cod: Selectaţi tot

$tag = htmlentities($_GET['q']);
 

nutzu123 Mesaje: 83
multumesc mult! ai drepate si cat m-am uitat prin tot scriptul.

Merge totul perfect la cautare, dar pagina search.php e inexistenta. Adica orice cuvant cautat pe site nu intra in baza de date. Am schimbat totul si am pus

Cod: Selectaţi tot

<form id="searchthis" action="search.php" style="display:inline;" method="get">
catre pagina respectiva si nu merge.

MarPlo Mesaje: 4343
Nu e caseta cu name="search" in formular, iar datele nu sunt trimise prin POST; asa cum incerci sa le preiei in "search.php".
Incearca sa inlocuesti:

Cod: Selectaţi tot

$cautare= htmlentities ($_POST['search']);
Cu:

Cod: Selectaţi tot

$cautare = htmlentities($_REQUEST['q']);
 

nutzu123 Mesaje: 83
merge ca uns! multumesc mult! dar mai am o intrebare. Am ceva cu java script, adica atunci cand apas pe butonul de cautare sa ma atentioneze ca nu am scris nimic in casuta si as vrea ceva de genul da sa fie php integratin script. mai mult de 2 caractere sa poata cauta pe site. Sie cineva o solutie sau cum sa caut pe net?

steell Mesaje: 190
adaugi la formular atributul onsubmit="return functie()"
iar codul javascript va contine o functie in care preiei valoarea campului si daca contine minim 2 caractere sa trimita formularul:

Cod: Selectaţi tot

<script type="text/javascript">
function functie() {
a = document.getElementById("namanyay-search-box");
if (a.value.length <2) {
alert('Minim 2 caractere'):
return false;
}
else {
return true;
}
}
</script>
<form onsubmit="return functie()" id="searchthis" action="cauta.php" method="get">
<input id="namanyay-search-box" name="q" size="40" type="text" />
<input id="namanyay-search-btn" value="Search" type="submit"/>
</form>

MarPlo Mesaje: 4343
Ca alternativa, se poate si doar cu HTML, folosind atribute adaugate in HTML5: "required" si "pattern" (nu functioneaza in IE 8 sau mai vechi).

Cod: Selectaţi tot

<form id="searchthis" action="cauta.php" method="get">
<input id="namanyay-search-box" name="q" size="40" type="search"  placeholder="Cauta" required="required" pattern="[A-z0-9_ -]{2,50}" title="Intre 2 si 50 caractere: litere, numere, liniute" />
<input id="namanyay-search-btn" value="Search" type="submit"/>
</form>

Subiecte similare