Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dodanie trzech zmienny tekstowych
remontt
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 30.01.2013

Ostrzeżenie: (0%)
-----


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:
(IMG:http://s4.ifotos.pl/mini/wynik-skr_xswwwpr.JPG)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wiiir
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


moze distinct ?

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

Go to the top of the page
+Quote Post
remontt
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 30.01.2013

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował remontt 30.01.2013, 22:32:30
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







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
Go to the top of the page
+Quote Post
wiiir
post
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.09.2025 - 10:02