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

Promenljiva u nisci

[es] :: PHP :: PHP za početnike :: Promenljiva u nisci

[ Pregleda: 1571 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Okram_marko
Travnik

Član broj: 15736
Poruke: 445
*.tel.net.ba.



Profil

icon Promenljiva u nisci08.08.2010. u 20:38 - pre 166 meseci
Pozdravljam,


pravim query nad mysql bazom i sve radi ako rucno upisem WHERE ip = "192.168.0.1"
A nece da radi ako umjesto "192.168.0.1" stavim variablu.

Evo primjer:

<?php
$ip = "234";

$jacina = mysql_query('SELECT signal FROM `signali` WHERE ip_adresa = "$ip" ');
$array_jacina = mysql_fetch_array($jacina);

echo $array_jacina[0];

?>

A ako stavim

$jacina = mysql_query('SELECT signal FROM `signali` WHERE ip_adresa = "234" ');

onda radi.

Ma totalno sam pobudalio, vise ne znam sta i kako da stavim da bi radilo. Daj neka netko pomogne.

[Ovu poruku je menjao Goran Rakić dana 08.08.2010. u 21:57 GMT+1]
..::Photography::..
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Query problem, ne znam zasto08.08.2010. u 20:48 - pre 166 meseci
Code:
mysql_query("SELECT signal FROM `signali` WHERE ip_adresa = $ip");
mysql_query('SELECT signal FROM `signali` WHERE ip_adresa = '.$ip);


Ovde vazi nekoliko pravila od kojih zavisi da li ce biti uzeta vrednost stringa ili ime stringa. Najbolje da probas sam par varijanti u praznom php fajlu i vidis sta dobijas kada uradis echo. ;)

Recimo:
Code:
$sql = 'SELECT signal FROM `signali` WHERE ip_adresa = "$ip" ';
echo $sql;

 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Query problem, ne znam zasto08.08.2010. u 20:57 - pre 166 meseci
Dvostruki navodnici prepoznaju promenljive unutar niske i zamenjuju je njenom vrednošću. Pri tome za $niz['kljuc'] može da se koristi $niz[kljuc] za pristup članovima niza. Jednostruki navodnici to ne rade. Za spajanje dve niske (ili niske i promenljive) koristi se operator nastavljanja - tačka.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Okram_marko
Travnik

Član broj: 15736
Poruke: 445
*.tel.net.ba.



Profil

icon Re: Query problem, ne znam zasto08.08.2010. u 20:58 - pre 166 meseci
Pozdravljam!

Hvala velika na brzom odgovoru.
Evo, probao sam i ova verzija: mysql_query('SELECT signal FROM `signali` WHERE ip_adresa = '.$ip); radi, ALI SAMO U SLUČAJU
ako je $ip = '234';

Ne radi ako je $ip = '234.175.9.28';
ili npr 192.168.0.1.

Mislim da mu smetaju tačke između brojeva.

Ovo me totalno izludi. Svašta sam nešto pokušao ali nikako da proradi.
..::Photography::..
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Promenljiva u nisci08.08.2010. u 21:10 - pre 166 meseci
Nauči SQL, potom osnove programiranja i načina kako se niske predstavljaju u PHP-u.

Ako je polje ip_adresa u bazi numeričko onda ne može da sadrži tačke. Ako je polje tekstualno, onda u upitu moraš da vrednost obuhvatiš navodnicima (bilo jednostrukim, bilo dvostrukim, kako ti je već zgodno).

Kada postoji linija $ip = '192.168.0.1'; ona kaže da je vrednost promenljive $ip 192.168.0.1 (navodnici PHP-u kažu da počinje i završava niska, nisu deo niske). Kako u nisci 192.168.0.1 nema nikakvih promenljivih rezultat je isti i da smo napisali $ip = "192.168.0.1";. Ponoviću, razlika između dvostrukih i jednostrukih navodnika za oznaku početka/kraja niske je što dvostruki svaku promenljivu koju prepoznaju unutar zamenjuju njenom vrednosti.

Sada treba da napravimo nisku koju će PHP da pošalje MySQL-u kao upit. Polje je tekstualno, pa ga obuhvatamo navodnicima. MySQL ne razlikuje jednostruke/dvostruke navodnike. Taj upit koji se šalje pomoću funkcije mysql_query serveru treba da glasi SELECT signal FROM signali WHERE ip_adresa='192.168.0.1'. Mogu da dodam razmake između delova upita, osim unutar ovih jednostrukih navodnika. ' 192... (razmak posle navodnika) kaže MySQL-u da traži slog sa atributom ip_adresa jednak razmak 1 9 2, a takav verovatno ne postoji.

Da bismo to postigli, koristeći dvostruke navodnike ubacićemo vrednost promenljive $ip u njenu mesto u tom upitu.
Code (php):

mysql_query("SELECT signal FROM signali WHERE ip_adresa='$ip' ");
 


Mogli smo da koristimo i jednostruke navodnike sa spajanjem tačkom, ali to u ovom slučaju izgleda ružnije.
Code (php):

mysql_query('SELECT signal FROM signali WHERE ip_adresa=\'' . $ip . '\' '); // ovde su tri znaka \ pa ' i ponovo '
 


Šta je sada ovo \'? Pa jednostavno, treba nam taj jednostruki navodnik u rezultirajućoj nisci. Kako ovde jednostruki navodnik označava početak i kraj niske, treba nam način da kažemo kako ovaj navodnik je samo navodnik, a ne oznaka za kraj. Zato koristimo izbegavanje (engl. escape) znakom \. Nakon toga sledi kraj niske, pa nastavljanje za vrednost promenljive $ip (192.168.0.1), pa početak treće niske koja daje onaj jednostruki navodnik iza ip adrese koji nam treba u SQL upitu. (Primeti da ne smem da dodam razmak između \' i ' jer bi onda MySQL tražio vrednost razmak pa 192..., a meni treba bez razmaka!)

Ako bismo u SQL upitu koristili dvostruke navodnike umesto jednostrukih, ne treba nam izbegavanje, pa to izgleda:
Code (php):

$sql = 'SELECT signal FROM signali WHERE ip_adresa= "'. $ip . '" ';
 


Sada će niska upita glasiti SELECT signal from signali WHERE ip_adresa="192.168.0.1" što možeš i da proveriš jednostavnim echo $sql;.


[Ovu poruku je menjao Goran Rakić dana 08.08.2010. u 22:22 GMT+1]
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Okram_marko
Travnik

Član broj: 15736
Poruke: 445
*.tel.net.ba.



Profil

icon Re: Promenljiva u nisci08.08.2010. u 21:21 - pre 166 meseci
Pozdravljam!!

VEEELIKAA hvala!

Probavao sam svakakve kombinacije i nije pomagalo Ali stvarno moram uzeti kakvu dobru (ne jednu več više) knjigu.
Ja se zahvaljujem i na jako dobrom objašnjenju. Ove će biti od pomoći!

U bazi sam postavio polje IP adrese na text.

Hvala velika još jednom!

Ovo radi bez problema:

Code:


$ip = '192.168.0.1';

mysql_query("SELECT signal FROM signali WHERE ip_adresa='$ip' ");


..::Photography::..
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Promenljiva u nisci08.08.2010. u 21:24 - pre 166 meseci
Bolje polje stavi na tip VARCHAR (niska promenljive dužine). Tip podataka TEXT služi za čuvanje višelinijskog teksta.

Korisno je IP adrese čuvati kao pozitivan celobrojni (tip INT UNSIGNED), pretvarajući tekstualnu reprezentaciju u numeričku i nazad pri ispisu MySQL funkcijama INET_ATON/INET_NTOA, ali kao početniku ne verujem da će ti i ovo smetati.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Promenljiva u nisci

[ Pregleda: 1571 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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