Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Profil
Forum PHP.pl > Forum > Przedszkole
Kenexos
Witajcie jak za pomocą sesji zrobić najprościej edycje profilu??
Mam takie dwie sesje:
$_SESSION['username'] = $row['username']; --------- Login/Imię ( co kto woli)
$_SESSION['access'] = $row['access']; -----------Prawa (admin i root)( nie wiem jak wyciągać admina ;/)

Czy za pomocą username mogę wyświetlić formularz i resztę pól do edycji?
Np takie jak email.?

Sorry że takie głupie pytania ale dopiero się ucze php i mysql więc I'am newbie.

Wie ktośquestionmark.gif Jak
Lars
A po co używać do tego sesji? To trochę głupie - można dane pobrać do formularza, potem wysyłka
metodą POST i zapis.

Pozdrawiam.
Kenexos
Chodzi o to że jak mam je tam pobrać??;]
Raffuss
A wyciagasz ze swojej bazy danych uprzednio sie z nia laczac oczywiscie, takie cos:
  1. $sql = "SELECT * FROM nazwa_tabeli WHERE username='$zmienna_przypisana_userowi'";
  2. $result = mysql_query($sql);
  3. $row = mysql_fetch_array($result);


I wstawiasz sobie w kod formularza dla przykladu dla pobrania hasła:
  1. <input type="password" size="45" maxlength="15" name="password" value="<? echo $row["password"]; ?>">


Jeżeli gdzieś się pomyliłem proszę poprawić..
ferrero2
Dokładnie powinno to wyglądać tak :
Oczywiście jeśli dobrze zrozumiałem intencję osoby, która założyła temat.
Mamy w bazie danych informację na temat usera powiedzmy :

id : primarykey(auto_incerement)
User : Janek
Haslo : tajnehaslo
Imie : Jan
Nazwisko : Kowalski
email : jankowalski@go2.pl

Osoba za pomocą sesji loguje się u nas na stronie, podaje swój login oraz hasło.
Dane na temat loginu przypisujemy do zmiennej $_SESSION['USERNAME']
Mamy kilka opcji do wyboru np:

-dodaj artykuł
-usuń artykuł
-edytuj profil

Klikając na edytuj profil: otwiera nam się strona (nazwijmy ją edycja_profilu.php z utworzonym formularzem. Dane do formularza pobierane są z bazy.
Strona może wyglądać tak :

Kod
<?php
#w nagłówku mamy takie rzeczy jak session_start(); oraz kolejny require z konfiguracją bazy czyli user password do mysql itd
require("naglowek.php");


#następnie ustanawiamy połączenie z bazą i ustawiamy stronę kodową przesyłanych danych z bazy
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);
mysql_query("SET NAMES 'utf8'");

#tutaj pobieramy dane które nas interesują czyli profil zalogowanej osoby
$sql = "SELECT * FROM nazwa_tabeli_z_informacjami_o_userach WHERE user = '" . $_SESSION['USERNAME'] . "'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

#następnie tworzymy formularz i wypełniamy go pokolei danymi które nas interesują (w tym wypadku w poziomie, może być i w pionie - wystarczy inny układ tabeli)

echo '<form method="POST" name="user_form" action="update_profil.php">
<table>
<tr>
<th>User</th>
<th>Imie</th>
<th>Nazwisko</th>
<th>E-Mail</th>
</tr>
<tr>

#pola z bazy mogą być pobierane za pomocą indeksów kolumn licząc że pierwsza od lewej ma numer 0 ( w naszym przypadku jest to id) jak również po nazwach kolumn - niestety przy innych bazach takich jak mssql wymaga to zmiany $row = mysql_fetch_array($result); na $row = mysql_fetch_ROW($result);

<td><input name="user" type="text" value="' .$row['1'] . '"></td>
<td><input name="imie" type="text" value="' .$row['3'] . '"></td>
<td><input name="nazwisko" type="text" value="' .$row['4'] . '"></td>
<td><input name="mail" type="text" value="' .$row['5'] . '"></td>
<td><input name="zmien" type="submit" value="Zmień"></td>
</tr>
</table>
</form>';

#na końcu zakańczamy połączenie z bazą i doklejamy stopkę gdzie są zakończone nasze deklarację divów czy tagi typu </html>

mysql_close();
require("stopka.php");
?>


skrypt nie zawiera obsługi błędów.

Teraz wystarczy uzupełnić plik update.php aby wykonywał UPDATE danych w wierszu gdzie user = $_SESSION['USERNAME'];
i można dodać na końcu takiego skryptu taką linijkę :
Kod
echo '<script language = "javascript" TYPE = "text/javascript">location.href="glowna.php";</script>';

którą często dodaje na końcu moich updatów czyli po wykonaniu czystego skryptu php osoba nie powinna oglądać strony update.php tylko przenieść się na przykład na stronę główną i tam poinformować go o sukcesie zmienienia danych.

Może to okaże się pomocne (oczywiście można to robić w inny sposób) ja stosuje taką wersję

Pozdrawiam
Mariusz
Kenexos
Dzięki mariusz ale zrobiłem to tak:
  1. <?php
  2. $username = $_SESSION['username'];
  3. ?>
  4.  
  5.  
  6.  
  7. $db_host = 'localhost';
  8. $db_user = 'root';
  9. $db_password = '';
  10. $database = 'proba';
  11.  
  12. mysql_connect($db_host, $db_user, $db_password);
  13. mysql_select_db($database);
  14.  
  15. $sql = \"SELECT * FROM user WHERE user = '\" .$username. \"'\";
  16. $result = mysql_query($sql);
  17. $row = mysql_fetch_array($result);
  18.  
  19. echo '
  20.  
  21. User: 
  22.  
  23.  Imie: 
  24.  
  25. Nazwisko :
  26.  
  27. Emaill:
  28.  
  29.  
  30.  
  31. ';
  32.  
  33. mysql_close();

I nawet nie wyświetla danych w formularzu..;/
@off powiedz jeszcze chociaż jak w utpade.php zrobić utpade jednego pola ;]

@edit
Można użyc funkcji utpade ;P
  1. <?php
  2. function update(){
  3.  
  4. GLOBAL $dbc, $username, $email, $password, $id;
  5.  
  6. $username = escape($_POST['username']);
  7. $email = escape($_POST['email']);
  8.  
  9. if (isset($_POST['password'])){
  10. $query = "UPDATE user SET username='$username', email='$email', haslo=PASSWORD('{$_POST['password']}') WHERE user_id='{$_GET['id']}'";
  11. }else{
  12. $query = "UPDATE user SET username='$username', email='$email'WHERE user_id='{$_GET['id']}'";
  13. }
  14. $result=mysql_query($query);
  15.  
  16. echo 'Dane zostały zmienione<Br />';
  17. echo '<a href="admin.php?cmd=ok">Strona głowna</a>';
  18. ?>


Ktoś pomoże?


questionmark.gif??wie ktoś;d
Lars
Sam możesz sobie pomóc - używając mysql_error" title="Zobacz w manualu PHP" target="_manual w takiej formie:
  1. <?php
  2. mysql_query($zapytanie) or die(mysql_error());
  3. ?>
Kenexos
Co ? Ja nie o to pytałem biggrin.gif
Pytałem jak naprawić skrypt by użytkownik mógł edytować swój profil:

  1. <?php
  2. $username = $_SESSION['username'];
  3. ?>
  4.  
  5.  
  6. <?php
  7.  
  8. $db_host = 'localhost';
  9. $db_user = 'root';
  10. $db_password = '';
  11. $database = 'proba';
  12.  
  13. mysql_connect($db_host, $db_user, $db_password);
  14. mysql_select_db($database);
  15.  
  16.  
  17.  
  18.  
  19. GLOBAL $dbc, $username, $password, $access, $wiek, $nazwisko, $imie, $email, $id, $PHP_SELF;
  20.  
  21. $query="SELECT * FROM user WHERE user = '" .$username. "'";
  22. $result= @mysql_query($query);
  23. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  24.  
  25.  
  26.  
  27. echo '<form method="POST" name="user_form" action="update_profil.php">
  28.  
  29. User: <input name="user" type="text" value=" '.$row['username'].'"><br>
  30.  Imie: <input name="imie" type="text" value="' .$row['3'] . '"><br>
  31. Nazwisko :<input name="nazwisko" type="text" value="' .$row['4'] . '"><br>
  32. Emaill:<input name="mail" type="text" value="' .$row['5'] . '"><br>
  33. <input name="zmien" type="submit" value="Zmień"><br>
  34. ';
  35.  
  36. ?>


Help..
Lars
Ja nie mogę.
  1. <?php
  2. $result= @mysql_query($query);
  3. ?>

zamień na
  1. <?php
  2. $result=mysql_query($query) or die(mysql_error());
  3. ?>


I napisz co wyrzuca.

A co to za konstrukcja:
  1. <?php
  2. GLOBAL $dbc, $username, $password, $access, $wiek, $nazwisko, $imie, $email, $id, $PHP_SELF;
  3. ?>

Jak tam nawet nie ma funkcji.
Kenexos
Wyrzuca mi teraz to:
Unknown column 'user' in 'where clause'
Lars
A może zaprezentujesz nam strukturę tej tabeli?
Kenexos
Lars
Dziękuję ślicznie. Jest tylko jeden problem.
Nie user tylko username.

Druga sprawa - ewidentnie nie chciało ci się myśleć.
Kenexos
No ale dalej nic..
Mam tak:
$query="SELECT * FROM user WHERE username='.$username.'";
$result=mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
Lars
Co nic do cholery? Wyrzuca coś?

[edit]: człowieku, pomyśl trochę. źle zapisałeś zmienną.

[edit2]: nie chcę już pisać kolejnego bo teksty typu:
Cytat
Pamiętaj że test to nick mojego konta.

możesz sobie w cztery litery wsadzić. Dlaczego? Bo czekasz
aż ktoś zrobi to za ciebie. A zapis poprawiłeś, ale na zły.
Kenexos
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.test.''' at line 1


Teraz to.. Pamiętaj że test to nick mojego konta.



$query="SELECT * FROM user WHERE username=''.$username.''";
$result=mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);

To wie ktoś jak zrobić edycje profilu??

To pomoże ktośquestionmark.gif:S
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.