• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dwie tabele a zapytanie w SQL

Object Storage Arubacloud
0 głosów
268 wizyt
pytanie zadane 10 lipca 2019 w PHP przez Jano1890 Nowicjusz (200 p.)

Witam posiadam w bazie danych dwie tabele, jedna tabela "domain" druga tabela"persons" które są połączone kolumną 'id_domain". W tym momencie skrypt zaczytuje tylko wiersz który jest na pierwszej pozycji a główny zamysł jest taki że dany użytkownik może posiadać kilka domen. Poniżej wrzucam kod logowania który zaczytuje wszystkie informacje z bazy

<?php

	session_start();
	
	if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
	{
		header('Location: index.php');
		exit();
	}

	require_once "connect.php";

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if ($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}
	else
	{
		$login = $_POST['login'];
		$haslo = $_POST['haslo'];
		
		$login = htmlentities($login, ENT_QUOTES, "UTF-8");
	
		if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM persons,domain WHERE user='%s'",
		mysqli_real_escape_string($polaczenie,$login))) 
		)
		{
			$ilu_userow = $rezultat->num_rows;
			if($ilu_userow>0)
			{
				$wiersz = $rezultat->fetch_assoc();
				
				if (password_verify($haslo, $wiersz['pass']))
				{
				
       
				$_SESSION['zalogowany'] = true;
				$_SESSION['id'] = $wiersz['id'];
				$_SESSION['name'] = $wiersz['name'];
				$_SESSION['user'] = $wiersz['user'];
				$_SESSION['email'] = $wiersz['email'];
				$_SESSION['end'] = $wiersz['end'];
				$_SESSION['domaine_name'] = $wiersz['domaine_name'];
				
					unset($_SESSION['blad']);
					$rezultat->free_result();
					
					header('Location: panel.php');
				}
				else 
				{
					$_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>';
					header('Location: index.php');
				}
				
			} else {
				
				$_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>';
				header('Location: index.php');
				
			}
			
		}
		
		$polaczenie->close();
	}
	
?>
 

Poniżej domeny oraz efekt finalny jaki chciałbym osiągnąć

 

 

1 odpowiedź

0 głosów
odpowiedź 10 lipca 2019 przez niezalogowany
Przenieś id_domain z tabeli person do tabeli domain jako id_persons
komentarz 10 lipca 2019 przez Jano1890 Nowicjusz (200 p.)
edycja 10 lipca 2019 przez Jano1890

Poprawiłem tabele żeby to miało ręce i nogi, teraz zastanawiam się czy zapytania do bazy danych zrobić w pliku login.php czy po weryfikacji danych logowania i po przeniesieniu na stronę panel.php?

Poprawnie działa zapytanie dla "id=1" natomiast nie wiem jak zrobić żeby wypisywało dane dla "id" które jest aktualnie zalogowany

    SELECT p.name, d.domain_name, d.end FROM domain d LEFT JOIN persons p ON d.id_person = p.id WHERE p.id = 1

 

 

komentarz 10 lipca 2019 przez niezalogowany
$query = "SELECT p.name, d.domain_name, d.end FROM domain d LEFT JOIN persons p ON d.id_person = p.id WHERE p.id =".$_SESSION["id"]

Wyświetli ci dane dotyczące urzytkownika którego id masz w sesji. 

komentarz 11 lipca 2019 przez Jano1890 Nowicjusz (200 p.)

Kod działa, jednak został ostatni problem tzn. chciałbym aby móc wyciągnąć dane za pętli while

    require_once "connect.php";
     
    	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name); 
    	$wynik = $polaczenie->query("SELECT p.name, d.domain_name, d.domain_price,  d.domain_end FROM domain d LEFT JOIN persons p ON d.id_person = p.id WHERE p.id = '".$_SESSION['id']."'");
     
    	if($wynik->num_rows > 0)
    	{
    		while($wiersz = $wynik->fetch_assoc())
    		{
     
    		 echo '<div class="col-sm-6 col-md-4 col-lg-2">
    			<div class="box"><b>Nazwa Domeny</b></div>
    			<div class="box2">'.$wiersz['domain_name'].'<br></div></div>';
     
     
     
    		}
    			echo '<div class="col-sm-6 col-md-4 col-lg-2">
    			<div class="box"><b>Nazwa Domeny</b></div>
    			<div class="box2"> '.$_SESSION["name"].'</div></div>';
     
     
     
    	}

 

komentarz 11 lipca 2019 przez niezalogowany
Możesz jaśniej jaki efekt chcesz uzyskać?
komentarz 11 lipca 2019 przez Jano1890 Nowicjusz (200 p.)

dokładnie taki jak na zdjęciu, czyli lista domen jedna pod drugą ale żeby box "nazwa domeny" była tylko jedna.

 

Podobne pytania

0 głosów
1 odpowiedź 319 wizyt
pytanie zadane 15 maja 2018 w PHP przez Alterwar Dyskutant (7,650 p.)
+2 głosów
3 odpowiedzi 372 wizyt
pytanie zadane 29 czerwca 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
+1 głos
2 odpowiedzi 224 wizyt
pytanie zadane 24 kwietnia 2021 w PHP przez Nikon221 Początkujący (340 p.)

92,674 zapytań

141,576 odpowiedzi

320,045 komentarzy

62,038 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...