Cum fac selectarea unui anumit rand dintr-un tabel MySql

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

dishpointer
PHPRomania Supporter
Mesaje: 18
Membru din: Joi Noi 03, 2011 4:31 pm
Contact:

Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde dishpointer » Sâm Iun 06, 2015 4:26 pm

Salut! As vrea putin ajutor in formularea corecta a interogarii SELECT din codul meu.
Am creat o baza de date in care am un tabel denumit 'INREGISTRATI' si in care sunt stocate datele celor care se inregistreaza prin formularul meu de inregistrare.
In pagina mea inregistrati.php am codul php care face urmatorul lucru:
- se conecteaza la baza de date
- imi extrage randul (inregistrarea) corespunzatoare selectiei
- imi afiseaza in browser randul/inregistrarea respectiva adica (nume, initiala_tata, prenume, cnp, stare, post_ocupat)

Codul meu din pagina inregistrati.php este urmatorul:


Cod: Selectaţi tot

 <?php
//Connectare la Baza de Date
$user="userul_meu";
$parola="parola_mea";
$db="baza_mea";

$conn = mysql_connect("localhost", "$user", "$parola")
    or die("Nu m-am putut conecta la MySQL");
$selectdb = mysql_select_db(''.$db.'');

// conectare si selectare DB
$result = mysql_query("SELECT * FROM INREGISTRATI WHERE id_inregistrat ='35'");
$html_tab = '<table width="980" cellpadding="3" cellspacing="2" border="1" bordercolor="#0000ff"><tr>';
$i = 0;
while($row = mysql_fetch_array( $result ))
{
  $html_tab .= '<td align="left" valign="middle">'. $row['nume'] . '</td>';
  $html_tab .= '<td align="left" valign="middle">'. $row['init_tata'] . '</td>';
  $html_tab .= '<td align="left" valign="middle">'. $row['prenume'] . '</td>';
  $html_tab .= '<td align="left" valign="middle">'. $row['cnp'] . '</td>';
  $html_tab .= '<td align="left" valign="middle">'. $row['stare'] . '</td>';
  $html_tab .= '<td align="left" valign="middle">'. $row['post_ocupat'] . '</td>';
  $i++;
  if(($i%1)==0) $html_tab .= '</tr><tr>';    // Inchide randul si adauga altul la fiecare 1 parcurgeri
}
$html_tab .= '</tr></table>';

echo str_replace('<tr></tr>', '', $html_tab);   // Afiseaza (Cu "str_replace" sa nu ramana rand gol adaugat)
}
?>
 


Codul este functional cand in selectie in clauza WHERE fac atribuirea prin valoare coloanei "id_inregistrat" , adica atribui valoarea 35, dar eu vreau sa imi i-a automat valoarea coloanei "id_inregistrat" corespunzatoare randului respectiv fara sa fiu eu nevoit sa fac atribuirea prin valoare adica 35.
Cum as putea sa formulez interogarea $result = mysql_query("SELECT * FROM INREGISTRATI WHERE id_inregistrat ='35'"); astfel incat sa nu fiu nevoi sa fac atribuirea prin valoare adica '35' ci sa imi i-a automat valoarea din coloana id_angajat ?
Am incercat in clauza WHERE sa fac asa :

$result = mysql_query("SELECT * FROM INREGISTRATI WHERE id_inregistrat ='. $row['id_inregistrat'] . '");

dar nu merge.



takedown
Average Member
Mesaje: 153
Membru din: Joi Feb 07, 2013 8:50 pm
Contact:

Re: Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde takedown » Sâm Iun 06, 2015 5:14 pm

Nu prea inteleg eu...in primul rand, cum vrei tu ca script-ul sa preia automat ceva din baza de date, daca tu nu ii specifici ce sa ia, nu prea este logic.....ce doresti tu mai exact, de ce ai nevoie de asa ceva? Daca ai un script de autentificare ( login/register ) te poti ajuta de crearea unei sesiunii ( session ), in momentul in care user-ul se autentifica, sa retina id-ul acelui user, apoi folosesti ceea ce ai stocat in sesiunea creata.

Uite, un exemplu foarte simplu sa intelegi.
//functie folosita pentru a putea crea si folosi sesiunii in codul tau
// aceasta functie este declarata pe prima linie de la inceputul scriptului
// daca doresti sa te folosesti de sesiun si in alte pagini, trebuie sa ai pe prima linia a codului tau aceasta functie
session_start();

Cod: Selectaţi tot

//crearea unei sesiunii
$_SESSION['key'] = value;


Cod: Selectaţi tot

//verificare daca o anumita sessiune exista

if(isset($_SESSION['key']))
{
    echo $_SESSION['key'];
}
else
{
  echo 'Aceasta sesiune nu exista';
}


Cod: Selectaţi tot

// pentru a distruge sesiunea curenta folosesti functia
session_destroy(); // de obicei folosita pentru logout

Acum, exemplu, avem nevoie de 2 fisiere

index.php

Cod: Selectaţi tot

<?php
session_start();

$_SESSION['name'] = 'Takedown;

// daca in fisierul tau este doar php, acest tag ( ?> ) se poate omite
?>



profile.php

Cod: Selectaţi tot

<?php
session_start();

echo $_SESSION['name'];

?>

Cam asta este tot, asa poti face si pentru stocarea id-ului user-ului care este autentificat.Daca autentificarea este corecta, pur si simplu stochezi id-ul user-ului intr-o astfel de sesiune si apoi urmand ceea ce ti-am spus eu, folosesti aceasta sesiune unde ai tu nevoie.

INFO:
http://php.net/manual/en/function.session-start.php
http://www.formget.com/login-form-in-php/ ( desi nu prea este corect, poti arunca un ochi aici sa intelegi ).

In codul tau vei avea ceva de genul:

Cod: Selectaţi tot

SELECT * FROM INREGISTRATI WHERE id_inregistrat =' . $_SESSION['id'] . '

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde MarPlo » Sâm Iun 06, 2015 7:29 pm

Salut
Valoarea pentru 'id_inregistrat' o poti trimite si prelua prin $_GET, de la un link.
Intai faci un script care selecteaza si creaza link-uri cu id-ul in adresa url.
Cam asa:

Cod: Selectaţi tot

$sql = "SELECT id_inregistrat, name FROM INREGISTRATI";
// trimiti interogarea, cu MySQLi sau PDO
// parcurgi datele si creezi link-uri
$links = '';
while(...){
  $links .= '<a href="inregistrati.php?id='. $row['id_inregistrat'].'" title="'. $row['name'] .'">'. $row['name'] .'</a><br>';
}
echo $links;

- Daca sunt multe inregistrari, poti folosi un script de paginare (se gaseste pe net).
Iar in inregistrati.php preiei id-ul din $_GET['id'], asa:

Cod: Selectaţi tot

$id_inregistrat = isset($_GET['id']) ? intval($_GET['id']) : 1; 
$sql 
= "SELECT * FROM INREGISTRATI WHERE id_inregistrat = $id_inregistrat";
// restul ...  

dishpointer
PHPRomania Supporter
Mesaje: 18
Membru din: Joi Noi 03, 2011 4:31 pm
Contact:

Re: Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde dishpointer » Sâm Iun 06, 2015 8:56 pm

Incerc sa ma exprim altfel si sa ma fac inteles mai bine.
Deci, am facut o baza de date care contine un tabel 'INREGISTRATI'
Acum prin intermediul unui formular de inregistrare/autentificare , pot sa ma inregistrez si sa ma autentific la baza mea de date si astfel devin operator si pot adauga, sterge, modifica si vizualiza datele din tabelul INREGISTRATI. Totul pot sa fac din browser ,deci nu am nevoie sa folosesc phpmyadmin pt a adauga, sterge, modifica si vizualiza datele din tabelul INREGISTRATI.
Ce vreau eu de fapt este urmatorul lucru.
ex:
eu adaug in tabelul INREGISTRATI (prin intermediul unui formular) 100 de persoane cu nume, init_tata, prenume, cnp, stare, post_ocupat, apoi daca vizualizez tabelulul INREGISTRATI imi apare in browser 100 de randuri/inregistrari cu datele din coloanele nume, init_tata, prenume, cnp, stare, post_ocupat. E OK pana aici si functioneaza.
Aici e problema ce vreau eu sa fac, si anume in dreptul fiecarui rand sa imi apara si un link cu vizualizeaza si un link cu modifica.
Inconvenientul este ca eu trebuie sa adaug manual dupa inregistrare link cu modifica si link cu vizualizeaza in dreptul fiecarui rand/ inregistrare si apoi sa fac 100 de pagini .php cu vizualizeaza si 100 de pagini cu modifica pt fiecare rand/inregistrare iar in clauza WHERE din interogarea SELECT sa ii atribui coloanei id_inregistrat valoarea corespunzatoare randului/ inregistrarii respective ca sa imi afiseze doar randul respectiv ceeia ce nu e pract si convenabil deloc.
Vreau ca odata cu inregistrarea valorilor din coloanele nume, init_tata, prenume, cnp, stare, post_ocupat sa imi apara automat in dreptul fiecarui rand/inregistrare si un link cu modifica si un link cu vizualizeaza, deci sa am nevoie doar de 2 pagini .php si cand dau click pe linkul vizualizeaza la randul 35 sa imi afiseze doar randul 35, iar daca dau click pe linkul vizualizeaza din dreptul randului 100 sa imi afiseze doar randul 100 si sa nu mai am nevoie de cele 100 de pagini .php spre care sa directionez cele 100 de link-uri din dreptul fiecarui rand.
Acuma ati inteles asa?

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde nevvermind » Sâm Iun 06, 2015 10:18 pm

Acuma ati inteles asa?

Nope. Poti fi mai succint?
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

dishpointer
PHPRomania Supporter
Mesaje: 18
Membru din: Joi Noi 03, 2011 4:31 pm
Contact:

Re: Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde dishpointer » Sâm Iun 06, 2015 10:41 pm

Din pacate nu pot sa descriu mai pe scurt si mai la obiect problema mea. Nu-i bai ca o rezolv eu pana la urma intr-un fel.
Multumesc oricum pt intentia voastra de a oferi sprijin celor care intampina probleme in munca lor.
Numai bine.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Cum fac selectarea unui anumit rand dintr-un tabel MySql

Mesajde nevvermind » Dum Iun 07, 2015 12:52 am

100 de pagini pt editare si 100 de pagini pt vizualizare..?! Omu, vezi ce a scris MarPlo.

Spui ca nu intelegem bine, dar problema ta e rezolvata si ras-rezolvata de ceva timp. Dilema ta e banala, crede-ma. Cand vei face click si-ai sa te prinzi, ai sa razi. Asa ca citeste tu mai bine ce-au scris ceilalti.

https://www.codeofaninja.com/2011/12/ph ... orial.html - poftim. Ia popcorn si citeste sau uita-te pe youtube.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 20 vizitatori