Salutare useri marplo,
Nu vreau sa cer scriptul complet dar as vrea sfaturi cum sa incep sa fac o cautare avansata.
As dori ceva ca pe tocmai.ro (cautare+categorie+judet) si sa tina cont de valorile din fiecare!
Ex. cautare:masina categorie:auto judet:Brasov
Bineinteles categoriile, judetul etc luate din bd!
Niste sfaturi de inceput ar fi utile!
Va multumesc
metoda cautare avansata pe categorii
-
- Mesaje:14
metoda cautare avansata pe categorii
MarPlo
Mesaje:4343
Salut
In principiu se preia cu $_POST valoarea din formularul transmis si se adauga ca egalitate la coloana asociata ei, pentru includere in conditia WHERE din comanda SELECT.
Uite un exemplu din care sa te inspiri:
- Daca sunt si alte variante, cine cunoaste sa le scrie aici.
In principiu se preia cu $_POST valoarea din formularul transmis si se adauga ca egalitate la coloana asociata ei, pentru includere in conditia WHERE din comanda SELECT.
Uite un exemplu din care sa te inspiri:
Cod: Selectaţi tot
$categ = isset($_POST['categorie']) ? "AND `categorie`='". $_POST['categorie']. "'" : '';
$judet = isset($_POST['judet']) ? "AND `judet`='". $_POST['judet']. "'" : '';
$sql = "SELECT * from `nume_tabel` WHERE `cautare`='masina' $categ $judet";
duvibv
Mesaje:14
Am facut scriptul sa functioneze, cu ajutorul explicatiilor date de marplo in postul lui.
Multumesc foarte mult .
Acesta e scriptul:
Explicatiile sunt in script. Daca ai nelamuriri poti intreba fara probleme.
Numai bine.
Multumesc foarte mult .
Acesta e scriptul:
Cod: Selectaţi tot
<?php
include "includes/header.html";
include "includes/menu_stanga.html";
include "includes/menu_dreapta.html";
$term = isset($_GET['term']) ? $_GET['term']. "" : '';
$judet = isset($_GET['search_judet']) ? $_GET['search_judet']. "" : '';
$categ = isset($_GET['search_category']) ?$_GET['search_category']. "" : '';
?>
<div id="content">
<?php
// conecteaza la baza de date
$conn = new mysqli('localhost', 'root', '', 'db');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
if($judet==0){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND categorie=$categ";
}
elseif($categ==0){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet=$judet";
}
else{
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet=$judet AND categorie=$categ";
}
// executa interogarea si retine datele returnate
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// Parcurge si afiseaza randurile gasite
while($row = $result->fetch_assoc()) {
?>
<a href=/proiect_final/anunt.php?id=<?php echo $row['id'];?>
<?php
echo '<br />'. $row['titlu']. ' - '. $row['continut']. ' - '. $row['judet'];
echo '<hr>';
echo '</a>';
}
}
else {
echo '0 rezultate';
}
$conn->close();
?>
</div>
<?php
include "includes/footer.html";
?>
Numai bine.
adymdc86
Mesaje:4
Am pus codul dat de tine intr-o pagina caut.php si am facut modificarile la campuri cum am eu in baza, categ cu categorie, respectiv continut cu descriere. In rest campurile conincid.
M-am impotmolit insa aici:
nu inteleg cum anume trebuie.
Daca ai putea sa fi putin mai explicit in limita timpului, sunt cam la inceput in php...
M-am impotmolit insa aici:
Cod: Selectaţi tot
<a href=/proiect_final/anunt.php?id=<?php echo $row['id']; ?>
Daca ai putea sa fi putin mai explicit in limita timpului, sunt cam la inceput in php...
Viruzzz
Mesaje:18
Schimba /proiect_final/anunt.php cu caut.php
adymdc86
Mesaje:4
Am pus: <a href=/caut.php?id=<?php echo $row['id']; ?>
Insa nu inteleg cum functioneaza, adica daca accesez pagina numedomeniu.com/caut.php imi spune 0 rezultate...
Insa nu inteleg cum functioneaza, adica daca accesez pagina numedomeniu.com/caut.php imi spune 0 rezultate...
Viruzzz
Mesaje:18
trebuie sa'ti faci form de cautare ca sa cauti, ce este mai sus nu are nici un form:)
de ex:
e luat de la mine de pe site, dar modificat pt acesta
de ex:
Cod: Selectaţi tot
<form method="post" action="caut.php">
<input type="text" name="search" />
<input name="submit" value="Search" />
</form>
adymdc86
Mesaje:4
am creat o pagina find.php in care am pus urmatorul cod:
insa cand dau cautare imi afiseaza 0 rezultate, desi exista acel cuvant.
Cod: Selectaţi tot
<?php
include("include/db.php");
require_once("include/header.php");
require_once("include/content.php");
require_once("include/footer.php");
?>
<form action="caut.php" method="post" name="frm" >
<input class="custom" type="text" maxlength="30" name="search" size="26" />
<select name="judet">
<option value="selecteaza">Selecteaza judetul</option>
<option value="Alba">Alba</option><option value="Arad">Arad</option>
<option value="Arges">Arges</option>
<option value="Bacau">Bacau</option>
<option value="Bihor">Bihor</option>
<option value="Bistrita-Nasaud">Bistrita-Nasaud</option>
<option value="Botosani">Botosani</option>
<option value="Brasov">Brasov</option>
<option value="Braila">Braila</option>
<option value="Bucuresti">Bucuresti</option>
<option value="Buzau">Buzau</option>
<option value="Caras-Severin">Caras-Severin</option>
<option value="Calarasi">Calarasi</option>
<option value="Cluj">Cluj</option>
<option value="Constanta">Constanta</option>
<option value="Covasna">Covasna</option>
<option value="Dambovita">Dambovita</option>
<option value="Dolj">Dolj</option>
<option value="Galati">Galati</option>
<option value="Giurgiu">Giurgiu</option>
<option value="Gorj">Gorj</option>
<option value="Harghita">Harghita</option>
<option value="Hunedoara">Hunedoara</option>
<option value="Ialomita">Ialomita</option>
<option value="Iasi">Iasi</option>
<option value="Ilfov">Ilfov</option>
<option value="Maramures">Maramures</option>
<option value="Mehedinti">Mehedinti</option>
<option value="Mures">Mures</option>
<option value="Neamt">Neamt</option>
<option value="Olt">Olt</option>
<option value="Prahova">Prahova</option>
<option value="Satu-Mare">Satu-Mare</option>
<option value="Salaj">Salaj</option>
<option value="Sibiu">Sibiu</option>
<option value="Suceava">Suceava</option>
<option value="Teleorman">Teleorman</option>
<option value="Timis">Timis</option>
<option value="Tulcea">Tulcea</option>
<option value="Vaslui">Vaslui</option>
<option value="Valcea">Valcea</option>
<option value="Vrancea">Vrancea</option>
</select>
<select name="categorie">
<option value='selecteaza'>Selecteaza categoria</option>
<option value="Afaceri">Afaceri</option>
<option value="Agricole">Agricole</option>
<option value="Animale de casa">Animale de casa</option>
<option value="Calculatoare">Calculatoare</option>
<option value="Carti/Reviste">Carti/Reviste</option>
<option value="Constructii">Constructii</option>
<option value="Diverse">Diverse</option>
<option value="Donatii">Donatii</option>
<option value="Hobby">Hobby</option>
<option value="Imobiliare">Imobiliare</option>
<option value="Locuri de munca">Locuri de munca</option>
<option value="Masini">Masini</option>
<option value="Matrimoniale">Matrimoniale</option>
<option value="Medicale">Medicale</option>
<option value="Mobilier">Mobilier</option>
<option value="Muzica">Muzica</option>
<option value="Obiecte de arta">Obiecte de arta</option>
<option value="Pierderi/Gasiri">Pierderi/Gasiri</option>
<option value="Prestari servicii">Prestari servicii</option>
<option value="Sport/Foro">Sport/Foro</option>
<option value="Telefoane">Telefoane</option>
<input type="submit" size="20" value="" class="search" />
</form>
MarPlo
Mesaje:4343
Salut
Trebuie sa corelezi datele din Formular cu cele in care scriptul PHP le preia.
De exemplu, daca in php sunt preluate cu $_GET , in <form> trebuie: method="get" .
La fel si la numele campurilor, daca in php e: $_GET['search_judet'] , campul respectiv din formular trebuie sa aibe: name="search_judet" .
Deci, formularul ar fi cam asa (sau poti corecta dupa cum ai tu codul):
- Despre formulare, adresa URL si PHP poti invata in lectia: Utilizare formulare.
Trebuie sa corelezi datele din Formular cu cele in care scriptul PHP le preia.
De exemplu, daca in php sunt preluate cu $_GET , in <form> trebuie: method="get" .
La fel si la numele campurilor, daca in php e: $_GET['search_judet'] , campul respectiv din formular trebuie sa aibe: name="search_judet" .
Deci, formularul ar fi cam asa (sau poti corecta dupa cum ai tu codul):
Cod: Selectaţi tot
<form action="caut.php" method="get" name="frm" >
<input class="custom" type="text" maxlength="30" name="term" size="26" />
<select name="search_judet">
<option value="selecteaza">Selecteaza judetul</option>
...
</select>
<input type="submit" size="20" value="" class="search" />
</form>
adymdc86
Mesaje:4
Am pus codul de mai jos in pagina caut.php
iar in alta pagina find am pus
insa tot nu imi gaseste nici un rezultat. linkul de sus din browser dupa ce dau cauta este urmatorul.
iar tabela anunturi are urmatoarele campuri
Imi puteti spune unde ar putea fi problema?
Cod: Selectaţi tot
<?php
include("include/db.php");
require_once("include/header.php");
require_once("include/content.php");
require_once("include/footer.php");
date_default_timezone_set('Europa/Bucharest');
$data = date("Y-m-d");
$up = mysql_query("update anunturi set expirat='1' where expirat='0' and dataexp='$data'");
$up1 = mysql_query("update utilizatori set ban='0' where ban='1' and data_unban='$data'");
if(isset($_COOKIE['login'])){
$utilizator = $_COOKIE['login'];
$sel = mysql_num_rows(mysql_query("select id from utilizatori where ban='1' and utilizator = '$utilizator'"));
if($sel == 1){
header( 'Location: logout.php' ) ;
}
}
$term = isset($_GET['term']) ? $_GET['term']. "" : '';
$judet = isset($_GET['search_judet']) ? $_GET['search_judet']. "" : '';
$categorie = isset($_GET['search_category']) ?$_GET['search_category']. "" : '';
?>
<div id="content">
<?php
// conecteaza la baza de date
$conn = new mysqli('localhost', 'elwzovnu_testts', 'Ir}_br=TRmb_', 'elwzovnu_testtt');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
if($judet==0){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND categorie=$categorie";
}
elseif($categorie==0){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet=$judet";
}
else{
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet=$judet AND categorie=$categorie";
}
// executa interogarea si retine datele returnate
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// Parcurge si afiseaza randurile gasite
while($row = $result->fetch_assoc()) {
?>
<a href=/caut.php?id=<?php echo $row['id'];?>
<?php
echo '<br />'. $row['titlu']. ' - '. $row['descriere']. ' - '. $row['judet'];
echo '<hr>';
echo '</a>';
}
}
else {
echo '0 rezultate';
}
$conn->close();
?>
</div>
Cod: Selectaţi tot
<?php
include("include/db.php");
require_once("include/header.php");
require_once("include/content.php");
require_once("include/footer.php");
?>
<form action="caut.php" method="get" name="frm" >
<input class="custom" type="text" maxlength="30" name="term" size="26" />
<select name="search_judet">
<option value="selecteaza">Selecteaza judetul</option>
<option value="Timis">Timis</option>
</select>
<select name="search_category">
<option value="selecteaza">Selecteaza CATEGORIA</option>
<option value="Calculatoare">Calculatoare</option>
</select>
<input type="submit" size="20" value="Cauta" class="search" />
</form>
Cod: Selectaţi tot
numesite.com/caut.php?term=manager&search_judet=Timis&search_category=Calculatoare
Cod: Selectaţi tot
id
email
categorie
judet
titlu
descriere
expirat
activat
vizualizari
telefon
MarPlo
Mesaje:4343
Incearca sa inlocuiesti in scriptul tau, partea asta de cod:
Cu aceasta:
Cod: Selectaţi tot
if($judet==0){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND categorie=$categorie";
}
elseif($categorie==0){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet=$judet";
}
else{
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet=$judet AND categorie=$categorie";
}
Cod: Selectaţi tot
if($judet==''){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND categorie='$categorie'";
}
elseif($categorie==''){
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet='$judet'";
}
else{
$sql = "SELECT * FROM `anunturi` WHERE `titlu` LIKE '%$term%' AND judet='$judet' AND categorie='$categorie'";
}