Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodanie trzech zmienny tekstowych
Forum PHP.pl > Forum > Przedszkole
remontt
Witam wszystkich.
Na wstępie dodam że szukałem odpowiedzi/podpowiedzi na mój problem w google ale nic z tego. Albo za banalny problem albo źle frmułuję zapytanie.
Robie sobie prostą aplikacje serwisu filmowego i mam taki problem. Chcę dodać trzy zmienne w których siędzą tytuly filmów. Zawrtość tych zmiennych jest pobierana z bazy danych (taka zmienna ma chyba pstać tablicy jednowymiarowej jeśli się nie mylę). Wszystko fajnie zmienne z tytułąmi filmów są dodawane ale chciałbym wykluczyć w nich dublowanie się nazw filmów. Dla przykładu:
ZmiennaX zawiera filmy Jaś Fasola, Faceci w czerni, Informator, Terminator a zmiennaY zawiera Kil BIl, Ojciec Chrzestny, Informator, Zielona mila.
W zmiennej wynikowej chciałbym otrzymać wszytkie tytuły zmiennejX i zmiennejY ale bez powtarzania dwa razy pozycji 'Informator'.
Oto część kodu:
  1. //******WYDOBYCIE TYTULOW FILOW AKTORA 3****************
  2.  
  3. $zapytunek5 = "SELECT tytul FROM filmy WHERE $ak3 = $aktorek3 ORDER BY Ocena_filmu DESC";
  4. $rez5 = mysql_query($zapytunek5)
  5.  
  6. while ($tab5 = mysql_fetch_array($rez5))
  7. {
  8. $tytul3[] = $tab5['tytul'];
  9. }
  10.  
  11. $zmienna_tab4='';
  12. $f=0;
  13.  
  14. while ($f<sizeof($tytul3))
  15. {
  16. $zmienna_tab4.=$tytul3[$f];
  17. $zmienna_tab4.= SPACJA;
  18. $f++;
  19. }
  20.  
  21. echo "<b>Tytuły od aktora 1 filmów to:</b> $zmienna_tab2";
  22. echo "<br>";
  23. echo "<b>Tytuły od aktora 2 filmów to:</b> $zmienna_tab3";
  24. echo "<br>";
  25. echo "<b>Tytuły od aktora 3 filmów to:</b>$zmienna_tab4";
  26. echo "<br>";
  27.  
  28.  
  29. $tytuly='';
  30. $tytuly.=$zmienna_tab2;
  31. $tytuly.=$zmienna_tab3;
  32. $tytuly.=$zmienna_tab4;
  33.  
  34. echo "Liczba filmow od aktora 1: ";
  35. echo sizeof($tytul);
  36. echo "<br>";
  37. echo "Liczba filmow od aktora 2: ";
  38. echo sizeof($tytul2);
  39. echo "<br>";
  40. echo "Liczba filmow od aktora 3: ";
  41. echo sizeof($tytul3);
  42. echo "<br>";
  43.  
  44. echo "W sumie: ";
  45. $liczba_filmow = sizeof($tytul)+sizeof($tytul2)+sizeof($tytul3);
  46. echo $liczba_filmow;
  47.  
  48.  
  49. echo "<br>";
  50. echo "PROPOZYCJE FILMOWE: ";
  51. echo "$tytuly";



Poniżej efekt działania kodu w przeglądarce:


wiiir
moze distinct ?

  1. SELECT DISTINCT tytul FROM filmy WHERE $ak3 = $aktorek3 ORDER BY Ocena_filmu DESC

remontt
Za pomoca SELECT DISTINCT tytul FROM filmy WHERE $ak3 = $aktorek3 ORDER BY Ocena_filmu DESC nie moge bo takich zapytań do bazy mam 3 a wartości o które pytam w SELECTcie są generowane losowo więc może się zdażyć że 2 albo 3 pytania beda dawały w wyniku te same rekordy. Chodzi mi o to aby likwidacja powtórzeń odbywała się w momęcie gdy wyniki z zapytań są już załadowane do zmiennej i mają zostać wyświetlone. Myśle żeby z tej finalnej zmiennej zrobić tablice dwuwymiarową i wpakować ją w specjalnie do tego celu przeznaczoną tabelke w bazie danych. Ale wydaje mi się że to zbytecznie obciążanie serwera mysql tworząc kolejne zapytania. Może da się to jakoś prosciej, może istenieje jakaś funkcja php która pszeszukuje łąńcuchy tekstowe w zmiennej i likwiduje redundacje questionmark.gif
Gość
O ile dobrze zrozumiałem prawdopodobnie wystarczy zastosować in_array, ale mogą się zdarzyć różne filmy o takich samych tytułach, nie wiem czy chcesz je wyświetlać czy nie. Inny sposób, to zmienić sposób przechowywania danych w tablicy wynikowej, jako indeks zastosować identyfikator filmu o ile masz identyfikatory filmów, wtedy można zastosować isset
wiiir
Cytat(remontt @ 30.01.2013, 20:53:18 ) *
Za pomoca SELECT DISTINCT tytul FROM filmy WHERE $ak3 = $aktorek3 ORDER BY Ocena_filmu DESC nie moge bo takich zapytań do bazy mam 3 a wartości o które pytam w SELECTcie są generowane losowo więc może się zdażyć że 2 albo 3 pytania beda dawały w wyniku te same rekordy. Chodzi mi o to aby likwidacja powtórzeń odbywała się w momęcie gdy wyniki z zapytań są już załadowane do zmiennej i mają zostać wyświetlone. Myśle żeby z tej finalnej zmiennej zrobić tablice dwuwymiarową i wpakować ją w specjalnie do tego celu przeznaczoną tabelke w bazie danych. Ale wydaje mi się że to zbytecznie obciążanie serwera mysql tworząc kolejne zapytania. Może da się to jakoś prosciej, może istenieje jakaś funkcja php która pszeszukuje łąńcuchy tekstowe w zmiennej i likwiduje redundacje questionmark.gif


Coś mi się wydaję ze chyba słabo masz baze zaprojektowaną albo słabo kombinujesz z aplikacją

poza tym dalej mozesz zrobic distinct

3 zapytania?

  1. SELECT DISTINCT tytul FROM (
  2. SELECT..
  3. UNION ALL
  4. SELECT ..
  5. UNION ALL
  6. SELECT..
  7. )


I nie przenoś takiego ciężaru obróki na php

Wyobraź sobie ze masz 200 000 rekordów w wyniku a w tym 10 unikalnych tytułów albo moze i 199 999 uników.. no czysty strzał w stopę bo i tak przeglądasz wszystko i marnujesz serwer.
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.