Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wpisywanie zmiennych do funkcji w klasie
Forum PHP.pl > Forum > PHP
Mackos
Witajcie!
Mam dość skomplikowany problem, który postaram się możliwie jasno naświetlić.
Otóż mam skrypt z zamówieniami, do którego dorzuciłem jeszcze jedną modyfikację opartą na klasach.
I aktualnie chciałbym do jednej funkcji w klasie wpisywać dane z bazy danych które oczywiście będą zależne od id głównego.
Skrypt wywołujący wygląda mniej więcej tak:
  1. $approve = $_POST['approve'];
  2. $ShipmentDigest = $_POST['ShipmentDigest'];
  3.  
  4. // If the form is filled out go get a rate from
  5. if ($accessNumber != '' && $username != '' && $password != '') {
  6. $Connect = new ("$accessNumber","$username","$password");
  7. $Connect->setTemplatePath('xml/');
  8. $Connect->setTestingMode(1); // Change this to 0 for production
  9.  
  10. $Ship = new Ship($Connect);
  11.  
  12. ?>
  13.  
  14. <?php
  15. if ($approve == 'approve shipment') {
  16. echo $Ship->buildShipmentAcceptXML($ShipmentDigest);
  17. // echo $Ship->responseXML;
  18. $responseArray = $Ship->responseArray();
  19. $htmlImage = $responseArray['ShipmentAcceptResponse']['ShipmentResults']['PackageResults']['LabelImage']['GraphicImage']['VALUE'];
  20. echo '<img src="data:image/gif;base64,'. $htmlImage. '"/>';
  21. } else {
  22. echo '<pre>'; print_r($Ship->buildRequestXML()); echo '</pre>';
  23. $responseArray = $Ship->responseArray();
  24. }
  25. ?>
  26.  
  27. <form action="" method="POST">
  28. <input type="submit" name="approve" value="approve shipment" />
  29. <input type="hidden" name="accessNumber" value="<?php echo $accessNumber; ?>" />
  30. <input type="hidden" name="username" value="<?php echo $username; ?>" />
  31. <input type="hidden" name="password" value="<?php echo $password; ?>" />
  32. <input type="hidden" name="ShipmentDigest" value="<?php echo $responseArray['ShipmentConfirmResponse']['ShipmentDigest']['VALUE']; ?>" />
  33. </form>
  34.  
  35. <?php } ?>


A Klasa Ship.php wygląda tak:
  1. <?php
  2.  
  3. class Ship {
  4. var $buildRequestXML;
  5. var $xmlSent;
  6. var $responseXML;
  7. var $ShipmentDigest;
  8.  
  9. function Ship($Obj) {
  10. // Must pass the object to this class for it to work
  11. $this-> = $Obj;
  12. }
  13.  
  14. function buildRequestXML($zmienna) {
  15. $xml = $this->->access();
  16. $ShipmentConfirmRequestXML = new xmlBuilder();
  17. $ShipmentConfirmRequestXML->push('ShipmentConfirmRequest');
  18. $ShipmentConfirmRequestXML->push('Request');
  19. $ShipmentConfirmRequestXML->push('TransactionReference');
  20. $ShipmentConfirmRequestXML->element('CustomerContext', '-php');
  21. $ShipmentConfirmRequestXML->element('XpciVersion', '1.0001');
  22. $ShipmentConfirmRequestXML->pop();
  23. $ShipmentConfirmRequestXML->element('RequestAction', 'ShipConfirm');
  24. $ShipmentConfirmRequestXML->element('RequestOption', 'nonvalidate');
  25. $ShipmentConfirmRequestXML->pop(); // end Request
  26. $ShipmentConfirmRequestXML->push('Shipment');
  27. $ShipmentConfirmRequestXML->push('Shipper');
  28. $ShipmentConfirmRequestXML->element('Name', 'wartosc');
  29. $ShipmentConfirmRequestXML->element('AttentionName', 'wartosc');
  30. $ShipmentConfirmRequestXML->element('ShipperNumber', 'W9V457');
  31. $ShipmentConfirmRequestXML->push('Address');
  32. $ShipmentConfirmRequestXML->element('AddressLine1', 'wartosc');
  33. $ShipmentConfirmRequestXML->element('City', 'wartosc');
  34. $ShipmentConfirmRequestXML->element('StateProvinceCode', '');
  35. $ShipmentConfirmRequestXML->element('PostalCode', '31444');
  36. $ShipmentConfirmRequestXML->element('CountryCode', 'PL');
  37.  
  38. itd.



I teraz chodzi mi o to żeby stworzyć zapytanie które w takie miejsca jak np.
$ShipmentConfirmRequestXML->element('AddressLine1', 'wartosc');
wpisywało zamiast 'wartość' moją zmienną z bazy danych.

Kombinowałem już żeby poprzez wpisanie więcej zmiennych w
function buildRequestXML($zmienna) i wyświetlanie ich z tamtąd, ale niestety nie działa (przy jednej zmiennej działa przy wielu nie)

Więc alternatywnie zrobiłem tak:
function buildRequestXML($zmienna) {
$rs_settings=mysql_query("SELECT * FROM zamowienia WHERE zamowienie='$zmienna'");
while($rs = mysql_fetch_array($rs_settings)) {
$adres=$rs['adres'];
}
i próbowałem władować te wartości ale również nic z tego.

Tak więc prosiłbym o pomoc smile.gif
CuteOne
Do klasy, możesz władować tyle danych ile chcesz.. tym bardziej do każdej metody, możesz władować tyle danych ile chcesz smile.gif

1. Zastosuj mutatory ( popularnie zwane setterami )
2. buildRequestXML($zmienna)... $zmienna, może być tablicą smile.gif

Ad1.
  1. $zmienna = array('ship','no_ship');
  2. $Ship = new Ship();
  3. $Ship -> setZmienna($zmienna);
  4. echo '<pre>'; print_r($Ship->buildRequestXML()); echo '</pre>';
  5.  
  6. class Ship {
  7.  
  8. public function setZmienna($zmienna) {
  9. $this->zmienna = $zmienna;
  10. }
  11.  
  12. public function buildRequestXML() {
  13.  
  14. if(!empty($this->zmienna)) { return $this->zmienna; } else { return array(); } //!empty nie sprawdza czy obiekt jest tablicą! jedynie czy jest pusty ;)
  15. }


Ad2.
  1. $zmienna = array('ship','no_ship');
  2. echo '<pre>'; print_r($Ship->buildRequestXML($zmienna)); echo '</pre>';
  3.  
  4. class Ship {
  5. function buildRequestXML($zmienna) {
  6. if(!empty($zmienna)) { return $zmienna; } else { return array(); } //!empty nie sprawdza czy zmienna jest tablicą! jedynie czy jest pusta ;)
  7. }
  8. }
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.