Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Łaczenie dwóch UPDATE z innymi warunkami
Forum PHP.pl > Forum > Przedszkole
boro11
Witam!
Mam takie o to dwa zapytania:

  1. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "member='Diamond',buyprem='".$expire."'",5 => "WHERE",6 => "nick='$nick' LIMIT 1");
  2. $zap =array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "advice='$nick'",5 => "WHERE",6 => "advice='' LIMIT 10");


Zapytania wykonują się po kliknięciu buttona.
Wykonuje się niestety tylko jedno (drugie), da radę je jakoś połączyć?
lobopol
Logiczne, że drugie się wykonuje skoro nadpisujesz zmienną.
W drugim zapytaniu zmień nazwę zmiennej na $zap2 i dodaj wykonanie tego zapytania w adekwatny sposób jak $zap
boro11
i tu jest własnie problem - próbowałem tak zrobić, ale to wywoływanie jest includowane z innego pliku innego prawdopodobnie. Skrypt, który przerabiam pisał inny programista i czasami mam problemy z ogarnięciem jak on to wszystko zaplanował.


W tym pliku jest tylko to:

  1. $db->zap($zap);


Oczywiście próbowałem dopisać:

  1. $db->zap($zap2);


i zmienić nazwę tak jak zasugerowałes

ale wywala błąd:

Kod
Zapytanie by�o puste


Nie jestem pewien, ale do wywołania jest chyba użyty ten kod:


  1. <?php
  2.  
  3. /**
  4.  * @author matx132
  5.  * @copyright 2009
  6.  */
  7. if (!defined('refbackbank') || !refbackbank) {
  8. header('HTTP/1.1 301 Moved Permanently');
  9. header('Location: '.$url);
  10. }
  11.  
  12. class DB
  13. {
  14. public $host;
  15. public $dbl;
  16. public $dbh;
  17. public $dbb;
  18. public $pref;
  19. public $wynik;
  20.  
  21. function conect()
  22. {
  23.  
  24. @mysql_pconnect($this->host,$this->dbl,$this->dbh) or die("Nieoczekiwany error ".mysql_error());
  25. @mysql_select_db($this->dbb) or die("Nieoczekiwany error ".mysql_error());
  26. }
  27. function zap($zap)
  28. {
  29. $sql=$zap['1'].' '.$zap['2'].' '.$zap['3'].' '.$zap['4'].' '.$zap['5'].' '.$zap['6'].' '.$zap['7'];
  30. $wynik=mysql_query($sql) or die(mysql_error());
  31. return $wynik;
  32. }
  33.  
  34. function close()
  35. {
  36. }
  37. }
  38.  
  39.  
  40. ?>




Logicznym byłoby dopisanie:

  1. function zap($zap2)
  2. {
  3. $sql=$zap2['1'].' '.$zap2['2'].' '.$zap2['3'].' '.$zap2['4'].' '.$zap2['5'].' '.$zap2['6'].' '.$zap2['7'];
  4. $wynik=mysql_query($sql) or die(mysql_error());
  5. return $wynik;
  6. }



ale nie wiem co taki kod zrobi, a strona działa i wypadałoby żeby nic się w niej nie przestawiło
lobopol
Coś kręcisz albo nie pokazałeś całości, to $db->zap($zap2); w jakimś ifie czy czym jest pokaż. Dodanie takiej funkcji jak napisałeś jest zbędne
boro11
Całość kodu:

  1. if($submit=='Paid')
  2. {
  3. $zap=array(1 => 'DELETE',2 => 'FROM',3 => $pref.'buyprem',4 => 'WHERE',5 => "id = '$id' LIMIT 1");
  4. $db->zap($zap);
  5.  
  6. if($prem=="Diamond - 15$")
  7. {
  8. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "member='Diamond',buyprem='".$expire."'",5 => "WHERE",6 => "nick='$nick' LIMIT 1");
  9. $zap =array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "advice='$nick'",5 => "WHERE",6 => "advice='' LIMIT 10");
  10. }
  11.  
  12. elseif($prem=="Emerald - 5$")
  13. {
  14. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "member='Emerald',buyprem='".$expire."'",5 => "WHERE",6 => "nick='$nick' LIMIT 1");
  15. $zap = array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "advice='$nick'",5 => "WHERE",6 => "advice='' LIMIT 3");
  16. }
  17.  
  18. elseif($prem=="Sapphire - 8$")
  19. {
  20. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "member='Sapphire',buyprem='".$expire."'",5 => "WHERE",6 => "nick='$nick' LIMIT 1");
  21. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "advice='$nick'",5 => "WHERE",6 => "advice='' LIMIT 5");
  22. }
  23.  
  24. elseif($prem=="Platinum - 25$")
  25. {
  26. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "member='Platinum',buyprem='".$expire."'",5 => "WHERE",6 => "nick='$nick' LIMIT 1");
  27. $zap=array(1 => 'UPDATE',2 => $pref.'users',3 => 'SET',4 => "advice='$nick'",5 => "WHERE",6 => "advice='' LIMIT 15");
  28. }
  29.  
  30. if($db->zap($zap))
  31. echo "<div class='valid_box'>User $nick is succesfully upgraded to $prem</div>";
  32. else
  33. echo "<div class='invalid_box'>Fail? Please try again.</div>".mysql_error();
  34. }
  35.  
  36. if($submit=='Cancle')
  37. {
  38. $zap=array(1 => 'DELETE',2 => 'FROM',3 => $pref.'buyprem',4 => 'WHERE',5 => "id = '$id' LIMIT 1");
  39. if($db->zap($zap))
  40. echo "<div class='valid_box'>Premium order is succesfully removed.</div";
  41. else
  42. echo "<div class='invalid_box'>Fail? Please try again.</div>".mysql_error();
  43. }
lobopol
1. W każdym ifie drugie zap na zap2
2. Dodaj sobie gdzieś $db->zap($zap2); np.
  1. if($db->zap($zap) && $db->zap($zap2))

3. W samej tej "klasie" w metodzie zap daj
  1. $sql=$zap['1'].' '.$zap['2'].' '.$zap['3'].' '.$zap['4'].' '.$zap['5'].' '.$zap['6'].' '.$zap['7'];
  2. echo $sql.'<br/>';

i wykonaj te zapytania np. w phpmyadminie i zobacz czy nie ma błędów
boro11
Dziękuje działa smile.gif

Mam jeszcze pytanie odnośnie ostatniego pkt.

  1. echo $sql.'<br/>';


zastępuje:

  1. $wynik=mysql_query($sql) or die(mysql_error());
  2. return $wynik;


questionmark.gif
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.