Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pretraga na sajtu

[es] :: PHP :: Pretraga na sajtu

Strane: 1 2

[ Pregleda: 4042 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Pretraga na sajtu23.10.2011. u 09:37 - pre 152 meseci
Pozdrav svima, video sam jednu istu vrstu pretrage na vise sajtova, link . Pa me zanima da li neko zna da li ima negde da se skine source code za ovu skriptu, ili ako nema da li je tesko da se napravi ovako nesto? U pitanju je pretraga sa leve strane.
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Pretraga na sajtu23.10.2011. u 10:31 - pre 152 meseci
Pa ovo nije bas klasicna pretraga, gde ti uneses neki tekst pa ti on trazi slicne stvari u bazi. Ovo je jos lakse napraviti.

Sve ovo moze lako da se napravi osnovnim znanjem PHP-a povezanog sa MySQL-om (nesto malo AJAX-a za sminku mada ne mora). Ovo ne verujem da je "nadjena" skripta negde na netu pa iskoriscena, verujem da su slicne skripte (kakve bi drugacije mogle biti), pa ti deluje da su iste. U sustini, imas bazu podataka u kojoj ti se nalaze proizvodi i kategorije, kada neko stiklira odredjenu kategoriju radi ti se najprostiji MySQL SELECT ... WHERE query, potom ispis dobijenih podataka... ukoliko korisnik klikne na odredjeni proizvod, dobija jos neke informacije iz te baze podataka itd...

Iz teksta tvog pitanja mi deluje da nisi bas sklon programiranju u PHP-u, ali, ukoliko imas zelju da ga naucis, mislim da ti je ovo odlican primer. Cak, osnovni kod ne oduzima mnogo vremena. Ukoliko ti je ovo potrebno za neku firmu itd, najvise vremena ce ti otici na sminkanje ovakvog sajta, a ne na kod. Sad, ne znam da li su ti potrebne i porudzbine itd, ali to je neka druga stvar.
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu23.10.2011. u 12:43 - pre 152 meseci
Treba mi za neku licnu upotrebu, ne za neku firmu. Ok, kad cekiram nesto na osnovu toga pravim upit u bazu i izvlacim podatke, samo mi nije jasno kako da posle svakog cekiranja stranica se automatski osvezi i izbaci rezultate. Mozda uz pomoc pomenutog AJAX-a?
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Pretraga na sajtu23.10.2011. u 12:52 - pre 152 meseci
Bas za to AJAX sluzi :)

Ako ti zaglavi negde, vici :)
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Pretraga na sajtu23.10.2011. u 15:09 - pre 152 meseci
Ne osvežava se cela stranica već određeni element (u ovom slučaju div). Kada bi se cela stranica osvežavala nema potrebe da se koristi javascript/Ajax.

Ono što prvo moraš uraditi da bi dobio ovako nešto jeste da uradiš javascript koji će uzimati elemente iz svake forme i vraćati čekirane rezultate (onclick event).
Jednostavan primer:
Code:
<html>
<head><script type="text/javascript">
function CheckBoxProvera(forma) {
  var e = document.forma.elements.length;
  var broj=0;
  var cekirano = "";

  for(broj=0;broj<e;broj++)
  {
    if(document.forma.elements[broj].name=="monitori")
    {
      if (document.forma.elements[broj].checked==true)
      {
      cekirano+=document.forma.elements[broj].value+",";
      }
    }
  }
  document.getElementById("rezulatati").innerHTML = "Cekirano: "+cekirano;
}
  </script>
</head>
<body>
    <form name="forma" action="" method="false">
      <div><input onclick="CheckBoxProvera('forma_za_monitore')" type="checkbox" name="monitori" value="11 Wide"/>11.1" Wide</div>
      <div><input onclick="CheckBoxProvera('forma_za_monitore')" type="checkbox" name="monitori" value="12 Wide"/>12.1" Wide</div>
      <div><input onclick="CheckBoxProvera('forma_za_monitore')" type="checkbox" name="monitori" value="14 Wide"/>14.1" Wide</div>
      <div><input onclick="CheckBoxProvera('forma_za_monitore')" type="checkbox" name="monitori" value="15 Wide"/>15.4" Wide</div>
      <div><input onclick="CheckBoxProvera('forma_za_monitore')" type="checkbox" name="monitori" value="17 Wide"/>17" Wide</div>
      <div><input onclick="CheckBoxProvera('forma_za_monitore')" type="checkbox" name="monitori" value="Tablet PC"/>Tablet PC (Touch screen)</div>
    </form>
    
    <div id="rezulatati"></div>
</body>
</html>

Sve ostalo radi php i Ajax. Čekirane rezulate proslediš php skripti koja pravi upit (npr. WHERE monitori = '14' OR monitori = '17'). I na kraju dobijene rezultate preko Ajax-a prikazuješ u određenom polju/elementu.
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu23.10.2011. u 21:19 - pre 152 meseci
Hvala na odgovorima
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu26.10.2011. u 17:20 - pre 152 meseci
E probao sam ovu skripticu da prilagodim mojim zeljama, ali nisam uspeo. Moja forma bi izgledala ovako (malo sam je promenio u odnosu na onu sto sam prvo pitao).

Code:

<html>
<head><script type="text/javascript">
function CheckBoxProvera(forma) {
  var e = document.forma.elements.length;
  var broj=0;
  var cekirano = "";

  for(broj=0;broj<e;broj++)
  {
    if(document.forma.elements[broj].name=="monitori")
    {
      if (document.forma.elements[broj].checked==true)
      {
      cekirano+=document.forma.elements[broj].value+",";
      }
    }
  }
  document.getElementById("rezulatati").innerHTML = "Cekirano: "+cekirano;
}
  </script>
</head>
<body>
    <form name="url" action="" method="post">
        <table>
          <tr><td>
            Proizvodjac
          </td></tr>
          <tr><td>
            <select name="racunari">
                <option value="">Izaberite proizvodjaca</option>  
                <option value="acer">Acer</option>
                <option value="dell">Dell</option>
                <option value="hp">HP</option></select>
          </td></tr>
          <tr><td>
            Cena
          </td></tr>
          <tr><td>
            od <input type="text" size="3" maxlength="5" name="cenaod"> do <input type="text" size="3" maxlength="5" name="cenado">
          </td></tr>
          <tr><td>
            Kolicina RAM-a
          </td></tr>
          <tr><td>
            od <input type="text" size="3" maxlength="5" name="ramod"> do <input type="text" size="3" maxlength="5" name="ramdo">
          </td></tr>
          <tr><td>
            Velicina HDD
          </td></tr>
          <tr><td>
                <input type="text" size="15" maxlength="15" name="godina" value="hdd">
          </td></tr>
          <tr><td>
            Graficka
          </td></tr>
          <tr><td>
            Integrisana<input type="checkbox" value="integrisana" name="graficka">
            Neintegrisana<input type="checkbox" value="neintegrisana" name="graficka">
            Svi<input type="checkbox" value="svi" name="graficka">
          </td></tr>    
        </table> 
  
  
        <input type="submit" value="Submit" />
    
    <div id="rezulatati"></div>
</body>
</html>


Ono sto mi ne uspeva je sledece:

- Samo uspem da dobijem u div-u za izbacivanje rezultata vrednosti cekiranih polja. Ovo sto treba da biram sa liste, i ovo od-do , kao i za unos polja ne dobijam.
- Pretragu baze vrsim pomocu php, jel za to u action napisem ime stranice koja ce da proverava, u njoj napravim kod da potrazi u bazi i te podatke vrati nazad? Problem bi mi bio kako da odatle vratim podatke?
-
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Pretraga na sajtu27.10.2011. u 14:24 - pre 152 meseci
Primer za Ajax pretragu:

forma za pretragu (npr. proizvodi.php):
Code:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sr" lang="sr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
function pretraga_polja() {

r = document.getElementById("racunari").value; //racunari
c1 = document.getElementById("c1").value; //Cena od
c2 = document.getElementById("c2").value; //Cena do
r1 = document.getElementById("r1").value; //RAM od
r2 = document.getElementById("r2").value; //RAM do
hdd = document.getElementById("hdd").value; //HDD

//Provera 3 čekiranih polja
if (document.getElementById("opcija1").checked == true) o1 = 1; else o1=0;
if (document.getElementById("opcija2").checked == true) o2 = 1; else o2=0;
if (document.getElementById("opcija3").checked == true) o3 = 1; else o3=0;
$("#rezultati").html("Učitavam...");
$.ajax({
          type: "POST",
          url: "pretraga.php?racunari="+r+"&c1="+c1+"&c2="+c2+"&r1="+r1+"&r2="+r2+"&hdd="+hdd+"&o1="+o1+"&o2="+o2+"&o3="+o3,
          data: "status=1",
          success: function(msg){
          $("#rezultati").html(msg);
          $("#rezultati").css("display","none");
          $("#rezultati").slideDown(400);
           },
          error: function(msg){
          $("#rezultati").html(msg);
          }
        });
}
</script>
</head>
<body>
    <form name="moja_forma" action="" method="post">
        <table>
          <tr>
              <td>Proizvodjac</td>
          </tr>
          <tr>
              <td><select id="racunari" name="racunari">
                  <option value="">Izaberite proizvodjaca</option>  
                  <option value="acer">Acer</option>
                  <option value="dell">Dell</option>
                  <option value="hp">HP</option>
                </select>
              </td>
           </tr>
           <tr>
              <td>Cena</td>
           </tr>
           <tr>
              <td>od <input id="c1" type="text" size="3" maxlength="5" name="cena1"> do <input id="c2" type="text" size="3" maxlength="5" name="cena2"></td>
           </tr>
           <tr>
              <td>Kolicina RAM-a</td>
           </tr>
           <tr>
              <td>od <input id="r1" type="text" size="3" maxlength="5" name="ram1"> do <input id="r2" type="text" size="3" maxlength="5" name="ram2"></td>
           </tr>
           <tr>
              <td>Velicina HDD</td>
           </tr>
           <tr>
              <td><input id="hdd" type="text" size="15" maxlength="15" name="godina" value=""></td>
           </tr>
           <tr>
              <td>Graficka</td>
           </tr>
           <tr>
              <td>
              Integrisana<input id="opcija1" type="checkbox" value="integrisana" name="graficka"> | 
              Neintegrisana<input id="opcija2" type="checkbox" value="neintegrisana" name="graficka"> | 
              Svi<input id="opcija3" type="checkbox" value="svi" name="graficka">
              </td>
           </tr>    
        </table> 
  
  
        <input type="button" onclick="pretraga_polja();" value="Submit" />
    </form>
    
    <div id="rezultati"></div>
</body>
</html>


pretraga.php
Code:
<?php
   
  if (!isset($_REQUEST["racunari"]) AND !isset($_REQUEST["c1"])  AND !isset($_REQUEST["c2"]) AND !isset($_REQUEST["r1"])  AND !isset($_REQUEST["r2"])  AND !isset($_REQUEST["hdd"]) AND !isset($_REQUEST["o1"]) AND !isset($_REQUEST["o2"]) AND !isset($_REQUEST["o3"])) {
   echo "Greška prilikom pretrage";
   die;
   } else {
   $racunari = $_REQUEST["racunari"];
   $cena1 = $_REQUEST["c1"]; $cena2 = $_REQUEST["c2"];
   $ram1  = $_REQUEST["r1"]; $ram2  = $_REQUEST["r2"];
   $hdd   = $_REQUEST["hdd"];
   $integrisana    = $_REQUEST["o1"];
   $neintegrisana  = $_REQUEST["o2"];
   $svi  = $_REQUEST["o3"];
   
   ?>
   <div style="background-color: #ccc; color: #000; padding: 6px;" >
     <div><b>Pretraga:</b></div>
     <div>&nbsp;</div>
   
     <div>Proizvođač: <?php echo $racunari;?></div>
     <div>Cena: <?php echo $cena1; ?> - <?php echo $cena2; ?></div>
     <div>RAM: <?php echo $ram1; ?> - <?php echo $ram2; ?></div>
     <div>HDD: <?php echo $hdd; ?></div>
     <div>Integrisana: <?php echo $integrisana; ?> Neintegrisana: <?php echo $neintegrisana; ?> Svi: <?php echo $svi; ?></div>
   </div>
   
   <div>&nbsp;</div>
   
   <div style="background-color: #000; color: #FFF; padding: 6px; width: 250px;" >
    <div>MySQL upit:</div>
    <div>&nbsp;</div>
    SELECT * FROM proizvodi <br />WHERE proizvodjac = '<?php echo $racunari;?>'  
    <br />AND (cena>=<?php echo (int)$cena1;?> AND cena<=<?php echo (int)$cena2; ?>)
    <br />AND (ram>=<?php echo (int)$ram1;?> AND ram<=<?php echo (int)$ram2; ?>)
    <br />AND hdd>=<?php echo (int)$hdd;?>
    <br />AND integrisana = <?php echo (int)$integrisana;?>
    <br />AND neintegrisana = <?php echo (int)$neintegrisana;?>
    <br />AND svi = <?php echo (int)$svi;?>
   </div>
<?php
}
?>

Naravno, potrebno je da izmeniš upit u zavisnosti od dizajna tvoje baze podataka i proveriš sva polja pre upita (da li je u pitanju broj, zaštita od inject...).
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu27.10.2011. u 20:39 - pre 152 meseci
Ej super, sljaka ;) . Ali sad se naravno pojavio novi problem. Znam da napravim upit za bazu za svako polje, ali ne znam to da iskombinujem. Tj. da pojednostavim na primeru, ne znam da napravim upit za samo odredjene vrednosti. npr. ako izaberem samo da li je graficka integrisana i velicina HDD, a nista drugo nije izabrano kako da napravim upit? Ako koristim AND, u tom slucaju ako nije izabrano neko polje nece da nadje nista. A ako stavim OR, onda nece da nadje samo racunare koji ispunjavaju uslove. Ja bi jedino znao da napravim za svaku kombinaciju upit uz pmoc IF :) . Da li neko moze da mi pomogne sa boljim resenjem?
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Pretraga na sajtu27.10.2011. u 20:48 - pre 152 meseci
Najbolje resenje, za svaku opciju stavis if :)
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu27.10.2011. u 21:06 - pre 152 meseci
Problem je samo sto imam za ovakvu situaciju 26 kombinacija, a kad budem nekad radio nesto drugo i prosirio formu pretrazivanja imao bi ih ko zna koliko. Mora da postoji neko bolje resenje.
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu28.10.2011. u 09:58 - pre 152 meseci
Neki predlog?
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Pretraga na sajtu28.10.2011. u 10:26 - pre 152 meseci
Citat:
dakipro: Najbolje resenje, za svaku opciju stavis if :)

ili organizuj malo bolje kod, skupi sve opcije koje imas u niz i samo ih vrti svuda gde ih prikazujes. Onda u petlji imas isset(opcija, listaSvihOpcija) i nisi ograincen brojem opcija. Stim sto ovde mozes da grupises samo proste AND = opcije, ostale time from-to i LIKE i slicno ili grupisi na drugo mesto ili ostavi tako kako jesu trenutno
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu28.10.2011. u 17:40 - pre 152 meseci
Nisam te bas najbolje razumeo, ali cu da izguglam malo i da probam nesto da napravim, pa ako ne uspem javicu se za par dana, posto cu biti u nemogucnosti nekoliko dana da pridjem racunaru.
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Pretraga na sajtu28.10.2011. u 19:32 - pre 152 meseci
Ukoliko formu generišeš dinamički potrebno je da napraviš funkciju koja će proveravati polja u zavisnosti od tipa polja (select, multiselect, da li je u pitanju broj itd.).
MySQL upit takođe praviš dinamički u zavisnosti od filtera pretrage. Na primer osnovni upit je:
Code:
SELECT * FROM proizvodi WHERE ID>=1

I onda proveravaš svako polje:
Code:
$sql = "";
if (strlen($proizvodjac)>=2 ) { $sql.="AND proizvodjac = '".$proizvodjac."' "; }
if ($cena1>=1 AND is_numeric($cena1)  ) { $sql.="AND cena>= '".$cena1."' "; }
if ($cena2>=1 AND is_numeric($cena2)  AND $cena2>$cena1) { $sql.="AND cena<= '".$cena2."' "; }
itd...

Na osnovu toga dobijaš filtrirane rezultate. Što je više unosa filtrirano upit će biti "precizniji".

Ako korisnik upiše samo DO cenu dobićeš sledeći upit:
Code:
SELECT * FROM proizvodi WHERE ID>=1 AND cena<= '".(int)$cena2."' 

Ako označi proizvođača npr HP, 'cenu od' i 'HDD' upit će biti:
Code:
SELECT * FROM proizvodi WHERE ID>=1 
AND proizvodjac = '".$proizvodjac." 
AND cena>= '".(int)$cena1."' 
AND hdd>= '".(int)$hdd."'

I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu30.10.2011. u 07:59 - pre 152 meseci
Izvini, ali nisam se snasao :(. Cackao sam i guglao ali ne vredi. Ne mogu da povezem ove SQL upite sa PHP-om. Kazes da imam osnovni upit
Code:
SELECT * FROM proizvodi WHERE ID>=1
. Ali kako njega da napisem? Ako ga napisem kao
Code:
$result = mysql_query(" SELECT * FROM proizvodi WHERE ID>=1")
, kako onda da napisem onda onaj ostatak? Kako sve one if da uguram u ovaj query? Nemoj pogresno da me razumes, hvala na pomoci ali nikako da mi udje u glavu :(
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.20.*



+303 Profil

icon Re: Pretraga na sajtu30.10.2011. u 09:57 - pre 152 meseci
Mozes naprimer ovako:

Code:

//ono sto je ivan napisao
$sql = "";
 if (strlen($proizvodjac)>=2 ) { $sql.="AND proizvodjac = '".$proizvodjac."' "; }
 if ($cena1>=1 AND is_numeric($cena1)  ) { $sql.="AND cena>= '".$cena1."' "; }
 if ($cena2>=1 AND is_numeric($cena2)  AND $cena2>$cena1) { $sql.="AND cena<= '".$cena2."' "; }

$query = "SELECT * FROM proizvodi WHERE  WHERE ID>=1 $sql";
echo $query.'<br/>';
mysql_query($query) or die(mysql_error());

Znaci $sql ubacis u query, i to je to. $sql popunjavas na osnovu podataka koje ti je poslao korisnik. Naprimer ovaj gore ivanov query bi izgledao ovako (ako bi svi uslovi bili ispunjeni):
Code:

SELECT * FROM proizvodi WHERE  WHERE ID>=1 AND proizvodjac = '$proizvodjac' AND cena>='$cena1' AND cena<= '$cena2'
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu30.10.2011. u 10:36 - pre 152 meseci
Ej super, radi. Samo ni nije jasno sto nece lepo da radi za cenu vecu, kao sto lepo radi za cenu manju. Tipa, kad stavim za cenu od npr. 30 000, on uzme u obzir i sve manje. A ako uzmem za cenu do npr. 50 000, on lepo radi i nece da izbaci vrednosti vece od 50 000. U cemu li je caka?

Sad sam provalio da kad obradjuje samo vrednost lepo radi, ali kad radi u kombinaciji sa proizvodjacom radi lose, kao da umesto AND ucitava OR.
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Pretraga na sajtu30.10.2011. u 10:41 - pre 152 meseci
odstampaj upit iz browsera i vidi kako izgleda pre nego se posalje mysql-u, takodje probaj ga direktno iz phpadmina (ili koji vec alat koristis)
 
Odgovor na temu

nepoverljiv
student
Kragujevac, Srbija

Član broj: 226360
Poruke: 131
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pretraga na sajtu30.10.2011. u 10:56 - pre 152 meseci
Sad sam ja napravio neku glupost, pa isprobavam da se izvucem iz nje. Da li postoji neka mogucnost, da pretrazivanje za datu rec ne uslovim jednom kolonom, nego celom tabelom, ako me kapiras. Da ne kazem da $proizvodjac potrazi samo u koloni proizvodjac nego u svakoj koloni?
 
Odgovor na temu

[es] :: PHP :: Pretraga na sajtu

Strane: 1 2

[ Pregleda: 4042 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.