Wyświetlenie historii konta dla użytkownika, który ją posiada

0
<?php
	$empty_history = $db->prepare("SELECT COUNT(*) AS `EmptyHistory` FROM `sms-history`");
	if (!$empty_history->execute()){
		print_r($empty_history->errorInfo());
	}

	foreach($empty_history as $data_empty_history){
		if($data_empty_history['EmptyHistory'] != 'Yutre'){
			echo 'Nie posiadasz żadnej historii operacji konta!';
		}
	}
	$show_history = $db->prepare("SELECT `nick`, `data`, `operation`, `pay` FROM `sms-history` WHERE `nick` = 'Yutre' LIMIT 10"); 
	if (!$show_history->execute()){
		print_r($show_history->errorInfo());
	}
	foreach($show_history as $data_history){
		echo'<span class="blue">'.$data_history['data'].'</span> » <span class="green">'.$data_history['operation'].'</span> » <span class="red">'.$data_history['pay'].' zł</span></br>';
	}
?>

Dla użytkownika, który posiada historię konta wyświetla się w ten sposób:

Nie posiadasz żadnej historii operacji konta!2015-06-12 08:22:23 » 1 » 5
2015-06-12 08:31:37 » 1 » 3
2015-06-12 08:34:29 » 1 » 25
2015-06-12 12:03:32 » 1 » 2

natomiast dla tego co nie ma historii wyświetla się sam komunikat:

Nie posiadasz żadnej historii operacji konta!

Czyli jest dobrze.

Pytanie brzmi. Jak to wyświetlić, żeby gdy użytkownik posiada historię konta NIE pojawiał się komunikat o braku posiadania?
Może głupie pytania ale troszkę mi już to sprawiło problemów :)
PS. Proszę bez zbędnych komentarzy.

0

Pobierasz dane z bazy i sprawdzasz czy tablica z otrzymanymi danymi jest pusta - jak tak to nie ma nic do wyświetlenia, w przeciwnym wypadku jest.
Przy okazji polecam zapoznać się w jakim wypadku execute() zwraca false, bo tu masz błąd.

0

Execute() zwraca obiekt wynikowy jeżeli zapytanie się powiedzie.

U mnie wydaje mi się, że jest dobrze. Jeśli nie istnieje zmienna, wywołuję funkcję execute i zwracam błąd. Jeśli jest dobre zapytanie wyświetlam jego rezultat. Nie wiem...dobrze to rozumuję, czy miałeś coś innego na myśli?

Mówisz o pobraniu i sprawdzeniu ale ja już to zrobiłem:

$empty_history = $db->prepare("SELECT COUNT(*) AS `EmptyHistory` FROM `sms-history`");
	if (!$empty_history->execute()){
		print_r($empty_history->errorInfo());
	}else{
		foreach($empty_history as $data_empty_history){
			if($data_empty_history['EmptyHistory'] != 'Yutre'){
				echo 'Nie posiadasz żadnej historii operacji konta!';
			}
		}
	}

Ten kod działa w porządku. Jednakże problem jest, bo gdy istnieje historia konta dla danego użytkownika to pojawiają się oba komunikaty. Próbowałem to jakoś połączyć w instrukcję warunkową ale to też nie działa. Mam 2 zapytania i każde coś innego zwraca.
To jest logiczne, bo powinienem zastosować prostą konstrukcję if...else jednakże w tym przypadku nie sprawdzi się to.

0

Byłby w stanie ktoś coś więcej podpowiedzieć?

0
Yutre napisał(a):

Mam 2 zapytania i każde coś innego zwraca.
To jest logiczne, bo powinienem zastosować prostą konstrukcję if...else jednakże w tym przypadku nie sprawdzi się to.

No właśnie. Sprawdź czy istnieją w bazie rekordy. Jeśli nie, to wtedy daj komunikat, jeśli tak, to wyświetl historię.
Nie wiem, co to u Ciebie jest to EmptyHistory, ja bym jednak zostawił tylko co poniżej.

$show_history = $db->prepare("SELECT `nick`, `data`, `operation`, `pay` FROM `sms-history` WHERE `nick` = 'Yutre' LIMIT 10")->fetchAll();
    if (!$show_history->execute()){
        print_r($show_history->errorInfo());
    }
else {
	
	if (count($show_history) > 0) {
		foreach($show_history as $data_history){
			echo'<span class="blue">'.$data_history['data'].'</span> » <span class="green">'.$data_history['operation'].'</span> » <span class="red">'.$data_history['pay'].' zł</span></br>';
		}
	}
	else {
	echo 'Nie posiadasz żadnej historii operacji konta!';
	}
}
 

Weź jednak pod uwagę, że dawno nic nie pisałem, więc mogę się mylić.

0

Niestety zamierzony efekt nie został osiągnięty. Nie wiem czy to dobrze robię ale **EmptyHistory ** służy mi do użycia:

if($data_empty_history['EmptyHistory'] != 'Yutre'){

Dalej nie wiem jak ten problem rozwiązać. Jakaś inna propozycja może?

1 użytkowników online, w tym zalogowanych: 0, gości: 1