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

Porównanie wartości tablicy z bazą

0 głosów
289 wizyt
pytanie zadane 5 czerwca 2017 w PHP przez Alterwar Dyskutant (7,650 p.)

Witam.

Otóż chcę porównać wartość znajdującą się w polu select z wartością z bazy. Jeśli wartość z tablicy (wyciągnięta z bazy) istnieje to ma w tym miejscu nie wyświetlać wartości. Sposób działa jeśli przy sprawdzania podam index tablicy do porównania. Podejrzewam, że problem leży w pętli która wykonuję się określoną liczbę razy. Tablica ma np.3 wyniki więc wywala błędem.

W skrócie jeśli mam wartość w select "12:00 - 13:00" i ta sama wartość jest w bazie ma wyświetlić "rezerwacja". Jeśli ta wartość jest w selctcie to ma wyświetlić tą wartość. Działa ale tylko podczas podaniu indexu tablicy tj. arr[0], arr[1]

kod:

<select class="ajax-select" name="ajaxselect" id="ajax-select">
<?php 

		
		$start = 12;
		$end = 24;
		$counter = 1;
		$countArr = 0;
?>

<?php 
		foreach ($this->rezerwacje as $rezerwacja) 
		{
			$data = $rezerwacja->data;
			$godzina = $rezerwacja->godz;
			$arr[] = $godzina;
			
		}
		$uniqueArr = array_unique($arr);
				


		for($start; $start<= $end-1.5; $start+=1.5)
		{
				$counter ++;
				$str = str_replace(".5", ":30", $start);
				$rightHour = $start + 1.5;
				$replaceRightHour = str_replace(".5", ":30", $rightHour);
				$arr = array();

			?>
			<option value="">
			<?php

				if($counter%2 === 0)
				{
					if($uniqueArr[0] == $str.":00 - ".$replaceRightHour)
					{
						echo "rezerwacja";
					}else
					{
						echo $str.":00 - ".$replaceRightHour;
					}
					
				}
				else
				{
					if($uniqueArr[2] == $str." - ".$replaceRightHour.":00")
					{
						echo "rezerwacja";
					}else
					{
						echo $str." - ".$replaceRightHour.":00";
					}
					
				}
				$countArr ++;
				?>
			</option>
			<?php
		}
		

		

?>
</select>

Ma ktoś pomysł? Pętla for zawsze się wykona tą określoną liczbę razy, żeby wylistować godziny jeśli nie ma w bazie. Jeśli godzina jest w bazie, select ma tej określonej wartości nie wyświetlić.

1 odpowiedź

0 głosów
odpowiedź 5 czerwca 2017 przez CzikaCarry Szeryf (75,340 p.)
wybrane 5 czerwca 2017 przez Alterwar
 
Najlepsza

Odpowiedzią jest klauzula IN w MySQL (i ewentualna negacja poprzez klauzulę NOT), dzięki temu możesz porównać tablicę do danych z bazy już w czasie wykonywania zapytania.

komentarz 5 czerwca 2017 przez Alterwar Dyskutant (7,650 p.)
Dzięki, właśnie rozwiązałem problem ale innym sposobem. Wyciągam dane do dwóch tablic. Porównuję i wyświetlam tylko te które występują w jednej tablicy a w drugiej już nie.

Dzięki za szybką odpowiedź :) Zapewne Twój sposób mi się przyda na przyszłość :)
komentarz 5 czerwca 2017 przez CzikaCarry Szeryf (75,340 p.)
Spoko :) moim sposobem też byś to zrobił tylko nie musiałbyś nic porównywać, bo od razu z bazy wyjęłyny Ci się tylko te dane, które Cię interesują :)
komentarz 5 czerwca 2017 przez Alterwar Dyskutant (7,650 p.)
W następnym projekcie na pewno spróbuję Twojego sposobu :) dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 482 wizyt
pytanie zadane 28 sierpnia 2021 w PHP przez pvalue Dyskutant (8,820 p.)
0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 28 listopada 2019 w PHP przez gree Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 229 wizyt

93,743 zapytań

142,682 odpowiedzi

323,299 komentarzy

63,330 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...