Afisare date din MySQL

delikvent

New Member
Am tot cautat vreo ora pe google si tot nu pot gasi raspunsul, asa k voi posta mesajul meu aici in speranta ca imi va raspunde cineva. Va rog mult:

Deci am o baza de date, cu continutul ceva de genul:

+------+-------+---------------+
| id | name | email |
+------+-------+---------------+
| 1 | Vivek | xuz@abc.com |
| 2 | Priya | p@gmail.com |
| 3 | Tom | tom@yahoo.com |
+------+-------+---------------+

Mie imi trebuie ca la afisarea in browser a paginii test.php?id=1 sa fie afisat numele si adresa de email de la id-ul 1, sau test.php?id=2 sa-mi arate info de la id-ul 2 samd.

Acum am gasit un script dar care e cam rudimentar.
PHP:
<?php
require 'dbconfig.php';

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
 or die("Unable to connect to MySQL");

//select a database to work with
$selected = mysql_select_db("bd_a_mea",$dbhandle)
  or die("Could not select database");

//execute the SQL query and return records
$result = mysql_query("SELECT name, email FROM tabelul_meu WHERE id=1");


//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
   echo "Nume:".$row{'name'}." Email:".$row{'email'}."<br>";
}
//close the connection
mysql_close($dbhandle);
?>
Deci, primesc cam ce doresc eu, dar doar daca schimb de fiecare data variabila la WHERE id=.... cu cifra care imi trebuie.
cum sa fac ca scriptul automat sa schimbe WHERE id=cifra_mea atunci cand linkul e de forma test.php?id=cifra_mea?

presupun ca e vorba de functia while ($row = mysql_fetch_array($result)) {} dar mai departe cunostintele mele de php se termina :)

Va multumesc anticipat.
 
nea... tu trebuie sa citeshti variabila ce merge dupa "?"
demult nu m-am jucat cu asta, am uitat cum se face asta, sant functii ce citesc variabilele din url, shi apoi o bagi ca caracter in sql shi tat ibatz...
 
Problema e urmatoarea: interogarea ta returneaza un singur tuplu, deoarece indici WHERE id=1

Poti face SELECT name, email FROM tabelul_meu, si atunci interogarea va returna un set de tupluri.

Dupa aceea vei trece prin fiecare tuplu cu while ($row = mysql_fetch_array($result))


while se va opri atunci cind row=NULL, adica dupa ce ai trecut prin toate tuplurile din tabelul returnat dupa efectuarea interogarii.


Cu alte cuvinte, trebuie sa schimbi:
Code:
$result = mysql_query("SELECT name, email FROM tabelul_meu");
 
Aa, da... iata daca nu RTFQ...

Trebuie sa folosesti $_GET sau $_POST, in dependenta de modul in care este transmisa cererea.

Pentru ca sa lucreze asta test.php?id=1, adica sa poti primi valoarea variabilei id, foloseste $_GET['id'], sau atribuie valoarea aceasta unei alte $id_variable=$_GET['id'];


Cu alte cuvinte, interogarea trebuie sa fie asa:
SELECT name, email FROM tabelul_meu WHERE $_GET['id']=1 (desigur ca aici trebuie sa nu uiti ca "$_GET['id']" trebuie de convertat in string, nu stiu cum se face asta in PHP)
 
gr8dude;191010 said:
Cu alte cuvinte, interogarea trebuie sa fie asa:
SELECT name, email FROM tabelul_meu WHERE $_GET['id']=1 (desigur ca aici trebuie sa nu uiti ca "$_GET['id']" trebuie de convertat in string, nu stiu cum se face asta in PHP)

cine te-a invatzat asa cod sa scrii ;)?
 
bine guys, merci pentru interventie si efort,

deci, am inteles k tre de modificat variabila WHERE cu ceva care sa fie identica cu pagina mea id=... dar cu ce anume... nu prea inteleg.... :(
imi poate spune cineva pls care ar fi codul final pentru acest lucru?
thx!
 
delikvent, nu tzi-ar strica sa citeshti capitolul de introducere la vre-un manual de php, acolo explica pe scurt cum lucreaza un web server, cum se transmit variabilele shi alte lucruri folositoare
 
pa hodu asha trebu sa shie, daca ceea ce spune gr8dude e corect
$result = mysql_query("SELECT name, email FROM tabelul_meu WHERE id=".$_GET['id']);

P.S. Prima data vad php in fatsa okilor
 
cine te-a invatzat asa cod sa scrii ?
Cred ca nu ai inteles; am explicat in paranteze ca acea chestie trebuie sa fie convertata in string, dar nu stiu cum se face asta in PHP; si mi se pare straniu ca se foloseste punctul ca operator de concatenare.

Adica ar trebui sa fie facut asta in PHP:
"SELECT name, email FROM tabelul_meu WHERE id="+str($_GET['id'])



delikvent, ar trebui sa fie asa cum a scris dorincea. :b44,gogogo:
 
thx baieitzi, totul e ok, acum merge!
gr8dude: u r a great dude :)
dorincea: merci mult!
khama: neaparat! am s citesc si thx pt simtul umorului.

numai bine. back 2 work!
 
gr8dude;191062 said:
Cred ca nu ai inteles; am explicat in paranteze ca acea chestie trebuie sa fie convertata in string, dar nu stiu cum se face asta in PHP; si mi se pare straniu ca se foloseste punctul ca operator de concatenare.

Adica ar trebui sa fie facut asta in PHP:
"SELECT name, email FROM tabelul_meu WHERE id="+str($_GET['id'])



delikvent, ar trebui sa fie asa cum a scris dorincea. :b44,gogogo:

ma refeream la SQL Injection ;)
 
ma refeream la SQL Injection
Oo! Asta chiar e un risc de care nu am tinut cont.

dorincea, trebuie sa te asiguri ca $_GET['id'] este un numar, si nu un string care poate contine o alta interogare, sau alte instructiuni care vor fi evaluate TRUE chiar daca id'ul nu exista.

Ar trebui sa fie vre-o functie ca atoi, care converteaza un string intr-un numar. Daca functia returneaza o eroare, inseamna ca al tau id nu este un numar, deci cineva incearca sa compromita sistemul tau.
 
eu tot m intrebam ce se primeste atunci cand id=numar_inexistent

am incercat sa bag un if { } dupa variabila while
gen
PHP:
if(!is_numeric($_GET[id]))
{
exit("HAcker attack");
}
dar nu stiu dak e solutia potrivita.

adik merge numai dak scriu id=malicious_script sau tot ce nu este numeric, dar dak scriu id=56 care nu exista in baza de date nu se intampla nimic.
voi ce ati face?
 
Back
Top