Pobieranie danych z MySQL za pośrednictwem PHP


(Mbronicki) #1

Witam!

Czy ktoś mógłby mi wytłumaczyć jak napisać skrypt w PHP, który pobierze pewne dane z bazy MySQL?

Otóż mam strukturę tabeli user:

 

id user

login

password

email

ip

points

 

Chodzi o to, aby po zalogowaniu się przez użytkownika, pobrać z bazy danych i wyświetlić jego liczbę punktów (points).

 

Załączam dodatkowo skrypt logowania:

<?php session_start();
      require_once('db.php');
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<title>Skrypt logowania z wykorzystaniem PHP i bazy MySQL</title>
<meta name="description" content="Kurs jQuery" />
<meta name="keywords" content="kurs, jquery, mlaskowski.pl" />
</head>

<body>
  
  <?php
    /* jeżeli nie wypełniono formularza - to znaczy nie istnieje zmienna login, hasło i sesja auth
     * to wyświetl formularz logowania
     */
    if (!isset($_POST['login']) && !isset($_POST['password']) && $_SESSION['auth'] == FALSE) {
  ?>
  
      <form name="form-logowanie" action="login.php" method="post">
          Login: <input type="text" name="login" /><br />
          Hasło: <input type="password" name="password" /><br />
          <input type="submit" name="zaloguj" value="Zaloguj" />
      </form>
  
  <?php
  }
    /* jeżeli istnieje zmienna login oraz password i sesja z autoryzacją użytkownika jest FALSE to wykonaj
     * skrypt logowania
     */
	elseif (isset($_POST['login']) && isset($_POST['password']) && $_SESSION['auth'] == FALSE) {
      
        // jeżeli pole z loginem i hasłem nie jest puste      
		if (!empty($_POST['login']) && !empty($_POST['password'])) {
          
		// dodaje znaki unikowe dla potrzeb poleceń SQL
		$login = mysql_real_escape_string($_POST['login']);
		$password = mysql_real_escape_string($_POST['password']);
        
        // szyfruję wpisane hasło za pomocą funkcji md5()
        $password = md5($password);
		
        /* zapytanie do bazy danych
         * mysql_num_rows - sprawdzam ile wierszy odpowiada zapytaniu mysql_query
         * mysql_query - pobierz wszystkie dane z tabeli user gdzie login i hasło odpowiadają wpisanym danym
         */
		$sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `login` = '$login' AND `password` = '$password'"));
		
			// jeżeli powyższe zapytanie zwraca 1, to znaczy, że dane zostały wpisane poprawnie i rejestruję sesję
			if ($sql == 1) {
              
                // zmienne sesysje user (z loginem zalogowanego użytkownika) oraz sesja autoryzacyjna ustawiona na TRUE
				$_SESSION['user'] = $login;
				$_SESSION['auth'] = TRUE;
                
                // przekierwuję użytkownika na stronę z ukrytymi informacjami
				echo '<meta http-equiv="refresh" content="1; URL=hide.php">';
				echo '<p style="padding-top:10px";><strong>Proszę czekać...</strong><br />trwa logowanie i wczytywanie danych</p>';
			}
            
            // jeżeli zapytanie nie zwróci 1, to wyświetlam komunikat o błędzie podczas logowania
			else {
				echo '<p style="padding-top:10px;color:red";>Błąd podczas logowania do systemu<br />';
				echo '<a href="login.php">Wróć do formularza</a></p>';
			}
		}
        
        // jeżeli pole login lub hasło nie zostało uzupełnione wyświetlam błąd
		else {
			echo '<p style="padding-top:10px;color:red";>Błąd podczas logowania do systemu<br />';
			echo '<a href="login.php">Wróć do formularza</a></p>';	
		}
	}
    
    // jeżeli sesja auth jest TRUE to przekieruj na ukrytą podstronę
	elseif ($_SESSION['auth'] == TRUE && !isset($_GET['logout'])) {
		echo '<meta http-equiv="refresh" content="1; URL=hide.php">';
		echo '<p style="padding-top:10px"><strong>Proszę czekać...</strong><br />trwa wczytywanie danych</p>';
	}
    
    // wyloguj się
	elseif ($_SESSION['auth'] == TRUE && isset($_GET['logout'])) {
		$_SESSION['user'] = '';
		$_SESSION['auth'] = FALSE;
		echo '<meta http-equiv="refresh" content="1; URL=login.php">';
		echo '<p style="padding-top:10px"><strong>Proszę czekać...</strong><br />trwa wylogowywanie</p>';
	}
  ?>
  
</body>
  
</html>

--

Pozdrawiam,

Cyjanowodorek


(Drobok) #2

Czego nie wiesz / nie rozumiesz ?


(Mbronicki) #3

Nie wiem zbytnio jakiego polecenia użyć w kodzie.

mysql_query ?

I co dalej z tym zrobić ??


(Drobok) #4

tak każde zapytanie do bazy danych realizuje się przez tą funkcję.

Później parsujesz sobie to zapytanie np za pomocą funkcji http://php.net/manual/en/function.mysql-fetch-assoc.php

Tam też masz przykład, nie potrzebujesz pętli zakładaąc że wynik w bazie masz jeden.


(Piotrek_20) #5

Do łączenia się z bazą i zapytań lepiej używać biblioteki PDO i instrukcji preparowanych. Tak ogólnie to wklejony kod jest bardzo słaby.


(Javapraca) #6

Garść przykładów:

http://www.w3schools.com/php/php_mysql_select.asp

http://www.tutorialspoint.com/php/mysql_select_php.htm