Link pentru profil utilizator

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Link pentru profil utilizator

Am acest cod care genereaza cum va arata profilul unui utilizator.
Dar nu stiu cum sa fac link pentru fiecare profil .
Adica am in mysql 3 inregistrari in prezent si vreau sa am link pentru fiecare
Inregistrarea 1 - link 1 -> site.ro/profil-numeutilizator1
Inregistrarea 2 - link 2 -> site.ro/profil-numeutilizator2
inregistrarea 3 - link 3 -> site.ro/profil-numeutilizator3
inregistrarea x -link x -> site.ro/profil-numeutilizatorx
Fisierul meu cu acest cod se numeste profil.php
Codu este:

Cod: Selectaţi tot

<?php session_start();
ini_set('display_errors',1);
error_reporting(E_ALL);
include('meniu-sus.php');

$id = $_SESSION['id'];
$sql="SELECT `id`, nume, idm, tara, oras, zi_nastere, luna_nastere, an_nastere, sex, stare, interes, descriere, dtreg, dtvisit FROM `membri` WHERE `id`='$id' LIMIT 1";
$rezultat = mysql_query($sql);
if (mysql_num_rows($rezultat) == 0) {}
else {
while ($rand = mysql_fetch_assoc($rezultat)) {
         echo '
<html>
<head>
<title>Profilul lui '.$rand['nume'].' din '.$rand['oras'].', '.$rand['tara'].'</title>
<link rel="shortcut icon" type="image/x-icon" href="/favicon/0.gif">
<meta name="description" content="Profilul lui '.$rand['nume'].' din '.$rand['oras'].', '.$rand['tara'].'" />
<meta name="keywords" content="'.$rand['nume'].', '.$rand['oras'].', '.$rand['tara'].', '.$rand['stare'].', '.$rand['interes'].', '.$rand['sex'].'" />
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<meta name="resource-type" content="document" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="revisit-after" content="5 days" />
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
<meta name="robots" content="ALL" />
<meta name="robots" content="index, follow" />
<meta name="language" content="RO" />
<meta name="doc-class" content="Completed" />
<meta name="doc-rights" content="Copyrighted Work" />
<meta name="Copyright" content="(c) 2013 ScapaDePlictiseala Romania" />
<meta name="Rating" content="General" />
<meta name="Owner" content="ScapaDePlictiseala Romania" />
<base href="http://www.scapadeplictiseala.tk/" />
</head>
<body>
<table border=0><tr><td bgcolor=#eeeeee width=310 height=300>
<img src="/poza-profil/'.$rand['id'].'.jpg" border=1 width=290 height=290>
<br><br>
<b>Informatii generale</b>
<br><br>Despre '.$rand['nume'].':
<br>"<b> '.$rand['descriere'].' </b>"
<br><br>Interesat(a) de :<b> '.$rand['interes'].' </b>
<br>Stare:<b> '.$rand['stare'].' </b>
<br>Sex:<b> '.$rand['sex'].' </b>
<br>Data nasterii:<b> '.$rand['zi_nastere'].'-'.$rand['luna_nastere'].'-'.$rand['an_nastere'].' </b>
<br>Pe site din data de:<b> '.$rand['dtreg'].' </b>
<br><br><b>Date de contact</b>
<br><br>ID de Messenger: <a href=ymsgr:addfriend?'.$rand['idm'].'><img src=http://opi.yahoo.com/online?u='.$rand['idm'].'&t=0> '.$rand['idm'].'</a>
</td><td>
<font size=4 color=green><b>'.$rand['nume'].'</b></font><br>
Traieste in <b>'.$rand['tara'].'/'.$rand['oras'].'</b> <img src=/imagini/stare.png> '.$rand['stare'].' <img src=http://opi.yahoo.com/online?u='.$rand['idm'].'&t=0> <a href=ymsgr:addfriend?'.$rand['idm'].'>'.$rand['idm'].'</a>
<br> <img src=/imagini/statistici.png>ultima logare: '.$rand['dtvisit'].'
</td></tr></table>';
                 }
}

include('reclama-jos.php');
include('meniu-jos.php');
?>
</body>
</html>

MarPlo Mesaje:4343
Link-urile cu utilizatorii inregistrati intr-un tabel MySQL se fac printr-un Select la tabel, apoi parcurgerea randurilor selectate (cu while() ) si crearea tag-ului HTML <a> la fiecare rand parcurs.
Uite un exemplu pe care il poti adapta la scriptul tau. Vezi comentariile din cod.

Cod: Selectaţi tot

// conectare la baza de date

// select primele 20 randuri, ordonate dupa 'id'
$sql="SELECT `id`, `nume` FROM `tabel` ORDER BY `id` LIMIT 20";
$rezultat = mysql_query($sql);
if (mysql_num_rows($rezultat) == 0) { echo '0 rezultate.'; }
else {
  while ($rand = mysql_fetch_assoc($rezultat)) {
    // creare si afisare link catre pagina fiecarui "nume", pagina creata cu "profil.php"
    echo '<a href="profil.php?user='. $rand['nume']. '" title="'. $rand['nume']. '">Profil '. $rand['nume']. '</a><br/>';
  }
}
// Iar in "profil.php" se poate prelua numele din adresa URL cu $_GET['user']
 

archemorus Mesaje:29
Deoarece "numeutilizator" este unic pentru fiecare utilizator(cel putin asa ar trebui sa fie) poti sa iti faci link-ul pentru fiecare profil fara sa atasezi numarul inregistrarii la sfarsit,pentru fiecare link
Inregistrarea 1 - link 1 -> site.ro/profil-george006
Inregistrarea 2 - link 2 -> site.ro/profil-mihai90
inregistrarea 3 - link 3 -> site.ro/profil-rambo89
inregistrarea x -link x -> site.ro/profil-numeutilizator

Link-ul catre aceasta pagina este:

Cod: Selectaţi tot

echo '<a href="profil.php?username='.$username. ' " title="Profil '.$username. '">Profil '.$username. '</a>';
si codul care trebuie adaugat in .htaccess este:

Cod: Selectaţi tot

RewriteRule ^profil-(.*).html$ profil.php?username=$1
Codul nu este testat dar ar trebui sa mearga.

In aceasta pagina o sa poata sa ajunga doar un utilizator inregistrat.
Daca vrei sa faci o pagina cu toti utilizatorii inregistrati ai site-ului tau,atunci faci ceva asemanator cu ce a spus MarPlo.Un select cu toti membrii,si un link catre fiecare profil,insa in "profil.php" trebuie sa iei numele de utilizator din URL folosind

Cod: Selectaţi tot

$_GET['username'];
si sa faci un SELECT cu o clauza WHERE numeutilizator=$username .Am observat ca scriptul tau profil.php foloseste

Cod: Selectaţi tot

$id = $_SESSION['id'];
pentru clauza WHERE , deci scriptul tau profil.php momentan poate fi folosit doar de un membru pentru a-si vizualiza profilul.
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro

cadou Mesaje:328
Pai aici e o problema, cum pot schimba aici :

Cod: Selectaţi tot

$sql="SELECT nume, idm, tara, oras, zi_nastere, luna_nastere, an_nastere, sex, stare, interes, descriere, dtreg, dtvisit FROM `membri` WHERE `id`='".$_SESSION['id']."' LIMIT 1";
Ca sa poata vedea oricine profilul.
In loc de session ce pot folosi ?

MarPlo Mesaje:4343
Daca pagina e accesata printr-un link, in acel link ar trebui sa ai si ID-ul utilizatorului pt acea pagina (daca faci Select-ul dupa ID).
De exemplu:

Cod: Selectaţi tot

//...
echo '<a href="profil.php?user='. $rand['nume']. '&id='. $rand['id']. '" title="'. $rand['nume']. '">Profil '. $rand['nume']. '</a>';
 
Apoi, in loc de $_SESSION['id'] poti folosi numarul din $_GET['id'].
Ca sa fii sigur ca e un numar si nu altceva adaugat in adresa URL, se poate face asa:

Cod: Selectaţi tot

$_GET['id'] = intval($_GET['id']);
 

archemorus Mesaje:29
In final codul tau ar trebui sa arate ceva asemanator cu:

Cod: Selectaţi tot

<?php session_start();
ini_set('display_errors',1);
error_reporting(E_ALL);
include('meniu-sus.php');
if isset($_GET['id']) {
$id = intval($_GET['id']);

$sql = "SELECT `id`, nume, idm, tara, oras, zi_nastere, luna_nastere, an_nastere, sex, stare, interes, descriere, dtreg, dtvisit FROM `membri` WHERE `id`='$id' LIMIT 1";
$rezultat = mysql_query($sql);
if (mysql_num_rows($rezultat) == 0) {echo "Utilizatorul cu acest ID nu exista in baza de date";}
else {
while ($rand = mysql_fetch_assoc($rezultat)) {
         echo '
<html>
<head>
<title>Profilul lui '.$rand['nume'].' din '.$rand['oras'].', '.$rand['tara'].'</title>
<link rel="shortcut icon" type="image/x-icon" href="/favicon/0.gif">
<meta name="description" content="Profilul lui '.$rand['nume'].' din '.$rand['oras'].', '.$rand['tara'].'" />
<meta name="keywords" content="'.$rand['nume'].', '.$rand['oras'].', '.$rand['tara'].', '.$rand['stare'].', '.$rand['interes'].', '.$rand['sex'].'" />
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<meta name="resource-type" content="document" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="revisit-after" content="5 days" />
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
<meta name="robots" content="ALL" />
<meta name="robots" content="index, follow" />
<meta name="language" content="RO" />
<meta name="doc-class" content="Completed" />
<meta name="doc-rights" content="Copyrighted Work" />
<meta name="Copyright" content="(c) 2013 ScapaDePlictiseala Romania" />
<meta name="Rating" content="General" />
<meta name="Owner" content="ScapaDePlictiseala Romania" />
<base href="http://www.scapadeplictiseala.tk/" />
</head>
<body>
<table border=0><tr><td bgcolor=#eeeeee width=310 height=300>
<img src="/poza-profil/'.$rand['id'].'.jpg" border=1 width=290 height=290>
<br><br>
<b>Informatii generale</b>
<br><br>Despre '.$rand['nume'].':
<br>"<b> '.$rand['descriere'].' </b>"
<br><br>Interesat(a) de :<b> '.$rand['interes'].' </b>
<br>Stare:<b> '.$rand['stare'].' </b>
<br>Sex:<b> '.$rand['sex'].' </b>
<br>Data nasterii:<b> '.$rand['zi_nastere'].'-'.$rand['luna_nastere'].'-'.$rand['an_nastere'].' </b>
<br>Pe site din data de:<b> '.$rand['dtreg'].' </b>
<br><br><b>Date de contact</b>
<br><br>ID de Messenger: <a href=ymsgr:addfriend?'.$rand['idm'].'><img src=http://opi.yahoo.com/online?u='.$rand['idm'].'&t=0> '.$rand['idm'].'</a>
</td><td>
<font size=4 color=green><b>'.$rand['nume'].'</b></font><br>
Traieste in <b>'.$rand['tara'].'/'.$rand['oras'].'</b> <img src=/imagini/stare.png> '.$rand['stare'].' <img src=http://opi.yahoo.com/online?u='.$rand['idm'].'&t=0> <a href=ymsgr:addfriend?'.$rand['idm'].'>'.$rand['idm'].'</a>
<br> <img src=/imagini/statistici.png>ultima logare: '.$rand['dtvisit'].'
</td></tr></table>';
                 }
}
} else { echo " Id-ul primit nu are nici o valoare. "; }

include('reclama-jos.php');
include('meniu-jos.php');
?>
</body>
</html>
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro

cadou Mesaje:328
Prima data imi dadea eroarea :

Cod: Selectaţi tot

 Parse error: syntax error, unexpected T_ISSET, expecting '(' in /profil.php on line 5
Si am modificat acolo la linia 5 lipsea o pereche de paranteze

Cod: Selectaţi tot

if isset($_GET['id']) in if (isset($_GET['id']))
Iar acum zice ca" Id-ul primit nu are nici o valoare.

archemorus Mesaje:29
Ai generat link-urile catre fiecare profil asa cum a zis MarPlo?

Cod: Selectaţi tot

echo '<a href="profil.php?user='. $rand['nume']. '&id='. $rand['id']. '" title="'. $rand['nume']. '">Profil '. $rand['nume']. '</a>';
Daca ai facut asta nu ar trebui sa fie nici o problema .
Daca ai facut asta,pune codul din pagina care are link-urile catre profil.php sa vedem daca are ceva gresit.
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro

cadou Mesaje:328
Scz dar am facut o cheste de genu ca sa vad daca merge

Cod: Selectaţi tot

site.ro/profil.php?user=numeutilizatoridutilizator
si normal ca nu mergea
Dar acum mam uitat mai atent la ce a zis marplo mai sus si am scris asa

Cod: Selectaţi tot

site.ro/profil.php?user=numeutilizator&idutilizator
si acum merge asa.
Dar merge si asa: "site.ro/profil.php?user=idutilizator"
Dar asa nu merge: "site.ro/profil.php?user=numeutilizator"
Dar schimbarea adresei o voi face in htacces, daca nu ma descurc mai intreb.
Ms mult de tot.

archemorus Mesaje:29
Asa merge

Cod: Selectaţi tot

site.ro/profil.php?user=idutilizator
pentru ca in pagina profil.php tu iei prin $_GET id-ul utilizatorului.
Asa nu merge

Cod: Selectaţi tot

site.ro/profil.php?user=numeutilizator
pentru ca tu nu folosesti numele de utilizator in profil.php pentru a scoate din baza de date detaliile contului , folosesti doar id-ul.
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro

cadou Mesaje:328
Ms mult de explicatie !
Am incercat ca sa schimb acolo in loc sa preia id sa preia numele.
Am facut modificarile :

Cod: Selectaţi tot

if (isset($_GET['nume'])) {
    $nume = intval($_GET['nume']);
si la sql am modificat din id=$id in
"... WHERE `nume`='$nume'"
Dar nu merge.

archemorus Mesaje:29
In primul rand, citeste in manualul php ce face functia intval(); si o sa iti dai seama singur de ce nu merge, si asa mai retii ceva.
In al doilea rand, nu este bun modul tau de gandire pentru ca "nume", este un camp din tabela care poate avea inregistrari duplicate .
Gandeste-te cati Mihai, Andrei etc sunt in Romania. Asa scapi de probleme. Cea mai buna metoda este sa folosesti id-ul,care intotdeauna o sa aiba o valoare unica pentru fiecare utilizator. Sau de asemenea poti folosi numeledeutilizator (gen george1956) care de asemenea ar trebui sa fie unic pentru fiecare utilizator, da nu numele persoanei care are acel cont.
Have a nice day!
Desenele Copilariei http://www.desenele-copilariei.ro
Bancuri Haioase http://www.haiosul.ro

Subiecte similare