Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak dopisywać zmienną do zapytania w zależności od wyniku z bazy mysql., Tworzenie zapytania do bazy.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Witam, mam następujący problem i nie wiem jak sobie z nim poradzić, ale tworzyć tysiące pętli które by były możliwe to bezsens.

Sprawdzam sobie oraz wstawiam w pętlę IF wartość:

  1. if($row['numer1']=='1{
  2. $nr1 = "AND `numer`='numer1' ";
  3. }
  4.  
  5. if($row['numer2']=='1{
  6. $nr2 = "OR `numer`='numer2' ";
  7. }
  8.  
  9. if($row['numer3']=='1{
  10. $nr3 = "OR `numer`='numer3' ";
  11. }
  12.  
  13. if($row['numer4']=='1{
  14. $nr4 = "OR `numer`='numer4' ";
  15. }
  16.  
  17. if($row['numer5']=='1{
  18. $nr5 = "OR `numer`='numer5' ";
  19. }
  20.  
  21. if($row['numer6']=='1{
  22. $nr6 = "OR `numer`='numer6' ";
  23. }


Jak można się domyśleć sprawdzam czy $numer ma wartość w bazie "1" jeżeli ma tworzę zmienną "$nr"1-6, następnie tą zmienną wkładam do kolejnego zapytania:

  1. $sql = mysql_query("SELECT * FROM `test` WHERE `name` = '".$nazwa."' ".$nr1." ".$nr2." ".$nr3." ".$nr4." ".$nr5." ".$nr6." GROUP BY `nazwa` ORDER BY `nazwa` ASC");


Problem jest wtedy gdy istnieje "1" dla 2 albo 3 lub 4 zmiennych $nr.. Przecież nie będę tworzyć tyle ifów. Dlatego piszę tu na forum, czy istnieje jakieś rozwiązanie jak to zrobić ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
casperii
post
Post #2





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Nie ma sensu wstawiać wszystkich plików oraz całego kodu źródłowego. Oto najważniejsze
index.php

  1. if(zalogowany()){
  2.  
  3. $nazwa = $_SESSION['nazwa'];
  4. $sql="SELECT * FROM `users` WHERE `name` = '".$nazwa."' LIMIT 1";
  5. $res=mysql_query($sql);
  6. $row=mysql_fetch_array($res,MYSQL_ASSOC);
  7. $access=$row['access'];
  8.  
  9. if($access =='m'){
  10.  
  11. $where = '';
  12. for($i = 1; $i < 7; $i++)
  13. if($row['numer'.$i] == '1'){
  14. $where .= ' OR `numer` = "numer'.$i.'"';
  15. }
  16.  
  17.  
  18. }
  19. }


Po zalogowaniu się otrzymujemy w sesji nazwę (czyli login) , potem przypisujemy jakie uprawnienia ma dany login (nazwa) oraz do jakiego numeru należy. Jeżeli dana nazwa (login) ma uprawnienia "m" rozpoczynamy pętle for.

drugi plik php:

  1. if(isset($zmiennaZselect)){
  2. $szukam =' WHERE `nazwa` = "'.$zmiennaZselect.'"';
  3. }else{
  4. $szukam = ' WHERE `nazwa`!="" '.$where.' ';
  5.  
  6. }
  7.  
  8. $sql = "SELECT * FROM `test` $szukam ";
  9. $res = mysql_query($sql) or die(mysql_error());
  10. if(mysql_num_rows($res)>0){
  11. while($row = mysql_fetch_assoc($res)){
  12. echo ''.$row['nazwa'].'';
  13. }
  14. }


W drugim pliku mam select z którego wybieram nazwę , jeżeli nie wybiorę wyświetli mi wszystko co jest różne od pustego wiersza nazwa !=''
Jeżeli wybiorę jakąś nazwę z selecta tworzy się zapytanie nazwa = "'.$zmiennaZselect.'"' oraz do jakiego numeru należy, dlatego pierwszy z for powinno być AND numer1 a kolejny jeśli istnieje OR.
Czyli jeśli dana nazwa (login) przynależy do numer1="1" oraz numer="2" to powinno być nazwa="coś z selecta" AND numer1="1" OR numer2="1".
Jeżeli dana nazwa (login) przynależy tylko do np numer3="1" to powinno być tylko nazwa="coś z selecta" AND numer3="1"
Myślę że teraz jasno się wyraziłem o co mi chodzi :-)

Ten post edytował casperii 13.03.2015, 21:11:27
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 20:26