|
|
[ kebba @ 30.01.2009. 23:22 ] @
|
| Cao svima! Vidim da ima dosta tema u vezi sa redirekcijom i login skriptama, ali nigde nisam nasao resenje za moj problem...
Imam zadatak da napravim web aplikaciju koja implementira AJAX i PHP. Posto sam pocetnik u PHP-u (mada ne toliki kao pre 2 nedelje ) treba mi mala pomoc...
1. Login radim preko sesija, a ukoliko korisnik zeli (remember me) moze i da se postavi kuki koji pamti user i pass. To sve radi ok. Medjutim kad hocu da se posle uspesnog logina redirektujem na stranicu sa koje sam pristupio loginu (tj. prethodnu) prikazuje mi ispis "Vec ste ulogovani, user. Odjavite se..." Za login na prethodnu sam koristio HTTP_REFERER. Kad stavim da se redirektuje explicitno na bilo koju stranicu (na pr. header ( location: "index.html"); sve radi super... Kako da resim ovaj problem?
2. Ovo je sitniji problem, ali mislim da cu izgubiti puno vremena ako trazim po netu, pa... Naime, ako je korisnik prethodno cekirao remember me (tj. postavio kuki za user i pass), hocu da mi to automatski ispise u odgovarajuca polja na formi. To sam uradio metodom echo() i to radi savrseno. Medjutim ako korisnik nije napravio kuki (tj. nije hteo da ga sistem zapamti) onda mi u polju user vraca \ a u pass verovatno isto \ ali se ne vidi zbog *... Zasto to i kako da ispravim da mi vrati blanko polja? Pretpostavljam da to ima veze sa stripslashes()??
Molim da mi neko kaze kako da ispravim kod jer sam se malo umorio od pretrazivanja Hvala svima unapred.
login.php
Code:
<?php session_start(); ?>
<html>
<head>
<title>Login</title>
<style type="text/css">
<!--
.style1 {color: #FF0000}
-->
</style>
</head>
<body>
<?php
include "connection.php";
if (!isset($_COOKIE['ck_user']) || !isset($_COOKIE['ck_pass'])){
$user = $_POST['username'];
$password = $_POST['password'];
}else{
$user = $_COOKIE['ck_user'];
$password = $_COOKIE['ck_pass'];
}
$upit = "SELECT * FROM users WHERE username = '$user' AND password = '$password'";
if (!isset($_SESSION['user'])){
?>
<form action="login.php" method="post" name="login">
<table width="0" border="0" align="center" cellpadding="4" cellspacing="4">
<tr>
<td colspan="2"><h2>Login</h2>
<hr></td>
</tr>
<tr>
<td width="113">Korisničko ime:</td>
<td width="270"><input name="username" type="text" class="polje" id="username" value=<?php echo($user); ?> /></td>
</tr>
<tr>
<td>Lozinka:</td>
<td><input name="password" type="password" class="polje" id="password" value=<?php echo($password); ?> /></td>
</tr>
<tr>
<td> </td>
<td><p>
<input name="remember" type="checkbox" id="remember" value="da">
Zapamti me <span class="style1">(kolačići moraju biti omogućeni) </span></p>
</td>
</tr>
<tr>
<td><div align="center">
</div></td>
<td><p>
<input type="submit" name="submit" class="dugme" id="submit" value="Prijavi me" />
</p>
</td>
</tr>
<tr>
<td colspan="2"><hr> <p>Niste registrovani? Registrujte se <a href="register.php">ovde</a>. </p>
</td>
</tr>
</table>
</form>
<?php
if (isset($_POST['submit'])){
$result = mysql_query($upit);
if ($result AND mysql_num_rows($result)==1){
header("location:" .$_SERVER['HTTP_REFERER']);
$red = mysql_fetch_array($result);
$_SESSION['user']=$user;
$_SESSION['pass']=$password;
if ($_POST[remember] == "da")
{
setcookie("ck_user", $user, time()+120);
setcookie("ck_pass", $password, time()+120);
}
}else{
die("Uneli ste pogrešno korisničko ime ili lozinku.");
}
}
}
else{
echo ('Već ste ulogovani, ' . $_SESSION['user'] . '.');
?>
<a href="logout.php">Odjavite se...</a>
<?php
}
mysql_close($db);
?>
</body>
</html>
|
[ Jezdimir Lončar @ 31.01.2009. 15:27 ] @
PHP tebi kao HTTP_REFERER vraca login.php, a sesija ti je vec postavljena, tako da ti javlja tu gresku.
Ako hoces da te vrati na str. index.php, na primjer, onda moras taj parametar da proslijedis skripti preko URLa. Recimo, na index.php da ti stoji:
<a href="login.php?str=index.php">Login</a>
Pa onda da vidis sta ti je $_GET["str"] u login.php, vrsis provjeru, i kad se korisnik loguje ti ga posaljes na tu stranicu.
Mislim da je u ovome problem, ali nisam siguran jer nisam imao vremena detaljno da pogledam kod.
Za taj drugi problem, jednostavno provjeri jel' cookie postavljen.
Code: if(isset($_COOKIE["ck_user"])) { echo $_COOKIE["ck_user"]; } else { echo ""; }
[ kebba @ 31.01.2009. 19:38 ] @
1. Ok, hvala na odgovoru. To mi radi kako si napisao. Jedino sto sam ja hteo da me dinamicki vraca na stranu na kojoj sam prethodno bio... Tj da me ne vraca na jednu te istu stranu uvek, vec nekako da mu prosledim naziv svake strane posebno. Cini mi se da bi se te moglo uraditi preko f-ja $_SERVER['PHP_SELF'] i $_SERVER['SERVER_NAME'] koje bi se ubacile kao promenljive u adresu linka tj. u str... Probao sam nesto ali ne ide :-(
2. Ovo drugo resenje sam i ja probao ali ne ide. Opet mi vrati '\' i u user i u pass. A pazi sad ovo, ako umesto praznog stringa ukucam neki drugi, vratice mi taj string onako kako sam ga uneo bez '\' ?!
Code: <?php if(isset($_COOKIE["ck_user"])) { echo $_COOKIE["ck_user"]; } else { echo "blabla"; } ?>
znaci u polje user mi vraca 'blabla'. Znaci da kod ipak radi, ali kako da se oslobodim '\' ?
3. I jos jedno pitanje... Posto pri izradi sajta koristim template (dreamweaver), da li mogu da stavim PHP kod na templejt a da se on izvrsava na svakoj stranici? Hocu da ubacim npr. kod za login koji ce se videti na svakoj strani ako user nije ulogovan, a ako jeste onda da mu ispise poruku (Dobro dosao, user.) i ponudi mu link za odjavu...
[ namesnik @ 01.02.2009. 00:00 ] @
Posto radis POST na login.php, kada se uspesno logujes $SERVER['HTTP_REFERER'] je sada login.php pa te opet vrati na login.php ali sada sa postavljenom sesijom.
jedno od resenja bi bilo da pamtis stranicu sa koje se stiglo na login.php
Code:
<?php session_start(); ?>
<html>
...
<?php
$referer = parse_url($_SERVER['HTTP_REFERER']);
if ($referer['path'] != $_SERVER['PHP_SELF'])
{
$_SESSION['referer'] = $referer['path'];
}
include "connection.php";
...
...
...
<?php
if (isset($_POST['submit'])){
$result = mysql_query($upit);
if ($result AND mysql_num_rows($result)==1){
header("location:" . $_SESSION['referer']);
...
...
2. stavi navodnike u html
Code: value="<?php echo $user; ?>"
[Ovu poruku je menjao namesnik dana 01.02.2009. u 01:18 GMT+1]
[ kebba @ 01.02.2009. 14:14 ] @
@ namesnik
Tnx, sve radi! Za 2. sam znao da je neka sitnica u pitanju a ja lupam glavu ceo dan...
Imam novu misteriju za resiti  Probao sam da na template strani postavim php skriptu koja ce, u zavisnosti od toga da li je korisnik prijavljen ili ne, ispisivati poruku Dobro dosao, user. LOGOUT odnosno Niste ulogovani. LOGIN (sa odgovarajucim linkovima ka login.php i logout.php naravno). Ja sam to uradio na sledeci nacin, a s obzirom da sam pocetnik negde sam pogresio...
Code:
...... </td>
<td width="370" valign="middle"><div align="right"><p>
</p></p>
<?php
if(!isset($_SESSION['user']) || !isset($_SESSION['pass']))
{
echo "Niste ulogovani.";
?>
<a href="login.php">LOGIN</a>
<?php
} else{
echo "Dobro dosli, " . $_SESSION['user'];
?>
<a href="logout.php">LOGOUT</a>
<?php
}
?>
</p>
</div></td>
</tr>
</table>
<div align="center"></div>
<!-- TemplateBeginEditable name="MainEddReg" --><!-- TemplateEndEditable --></td> ......
Ispisuje mi samo LOGIN LOGOUT i to u isto vreme, sto znaci da uopste ni ne ulazi u petlju. Verovatno ima neke veze sa interpretiranjem php koda u templejtu...
Ako neko ima ideju, sad je dobro dosla 
[ namesnik @ 01.02.2009. 15:45 ] @
ne izvrsava ti se php zbog toga ti ispisuje oba linka, prebaci taj template na server pa ga pogledaj, ne moze samo open with browser.
[ kebba @ 01.02.2009. 23:31 ] @
@namesnik
I ja sam skontao da se ne izvrsava, cak i dok ga kucam ne boji mi kod (pocetak, promenljive, metode...) vec sve ispisuje istom bojom, pa sam i u toku pisanja pretpostavio da nece raditi...
Sajt radim u lokalu, na Apache web serveru (wamp), i fajlove menjam direkno u root-u servera, tj u C:\wamp\www\moj_sajt, tako da svaki put kad menjam templejt, ustvari radim ono sto si mi predlozio, zar ne? Ako sam dobro skapirao... Jel imas jos neku ideju?
[ namesnik @ 01.02.2009. 23:43 ] @
jaoo znam, mora da bude .php ekstenzija fajla
[ kebba @ 02.02.2009. 13:09 ] @
Pa kako onda to da izvedem?
[ dakipro @ 02.02.2009. 13:16 ] @
Sta kako da izvedes, da renamujes fajlove u .php?
Mozes da podesis server da parsira .html fajlove (sad je pitanje dal ce ti host to dozvoliti)
ili mozes html fajlove renamovati u .php
Iskreno, nikad prakticno nisam videeo da neko programira u php-u sa .html extenzijom.
A mozda mozes taj deo koji ti je potreban ubaciti u iframe ili ajaxom ubaciti sadrzaj samo tog dela u html
[ kebba @ 02.02.2009. 13:41 ] @
Citat: kebba: @ namesnik
Imam novu misteriju za resiti :-) Probao sam da na template strani postavim php skriptu koja ce, u zavisnosti od toga da li je korisnik prijavljen ili ne, ispisivati poruku Dobro dosao, user. LOGOUT odnosno Niste ulogovani. LOGIN (sa odgovarajucim linkovima ka login.php i logout.php naravno). Ja sam to uradio na sledeci nacin, a s obzirom da sam pocetnik negde sam pogresio...
Eto to sam hteo da uradim, svejdeno kako, samo da proradi... Kao sto rekoh sajt mi radi u lokalhostu. Fajl na koji sam hteo da postavim php kod je template.dwt (dakle nije .html u pitanju), klasican template u DW. Kao sto je i namesnik rekao, mora da bude .php extenzija fajla da bi parsirao (sto sam ja skroz bio zaboravio).
Mogao bih da dodam jos jedan editable region u tamplate i da kod uglavim na svaku stranu, ali to mi je bezveze. Sta da imam par desetina strana... Ova ideja sa AJAX-om mi deluje ok, ali bih morao to da istrazim jos... Sta je iFrame?
Dajte jos neke predloge...
[ namesnik @ 02.02.2009. 19:34 ] @
[ kebba @ 20.02.2009. 20:07 ] @
E da malo digem temu iz mrtvih... Nije me bilo dugo, ali to zato sto sam bio zaokupljen drugim stvarima. Dobra vest je da mi je aplikacija proradila kako sam hteo i dobio sam 10-ku  stoga se zahvaljujem svima koji su ucestvovali u resavanju problema.
Sada bih hteo da je jos malo prosirim, pa imam jedno pitanje za strucnjake: Da li kroz URL (preko GET metode) moze da se posalje instanca objekta?
Objasnjenje: hteo bih da na jednoj strani izvrsim upit i napunim objekat, pa da ga preko URL-a posaljem drugoj strani i da tamo koristim podatke.
Pozz svima
[ stough_ser @ 20.02.2009. 20:33 ] @
hmmm
ne znam dal sam te razumeo
ali
preko get, post ili pak SESSION
mozesh da poshaljesh atribute
pa da tamo na osnovu njih kreirash identichan objekat
nije mi poznato da moze ceo objekat da se prosledi...
[ Nikola Poša @ 20.02.2009. 20:56 ] @
Pitam se kako li bi izgledao taj url kad bi se u njemu nalazila instanca nekog objekta... :) Ne verujem da je tako neshto moguce.
Mada kroz sesiju sigurno mozhe da prodje. Probaj...
[ stough_ser @ 20.02.2009. 21:34 ] @
pa za sesiju se i ja razmishljam
nikad nisam imao potrebu za ovako nechim
tako da nisam probao
a sad me mrzi da probam
:) kolega, preko get i post ne moze garant, probaj preko sesije.
ako uspe, javi B-)
[ stevs986 @ 21.02.2009. 10:55 ] @
Objekat 100% mozes da prenosis preko sesije, radio sam na taj nacin i provereno radi...
[ stough_ser @ 21.02.2009. 11:09 ] @
da, probao sam.
moze.
nisam imo potrebu za tim u dosadashnjim projektima
al imacu u vidu B-)
[ kebba @ 22.02.2009. 14:11 ] @
Provalio sam kako... Objekat treba da se serijalizuje, pa da se smesti u neku promenljivu u sesiji. Posle se vadi iz session promenljive i reverzibilnim postupkom dobija isti objekat...
Hm ali sad mi se pojavio drugi problem, ne vezan za klase... Na jednoj stranici dinamicki ispisujem podatke iz baze u okviru tabele. U poslednjoj koloni sam stavio akcije, tipa Preslusaj, Promeni, Obrisi... Problem se javlja kad hocu da ogranicim akcije u zavisnosti od nivoa pristupa korisnika. Na primer da samo administrator moze da menja i brise sadrzaj, registrovani da preslusa... Tabela se generise u while petlji, i cim pokusam da ubacim neki if iskaz u okviru nje automatski mi ispisuje samo prvi rekord iz tabele. Nemam ideju u cemu je problem, mozda od sume ne vidim drvece, pa ako neko moze da mi otvori oci  Evo koda:
Code:
//forma za pretragu
?>
</p>
<table width="538" border="1" cellpadding="5" cellspacing="2" style="text-align:center ">
<tr>
<td width="137"><div align="left"><b>Pesma</b></div></td>
<td width="118"><div align="left"><strong>Izvodjac</strong></div></td>
<td width="84"><b>Zanr</b></td>
<td width="139" colspan=2 align=center><strong>Opcije</strong></td>
</tr>
<?php
//ispisivanje rezultata u tabeli
while($red = mysql_fetch_array($q))
{
?>
<tr>
<td class="text"><div align="left" class="style2"><span class="style5"><?php echo $red["title"]?></span></div></td>
<td class="text"><div align="left" class="style2"><span class="style5"><?php echo $red["artist"]?></span></div></td>
<td class="text"><span class="style5 style2"><?php echo $red["genre"]?></span></td>
<td>
<?php
//prilikom stampanja svakog reda iz tabele na kraju dodaj opciju za brisanje
//poziva se isti fajl u kojem je skript, ali sa parametrima action i idpesme
if(isset($_SESSION['user']) && isset($_SESSION['level'])){
$song->id = $red["id"];
$q = $song->select();
$row = mysql_fetch_array($q);
$putanja = $row['file'];
echo "<a href='$putanja'><font color='#393939';>[Preslusaj]</font></a>";
if($_SESSION['level']==1){
echo "<a href=administration.php?action=obrisi&RbPesme=" . $red["id"] . "><font color='#393939';>[Obrisi]</font></a>";
echo "<a href=administration.php?action=izmeni&RbPesme=" . $red["id"] . "><font color='#393939';>[Izmeni]</font></a>";
}
}else{
echo "<a><font color='#393939';>...</font></a>";
}
echo "</td>" . "</tr>";
?>
<?php
}
?>
</table>
<?php
}
Objasnjenje: objekat $song je klase song koja ima metode za pretragu baze, akcije Obrisi i Izmeni su linkovi koji preko URL-a biraju akciju preko switcha iz tekuceg fajla (koji je implementiran u istom fajlu gde i tabela, ali nisam postavio kod jer je ranije radio, i mislim da je problem ovde negde). U sesiji se cuvaju podaci o korisniku user i level.
[ Nikola Poša @ 22.02.2009. 15:14 ] @
Chini mi se da je problem u tome shto ce ta promenljiva $q u prvom prolasku kroz petlju imati neku vrednost, a onda, ako se udje u taj prvi if, ti cesh njoj dodeliti neku drugu vrednost, ovde:
Code:
$q = $song->select();
I ona ce u sebi sadrzhati samo jedan red u rezultatu, poshto, ako sam dobro razumeo, ta funkcija select() ce vratiti samo jedan red na osnovu id-a pesme, pa ce se ta petlja vrteti josh samo jedan krug. Nazovi tu drugu promenljivu nekako drugachije, npr. $q1. :)
[ kebba @ 22.02.2009. 17:39 ] @
Pa naravno... Pocetnicka greska
Jel ima neko iskustva sa autosuggest-om i autocomlete-om? Ubacio sam kod za autosuggest ali mi za sad puni samo jedno polje i to ono u koje ukacavam tekst. Ja bih hteo da mi, kad pocnem da unosim tekst u polje 'naziv pesme', automatski u pozadini uradi upit nad bazom i ako kliknem na ponudjen unos, da mi popuni i ostala polja 'grupa', 'zanr'... Evo i delova koda:
upload.php
Code:
<?php session_start(); ?>
<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<script src="jscripts/suggest.js"></script>
<script>
function place(ele)
{
document.getElementById('title').value = ele.innerHTML;
document.getElementById("livesearch").style.display = "none";
}
</script>
</head>
<body onload="document.getElementById('title').focus()">
<?php
.......
?>
</body>
</html>
suggest.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Suggest</title>
</head>
<body>
<?php
include "connection.php";
$pomocna=$_GET["unos"];
$sql="SELECT * FROM songs WHERE title LIKE '$pomocna%' ORDER BY title";
$result = mysql_query($sql);
if (mysql_num_rows($result)==0)
{
echo "U bazi ne postoji pesma koja počinje na $pomocna ";
}
else {
while($row = mysql_fetch_array($result))
{
?>
<a href="#" onclick="place(this)"><?php echo $row['title']?></a>
<br/>
<?php
}
}
?>
</body>
</html>
suggest.js
Code:
var xmlHttp
function suggest(naziv)
{
if (naziv.length==0)
{
document.getElementById("livesearch").innerHTML="";
document.getElementById("livesearch").style.border="0px";
return
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser ne podrzava AJAX.")
return
}
var url="suggest.php"
url=url+"?unos="+naziv
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("livesearch").innerHTML=xmlHttp.responseText;
document.getElementById("livesearch").style.border="1px solid";
document.getElementById("livesearch").style.display="block";
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Pretpostavljam da treba da se parametri proslede preko nekog niza ili sl. ali s obzirom da sam tanak sa JScriptom molim nekog da mi pomogne, makar da me uputi u pravom smeru
[Ovu poruku je menjao kebba dana 22.02.2009. u 19:59 GMT+1]
[Ovu poruku je menjao kebba dana 22.02.2009. u 20:55 GMT+1]
[ Nikola Poša @ 22.02.2009. 18:52 ] @
Daj da vidimo taj javascript kod (suggest.js), dvaput si nam poslao isti kod. :)
Ali evo ovako napamet da ti kazhem koja je procedura... To polje u koje unosish tekst ce da ima dogadjaj onkeyup, na koji ce se pozivati neka f-ja kojoj se, po potrebi, prosledjuje this.value. Ta f-ja uz pomoc xmlhttp zahteva komunicira sa nekim PHP kodom, koji vraca sve nazive koji su "LIKE" uneti naziv. On bi recimo trebao da vrati ispis (echo) linkova (jedan ispod drugog) koji ce voditi na neku JavaScript (AJAX) f-ju, ovako: href = "javascript: imeFje(id);" pri chemu ce se taj id odnositi na taj link, odnosno, to treba da bude id te pesme, na osnovu chega cesh ti dobijati ostala polja (grupa, zanr). Ili chak mozhesh odma' toj f-ji da prosledish grupu, zanr, itd., koje bi prethodno "dovukao" tim PHP kodom i spojio u obliku nekog stringa (npr. grupa_zanr). AJAX prihvata taj zahtev i ispisuje te linkove u nekom div-u ispod tog tekstualnog polja. I klikom na neki od tih linkova, pozivala bi se f-ja, koji bi, u sluchaju prve varijante (sa id-em), radila slichno kao i ono malopre: komunikacija sa PHP kodom, koji ce recimo vratiti string u obliku: grupa_zanr. Stavio sam donju crtu kao razmak da bi posle u javascript-u mogao po nechemu da razdvojish te pojmove koje ce PHP da vrati, a kad ih razdvojish u posebne promenljive ili niz, svejedno, ispisacesh ih u tim poljima, document.getElemetById('grupa').value = grupa;, itd. A u sluchaju drugu varijante, ta f-ja bi odma' dobila taj string, koji bi samo trebao da obradish i ispishesh te delove u tekstualnim poljima.
[Ovu poruku je menjao Nikola Poša dana 22.02.2009. u 21:09 GMT+1]
[ kebba @ 22.02.2009. 19:53 ] @
Evo, dodao sam JScript fajl koji je nedostajao...
Hvala Nikoli na iscrpnom objasnjenju. Otprilike sam skapirao o cemu se radi...
Problem mi pravi sledeci kod iz suggest.php fajla (koliko sam ja uspeo da zakljucim):
Code:
while($row = mysql_fetch_array($result))
{
$string=$row['title']."_".$row['artist']."_".$row['genre'];
?>
<a href="#" onclick="place(this)"><?php echo $row['title']?></a>
<br/>
<?php
}
U stvari, ne znam kako da prosledim parametar $string f-ji place(this) tj place(ele)? Ako bih to uspeo, mogao bih da iz stringa iscitam potrebne vrednosti...
Mozda ce nekom ovo izgledati smesno, ali vec sam rekao da sam tanak sa JScriptom 
[ Nikola Poša @ 22.02.2009. 20:01 ] @
Mozhesh da ga prosledish, odnosno, ubacish ispisivanjem tog linka kroz PHP, ovako:
Code:
echo '<a href="#" onclick="place(\'' . $string . '\');">' . $row['title'] . '</a>';
Samo ne znam shta sad tachno zhelish da postignesh, i kako si ti uopshte to sve zamislio...
edit: U stvari mislim da znam...
[Ovu poruku je menjao Nikola Poša dana 22.02.2009. u 21:19 GMT+1]
[ kebba @ 22.02.2009. 21:08 ] @
Hocu da iz tog stringa koji prosledim metodi place(ele) izvucem odgovarajuce vrednosti i njima napunim polja na stranici upload.php (npr: title_artist_genre...). Znam da mozda nema toliko smisla, ali ajde... Ovo parce koda sto si postovao izgleda nece da mi radi. Kao da ne moze da procita vrednost promenljive $string unutar html-a, cak je i ne boji drugacijom bojom, vec ostaje plava kao i f-ja place...
$string=$row[ 'title']. "_".$row[ 'artist']. "_".$row[ 'genre'];
?>
<a href= "#" onclick= "place(\'' . $string . '\');"> <?php echo $row[ 'title'] ?></a>
<br/>
<?php
evo, pokusao sam graficki da docaram  Cim unesem prvo slovo u text polje, u statusnoj liniji mi prijavi "Error on page"?
edit: Kad prosledim $string na sledeci nacin onda sve radi:
Code:
<a href="#" onclick="place(this);"><?php echo $string ?></a>
ali to mi je malo bezveze jer se vide sve informacije u listi suggest-a. Ja hocu da se u padajucoj listi vidi samo naziv pesme.
[Ovu poruku je menjao kebba dana 22.02.2009. u 22:22 GMT+1]
[ Nikola Poša @ 22.02.2009. 21:12 ] @
Nisi me razumeo, ja sam hteo da direktno ispisujesh taj link kroz PHP (sa echo), a ne da zatvarash PHP (?>), pa da to isto radish HTML-om. Al' dobro, ako ti vishe odgovara da to ide kroz HTML, onda to treba ovako:
Code: <a href="#" onclick="place('<?php echo $string; ?>');"><?php echo $row['title']?></a>
[ kebba @ 22.02.2009. 21:42 ] @
U pravu si, nisam obratio paznju... Ali nece ni ovako 
evo kako izgleda metoda za prihvat na upload.php strani:
Code:
function place(ele)
{
var string = ele.innerHTML;
var a = 0;
var b = string.indexOf("_",a);
var title = string.substring(a,b);
var a = b+1;
var b = string.indexOf("_",a);
var artist = string.substring(a,b);
var a = b+1;
var b = string.length;
var genre = string.substring(a,b);
document.getElementById('title').value = title;
document.getElementById('artist').value = artist;
document.getElementById('genre').value = genre;
document.getElementById("livesearch").style.display = "none";
}
Mozda je tu negde greska, mada ne verujem...
[ Nikola Poša @ 23.02.2009. 08:44 ] @
Citat: kebba: ali to mi je malo bezveze jer se vide sve informacije u listi suggest-a. Ja hocu da se u padajucoj listi vidi samo naziv pesme.
Ne razumem, kako se vide, gde?
Nego, mene samo u toj tvojoj f-ji place() buni to var string = ele.innerHTML;... Zashto tako? Ti toj f-ji prosledjujesh vec gotov string, jel tako? Ili sam mozhda u medjuvremenu neshto propustio...
btw U JavaScript-u postoji funkcija split(), koja je ekvivalent PHP-ovoj f-ji explode(), tako da ne morash to razdvajanje da radish sa kombinacijama indexOf i substring...
[ kebba @ 24.02.2009. 12:22 ] @
Verovatno me je tesko skapirati jer sam pocetnik u ovome pa se nejasno izrazavam...
Elem, za sad mi autosuggest radi tako sto, kad ukucam neku frazu u text polje, izbaci mi padajacu listu sa predlozima iz baze tipa 'Runaway_Bon Jovi_Rock', taj string prosledim metodi place(ele), razdvojim ga i smestim delove u ogovarajuca polja na formi. Moje pitanje je bilo: kako da postignem isti efekat (da popunim polja na formi izborom iz padajuce liste) a da mi se u toj listi ne vide svi parametri (tj kolone iz tabele) vec samo jedna (npr 'Runaway')?
(btw, tnx za f-ju split(), bas sam se pitao da li postoji nesto elegantnije, ali nisam mogao da pronadjem... Sad cu da pogledam kako radi..)
U pravu si, f-ji place(ele) prosledjujem gotov string. Ali ne razumem na sta ciljas?
[ stevs986 @ 24.02.2009. 12:53 ] @
Jedno ne bas elegantno resenje, ali zavrsava posao je da u vrednost select box -a stavis sve kolone tabele sa nekim separatorom, a prikazujes samo ono sto zelis... Na onchange razdvajas vrednost select box - a po separatoru i popunjavas polja na formi koja zelis...
[ Nikola Poša @ 24.02.2009. 12:54 ] @
Gledaj, ti kad se prvi put obracash AJAX-u, na onaj dogadjaj onkeyup, taj PHP kod sa kojim AJAX komunicira treba da vrati url-ove oblika, odnosno, source tih url-ova bi trebao da izgleda ovako:
Code:
<a href = "javascript: place('Bon Jovi_Rock');">Runaway</a>
Ili ovako, ako idesh sa onclick:
Code:
<a href = onclick = "place('Bon Jovi_Rock');">Runaway</a>
Ja mislim da si to ti i uradio, al' ne znam kako ti u vidljivom delu url-a ispisuje i ostale podatke, jer ti si stavio da se url ispisuje ovako:
Code:
<a href="#" onclick="place('<?php echo $string; ?>');"><?php echo $row['title']?></a>
Dakle u vidljivom delu ispisujesh samo $row['title'], jel tako?
Citat: kebba: U pravu si, f-ji place(ele) prosledjujem gotov string. Ali ne razumem na sta ciljas?
Pa ciljam na to da to ele (<?php echo $string; ?>), ti odma' mozhesh da koristish u toj f-ji place(), odnosno, to je string, i ti njega mozhesh da split-ujesh i "chupash" iz njega ostale informacije (autor, zhanr).
Copyright (C) 2001-2026 by www.elitesecurity.org. All rights reserved.
|