Search u php i ajax-u

Search u php i ajax-u

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Hteo bih da uradim nesto slicno ovome:
http://www.acer.co.uk/acer/service.do?LanguageISOC.....2980211862

uz pomoc php-a i ajax-a. E sad, ja sam napravio bazu, sa dve tabele, odradio upite koji rade, ali kako da izvedem sve ovo. Evo sta sam ja uradio do sad kodom u php-u:
<?php     $con = mysql_connect("localhost","root","");     if(!$con){         die("Ne moze se konektovati: " .mysql_error());         }     $izbordb = mysql_select_db("mobilnitelefoni", $con);     $rezultat = mysql_query("SELECT naziv_proizvodjaca FROM proizvodjaci") or die(mysql_error());     echo "<select multiple='multiple' size='7' id='proizvodac' onclick='otvoriproizvod(this.value)'>";     while($red = mysql_fetch_array($rezultat)){         $id = $red['proizvodjac_id'];         $nazivpro = $red['naziv_proizvodjaca'];     echo "<option value=$id>" .$nazivpro."</option>";     }     echo "</select>";    $model = mysql_query("SELECT model  FROM modeli m JOIN proizvodjaci p ON p.proizvodjac_id = m.proizvodjac1_id     WHERE m.proizvodjac1_id = p.proizvodjac_id AND proizvodjac_id = '".$id."'") or die(mysql_error());       echo "<select multiple='multiple' size='7' id='model'>";       while($red1 = mysql_fetch_assoc($model)){           $nazivmodela = $red1['model'];           $q = $red['proizvodjac_id'];       echo "<option value=$q>".$nazivmodela."</option>";       }           echo "</select>";          echo "<input type='submit' value='izaberi'>";             mysql_close($con); ?>         

Mene interesuje, kako da kad kliknem na izlistane podatke iz baze u prvom select boxu, da mi se ucitaju podaci u drugi select box za odgovarajucu stavku koju sam izabrao u prvom select boxu? Evo i koda za skriptu, pa pogledajte da li je ok:

var ajaxrequest; <script> function prikazimodel(str) { if (str=="")   {   document.getElementById("model").innerHTML="";   return;   } if (window.XMLHttpRequest)   {// code for IE7+, Firefox, Chrome, Opera, Safari   xmlhttp=new XMLHttpRequest();   } else   {// code for IE6, IE5   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");   } xmlhttp.onreadystatechange=function()   {   if (xmlhttp.readyState==4 && xmlhttp.status==200)     {     document.getElementById("model").innerHTML=xmlhttp.responseText;     }   } xmlhttp.open("GET","baza.php"+str,true); xmlhttp.send(); } </script>

U pitanju je pretraga mobilnih telefona, znaci prvo izaberem proizvodjaca i onda mi u drugom boxu ponudi modele koji se nalaze u bazi i na kraju po izboru modela, otvara stranicu za odgovarajuci model.

Nadam se da sam bio jasan, od skoro sam poceo da se igram sa php-om i zadao sam sebi zadatak da uradim ovako nesto, ali mi slabo ide. Smile

Hvala unapred!!!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 15 Maj 2006
  • Poruke: 333
  • Gde živiš: Babušnica

Otkucaj jedan div tag kome će id biti "model". Zatim i u događaj onClick napiši "prikazimodel(this.value)" (ili neka vrednost -> id). Pošto se radi o select boxu onda probaj ovako - onChange="prikazimodel(this.value)".



offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

A sta mislis o ovom kodu koji je vezan za bazu i upitima?

offline
  • Pridružio: 15 Maj 2006
  • Poruke: 333
  • Gde živiš: Babušnica

Nemaš nigde promenljivu koja uzima vrednost preko GET metode pošto si je koristio u JS-u. Ti kroz JS pozivaš baza.php a u tom fajlu moraš da "primiš" vrednost koja je poslata i zatim je iskoristiš za upit.

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

Ja sam pocetnik u svemu ovome, ali moram da uradim neku web aplikaciju, a posto me interesuje PHP, odlucio sam da u njemu napravim. Da li bi mogao da mi pokazes ti kako bi odradio sve ovo, neki tvoj predlog? Naravno, ako imas vremena.

Ubijam se vec nedelju dana oko svega ovoga, nije mi problem da ucitam podatke iz baze u prvi select box, vec mi je problem da na osnovu izabranog proizvodjaca izbaci mi ponudjene modele u novi select box. Meni upit radi, kada mu dam konkretan id proizvodjaca, ali kad hocu da na osnovu izbora proizvodjaca da mi izbaci listu, nikako mi ne ide.

offline
  • Pridružio: 15 Maj 2006
  • Poruke: 333
  • Gde živiš: Babušnica

Postoje proizvođac i model. Prva lista ti je za proizvođače, kad to odabereš treba da se izlistaju modeli.

Prvi SELECT tag ima id proizvodac. U tu listu za value postavljaš ID iz baze (proizvodjac_id) a tekst pravo ime (naziv_proizvodjaca).

Za taj select pozivaš funkciju onChange="otvoriProizvod(this.value)".

Sad je caka u funkciji otvoriProizvod

<script type="text/javascript"> function otvoriProizvod(tid) { if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET",'proizvodjac.php?pid='+pid,false); xmlhttp.send(null); document.getElementById('MODELI').innerHTML=xmlhttp.responseText; } </script>

Iz funkcije pozivaš proizvod.php sa rednim brojem proizvođaca i to se prikaže u novom select tagu koji ima id "MODELI". U proizvodjac.php moraš da dodeliš promenljivoj prosleđeni parametar preko GET metode
$pro_id=$_GET['pid']; //pa onda ostatak php koda odnosno upit na osnovu $pro_id

Slično je i za model. Sad iz drugog select taga pozivaš funkciju onChange="prikazimodel(this.value)".

<script type="text/javascript"> function prikazimodel(mid) { if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET",'model.php?mid='+mid,false); xmlhttp.send(null); document.getElementById('TELEFON').innerHTML=xmlhttp.responseText; } </script>

Onda isto kao i u proizvodjac.php napišeš
$mid = $_GET['mid']; //pa upit na osnovu rednog broja modela i stampas informacije

Sad u osnovnoj strani staviš jedan div tag gde je id TELEFON i tu bi trebalo da se prikažu informacije (naravno možeš i tabelarno, kako si već zamislio...).

Možeš da ubaciš kasnije i jQuery ali prvo savladaj ovo. I ja sam se dosta patio da skontam kako ide Smile

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 241
  • Gde živiš: Zemun

E hvala ti puno!!!!! Sad cu ja malo da experimentisem, pa cu valjda nesto napraviti. Smile

Ko je trenutno na forumu
 

Ukupno su 1011 korisnika na forumu :: 52 registrovanih, 9 sakrivenih i 950 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, airsuba, Apok, Atomski čoban, babaroga, bagor10, bigfoot, Bobrock1, Bubimir, cemix, doklevise, doktor097, Drug pukovnik, DucicM, dukajov, dzoni19, elzike7, FOX, goxin, hawkeye, Joja, kybonacci, ladro, ljuba, Lord Nem, mackenzie, Marko Marković, MB120mm, MILO-VAN, nenad_l, nevjerna beba, opt1, panzerwaffe, RobinHood12, Rocker, royst33, Sale.S, saxone, Shinobi, Skakac7, solic, Srle993, stagezin, Steeeefan, suton, theNedjeljko, Trpe Grozni, Vatrogasaccc, vlahale, vsn111, W123, zhuki8