Pagina 1 din 1

metoda cautare avansata pe categorii

Scris: Sâm Iun 16, 2012
de duvibv
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

Scris: Sâm Iun 16, 2012
de MarPlo
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:

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";
- Daca sunt si alte variante, cine cunoaste sa le scrie aici.

metoda cautare avansata pe categorii

Scris: Mie Iun 20, 2012
de duvibv
Am facut scriptul sa functioneze, cu ajutorul explicatiilor date de marplo in postul lui.
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"; 
?>
Explicatiile sunt in script. Daca ai nelamuriri poti intreba fara probleme.
Numai bine.

metoda cautare avansata pe categorii

Scris: Vin Iun 22, 2012
de adymdc86
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:

Cod: Selectaţi tot

<a href=/proiect_final/anunt.php?id=<?php echo $row['id']; ?>
nu inteleg cum anume trebuie.
Daca ai putea sa fi putin mai explicit in limita timpului, sunt cam la inceput in php...

metoda cautare avansata pe categorii

Scris: Vin Iun 22, 2012
de Viruzzz
Schimba /proiect_final/anunt.php cu caut.php

metoda cautare avansata pe categorii

Scris: Vin Iun 22, 2012
de adymdc86
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...

metoda cautare avansata pe categorii

Scris: Vin Iun 22, 2012
de Viruzzz
trebuie sa'ti faci form de cautare ca sa cauti, ce este mai sus nu are nici un form:)

de ex:

Cod: Selectaţi tot

<form method="post" action="caut.php">
<input type="text" name="search" />
<input name="submit" value="Search" />
</form>
e luat de la mine de pe site, dar modificat pt acesta

metoda cautare avansata pe categorii

Scris: Vin Iun 22, 2012
de adymdc86
am creat o pagina find.php in care am pus urmatorul cod:

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>

insa cand dau cautare imi afiseaza 0 rezultate, desi exista acel cuvant.

metoda cautare avansata pe categorii

Scris: Sâm Iun 23, 2012
de MarPlo
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):

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>
- Despre formulare, adresa URL si PHP poti invata in lectia: Utilizare formulare.

metoda cautare avansata pe categorii

Scris: Sâm Iun 23, 2012
de adymdc86
Am pus codul de mai jos in pagina caut.php

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>
    

iar in alta pagina find am pus

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>
insa tot nu imi gaseste nici un rezultat. linkul de sus din browser dupa ce dau cauta este urmatorul.

Cod: Selectaţi tot

numesite.com/caut.php?term=manager&search_judet=Timis&search_category=Calculatoare
iar tabela anunturi are urmatoarele campuri

Cod: Selectaţi tot

id
email
categorie
judet
titlu
descriere
expirat
activat
vizualizari
telefon
Imi puteti spune unde ar putea fi problema?

metoda cautare avansata pe categorii

Scris: Dum Iun 24, 2012
de MarPlo
Incearca sa inlocuiesti in scriptul tau, partea asta de cod:

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";
}
Cu aceasta:

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'";
}