Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> if else - wybierz table do której wstawić dane
pela222
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


Cześć,

Do pliku fetchleads.php przekazuję wartość $subsidary = $_POST['subsidary']; równą "wex" lub "dub". Zmienna pozwala pobrać dane z CRM dla odowiedniego użytkownika:
  1. /* user related parameter */
  2. if ($subsidary == 'wex') {
  3. define("AUTHTOKEN", "mojtoken");
  4. }
  5. elseif ($subsidary == 'dub') {
  6. define("AUTHTOKEN", "mojtoken1");
  7. }

wybór działa i dane są pobierane odpowiednio i wstawiane do tabeli "rightone_crm.leads"

Teraz potrzebuję wstawić dane do tabeli mysql. Caly kod działa prawidłowo, jednak potrzebuje zdefiniować, aby dane dla "wex" były wstawione do tabeli rightone_crm.leads natomiast dane dla "dub" to tabeli rightone_crm.leadsltd.
  1. if ($subsidary == 'wex') {
  2. $query = "replace into rightone_crm.leads (id, firstname, lastname) value ";
  3. }
  4. elseif ($subsidary == 'dub') {
  5. $query = "replace into rightone_crm.leadsltd (id, firstname, lastname) value ";
  6. }

No i tutaj już jest problem bo to nie działą. Proszę o podpowiedz dlaczego?
PS.
Próbowałem zastosować if else dla całego kodu (od miejsca łączenia z moim CRM aż do momentu wstawiania danych do tabeli mysql i też klops).

Ten post edytował pela222 21.08.2014, 11:29:01
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Doczekam kiedys czasow, ze nie bedzie nic nie mowiacego "nie dziala" tylko normalny opis co sie dzieje źle?

Co ci nie dziala? Ciagle ci wchodzi w IF? Ciagle ci wchodzi w ELSE? A moze jeszcze cos innego?
Jesli ciagle ci wchodzi w IF lub w ELSE, znaczy ze masz tam złe wartosci. Sprawdz.

ps: problem nie ma zadnego związku z mysql. Przenosze
Go to the top of the page
+Quote Post
pela222
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


w oknie przegladarki mam:
dla subsidary = wex
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''624745000000780017','Adrian','Adryjanek','1989-09-12','Carey Glass','Glass Work' at line 1

dla subsidary = dub
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1224189000000180007','Ewa Anna','Gwizdon','1961-10-17','St. Gabriels Nursing Ho' at line 1

no wiec jak mam napisane "SQL syntax" to myślę sobie że to ma coś do czynienia z MySQL. :-) ale z racji na znikomą wiedzę pozostaje mi się z tobą zgodzić.
Czy ten komunikat rzuca nowe światło na problem?

Ps. Wyświetlone danę to pierwszy wiersz (najnowszy rekord w CRM leads - odpowiedno dla wex i dub).


Ps2. Czy ciągle mi chwodzi w if? ciągle mi wchodzi w else? jak to sprawdzić?
To jest różnica miedzy tobą a mną. Ale jak bym wiedział co i jak sprawdzić to bym nie pytał :-) Dzięki za wyrozumiałość.

Ten post edytował pela222 21.08.2014, 11:59:07
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tak, teraz to ma związek z mysql.... Ale z twojego pierwszego opisu wynikalo, ze masz problem z IF, a to juz z mysql nie mialo zadnego związku... Ciezko od razu napisac jakie się ma bledy? Naprawde trzeba o to zawsze pytac kazdego z osobna?

Pokaz jak wygląda cale wygenerowane zapytanie, bo tam gdzies jest blad. Pamietaj, ze wartosci nalezy brac w () czyli
...value (wart1, wart2)
a nie
...value wart1, wart2
Go to the top of the page
+Quote Post
pela222
post
Post #5





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


No to może zapodam cały kod. Nie chciałem wcześniej bo myślałem że monogość kodu (który w większości nie ma związsku z moim problem) odstraszy potencjalnych chętnych do pomocy :-)
  1. <?php
  2. $subsidary = $_POST['subsidary'];
  3. /* NOTE: Define your mysql database parameters in moduleDependant class */
  4.  
  5. /* Constant Declarations */
  6. define("TARGETURL", "https://crm.zoho.com/crm/private/xml/Leads/getRecords");
  7.  
  8. /* user related parameter */
  9. if ($subsidary == 'wex') {
  10. define("AUTHTOKEN", "token1");
  11. }
  12. elseif ($subsidary == 'dub') {
  13. define("AUTHTOKEN", "token2");
  14. }
  15.  
  16. define("SCOPE", "crmapi");
  17.  
  18. /* create a object */
  19. $utilObj = new Utilities();
  20.  
  21.  
  22. /* set parameters */
  23. $parameter = "";
  24. $parameter = $utilObj->setParameter("scope", SCOPE, $parameter);
  25. $parameter = $utilObj->setParameter("authtoken", AUTHTOKEN, $parameter);
  26. $parameter = $utilObj->setParameter("selectColumns", "Leads(LEADID,First Name,Last Name)", $parameter);
  27.  
  28. /* Call API */
  29. $response = $utilObj->sendCurlRequest(TARGETURL, $parameter);
  30.  
  31. $utilObj->parseXMLandInsertInDB($response);
  32.  
  33. class Utilities {
  34.  
  35. public function setParameter($key, $value, $parameter) {
  36. if ($parameter === "" || strlen($parameter) == 0) {
  37. $parameter = $key . '=' . $value;
  38. } else {
  39. $parameter .= '&' . $key . '=' . $value;
  40. }
  41. return $parameter;
  42. }
  43.  
  44. public function parseXMLandInsertInDB($xmldata) {
  45. $xmlString = <<<XML
  46. $xmldata
  47. XML;
  48. $xml = simplexml_load_string($xmlString);
  49. if (isset($xml->result)) {
  50. $modeuleDependantObj = new moduleDependant();
  51. $output = $modeuleDependantObj->insertInDB($xml);
  52. } else if (isset($xml->error)) {
  53. echo "Error code: " . $xml->error->code . "<br/>";
  54. echo "Error message: " . $xml->error->message;
  55. }
  56. }
  57.  
  58. public function sendCurlRequest($url, $parameter) {
  59. try {
  60. /* initialize curl handle */
  61. $ch = curl_init();
  62. /* set url to send post request */
  63. curl_setopt($ch, CURLOPT_URL, $url);
  64. /* allow redirects */
  65. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  66. /* return a response into a variable */
  67. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  68. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);// Turn off the server and peer verification
  69. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  70. /* times out after 30s */
  71. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  72. /* set POST method */
  73. curl_setopt($ch, CURLOPT_POST, 1);
  74. /* add POST fields parameters */
  75. curl_setopt($ch, CURLOPT_POSTFIELDS, $parameter);
  76. /* execute the cURL */
  77. $result = curl_exec($ch);
  78. curl_close($ch);
  79. return $result;
  80. } catch (Exception $exception) {
  81. echo 'Exception Message: ' . $exception->getMessage() . '<br/>';
  82. echo 'Exception Trace: ' . $exception->getTraceAsString();
  83. }
  84. }
  85. }
  86. class moduleDependant {
  87. /* Define your mysql database parameters */
  88.  
  89. private $host = "localhost";
  90. private $username = "joomla";
  91. private $password = "joomla";
  92.  
  93. public function insertInDB($xml) {
  94. $numberOfRecords = count($xml->result->Leads->row);
  95. /* $records[row value][field value] */
  96. $records[][] = array();
  97. for ($i = 0; $i < $numberOfRecords; $i++) {
  98. $numberOfValues = count($xml->result->Leads->row[$i]->FL);
  99. for ($j = 0; $j < $numberOfValues; $j++) {
  100. switch ((string) $xml->result->Leads->row[$i]->FL[$j]['val']) {
  101. /* Get attributes as element indices */
  102. case 'LEADID':
  103. $records[$i]['LEADID'] = (string) $xml->result->Leads->row[$i]->FL[$j];
  104. break;
  105. case 'First Name':
  106. $records[$i]['First Name'] = (string) $xml->result->Leads->row[$i]->FL[$j];
  107. break;
  108. case 'Last Name':
  109. $records[$i]['Last Name'] = (string) $xml->result->Leads->row[$i]->FL[$j];
  110. break;
  111. }
  112. }
  113. }
  114.  
  115. /* Inserting in database */
  116. $connection = mysql_connect($this->host, $this->username, $this->password) or die(mysql_error());
  117. if ($subsidary == 'wex') {
  118. $query = "replace into rightone_crm.leads (id, firstname, lastname) value ";
  119. }
  120. elseif ($subsidary == 'dub') {
  121. $query = "replace into rightone_crm.leadsltd (id, firstname, lastname) value ";
  122. }
  123. for ($k = 0; $k < count($records); $k++) {
  124. if ($k == 0) {
  125. $query .= "('" . $records[$k]['LEADID'] . "','" . $records[$k]['First Name'] . "','" . mysql_real_escape_string($records[$k]['Last Name']) . "')";
  126. }
  127. if ($k > 0) {
  128. $query .= ", ('" . $records[$k]['LEADID'] . "','" . $records[$k]['First Name'] . "','" . mysql_real_escape_string($records[$k]['Last Name']) . "')";
  129. }
  130. }
  131. $result = mysql_query($query, $connection) or die(mysql_error());
  132. if (isset($result) && mysql_affected_rows($connection) == count($records)) {
  133. echo "Data's are inserted in database successfully.<br/><br/> ";
  134.  
  135. /* Table structure of inserted data, you can check inserted data by uncommenting a below section */
  136. /*
  137.   $insertedTable = "<table cellspacing=0 cellpadding='4px' border=1>";
  138.   $insertedTable .= "<tr><td>Lead ID</td><td>First Name</td><td>Last Name</td><td>Company</td></tr>";
  139.   for ($k = 0; $k < count($records); $k++) {
  140.   $insertedTable .= "<tr><td>" . $records[$k]['LEADID'] . "</td><td>" . $records[$k]['First Name'] . "</td><td>" . $records[$k]['Last Name'] . "</td><td>" . $records[$k]['Company'] . "</td></tr>";
  141.   }
  142.   $insertedTable .= "</table>";
  143.   echo $insertedTable;
  144.   */
  145. } else {
  146. echo 'Some error while inserting in database';
  147. }
  148. }
  149.  
  150. }
  151. ?>


Ten post edytował pela222 21.08.2014, 12:21:10
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jedyne co odstrasza to zle opisywanie problemu (IMG:style_emoticons/default/tongue.gif)

skoro dodajesz kilka wartosci, to powinno byc moze VALUES a nie VALUE. Jesli to nie pomoze, to proszę po raz kolejny o pokazanie jak wyglada wygenerowane zapytanie....

nie: $result = mysql_query($query, $connection) or die(mysql_error());
a: $result = mysql_query($query, $connection) or die('Zapytanie wyglada tak: '.$query.' A tak wyglada blad:'.mysql_error());
Go to the top of the page
+Quote Post
pela222
post
Post #7





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


Co do VALUE vs VALUES rozumiem że tutaj:
  1. $query = "replace into rightone_crm.leads (id, firstname, lastname, dob, company, occupation, income, spousename, spouselastname, spousedob, spousecompany, spouseoccupation, spouseincome, street, area, city, state, child1name, child1dob, child2name, child2dob, child3name, child3dob, child4name, child4dob) values ";

zmiana nic nie daje. Taka sama odpowiedź, czyli wyświetla teraz wszystkie rekordy odczytane z CRM a błąd ten sam.
  1. Zapytanie wyglada tak: ('1224189000000180007','Ewa Anna','Gwizdon','1961-10-17','St. Gabriels Nursing Home','Chef','','Maciej Jan','Pawlowski','1970-01-14','Onsite Refeuling','HGV Driver','32400','11 Ballyhoy Avenue','','Raheny, Dublin 5','Dublin','Kacper Pawlowski','1995-02-04','Krystian Pawlowski','2000-07-30','','','',''), ('1224189000000174021','Izabella','Imołczyk','','','','0','','','','','','0','16 Devlin Street','Fermoy','Fermoy','Co.Cork','','','','','','','',''), ('1224189000000174011','Dorota','Malec','1983-03-17','','','','','','1983-01-11','','','','','','Letterkenny','Co. Donegal','Tomek?','2007-02-03','','','','','',''), ('1224189000000174007','Adam','Wickowski','1978-12-24','','','','','','','','','','','','Galway','Co. Galway','','','','','','','',''), ('1224189000000165001','Mariusz','Mariusz','1979-05-07','','Cleaner In Meat Factory','','Partnerka','','','','','','','','','Co. Leitrim','','','','','','','',''), ('1224189000000162093','Krystian','Aleksander','1979-10-18','Burke Shipping Group','HMV Driver','36400','','','','','','','30 Kilmore Avenue','Coolock','Dublin 17','Co.Dublin 17','','','','','','','',''), ('1224189000000158027','Ernest','Luft','','','Welder','','','','','','','','56 Riverwalk','','Dublin','','','','','','','','',''), ('1224189000000157070','AA','Testowy','','','','0','','','','','','0','','','','','','','','','','','',''), ('1224189000000148001','Justyna','Dybas','','','','','','','','','','','','','Dublin','Co.Dublin','','','','','','','',''), ('1224189000000144281','Krzysztof','Reczek','','TKCCC','Garage Owner','0','Agnieszka','','','','','0','51 Burnell Green','Northern Cross','Dublin 17','Dublin','','','','','','','','') A tak wyglada blad:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1224189000000180007','Ewa Anna','Gwizdon','1961-10-17','St. Gabriels Nursing Ho' at line 1


Dodam to co już pisałem. Jak usunę warunek if else tutaj:
  1. /* Inserting in database */
  2. $connection = mysql_connect($this->host, $this->username, $this->password) or die(mysql_error());
  3. $query = "replace into rightone_crm.leads (id, firstname, lastname, dob, company, occupation, income, spousename, spouselastname, spousedob, spousecompany, spouseoccupation, spouseincome, street, area, city, state, child1name, child1dob, child2name, child2dob, child3name, child3dob, child4name, child4dob) value ";

to kod działa prawidłowo i wstawia wszystkie dane (dla token1 i token2) do bazy rightone_crm.leads. Problem, że tak nie ma być :-(

Ten post edytował pela222 21.08.2014, 12:45:12
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Z tego wynika, ze ci nie wszedl ani w IF ani w ELSEIF, wiec to jest blad w PHP (IMG:style_emoticons/default/wink.gif)
Mowilem, bys sprawdzil. Zrobienie var_dump naprawde nie jest jakims tam wyczynem


  1. echo 'To zawiera zmienna:';
  2. var_dump($subsidary);
  3. if ($subsidary == 'wex') {
  4.  
  5. $query = "replace into rightone_crm.leads (id, firstname, lastname) value ";
  6.  
  7. }
  8.  
  9. elseif ($subsidary == 'dub') {
  10.  
  11. $query = "replace into rightone_crm.leadsltd (id, firstname, lastname) value ";
  12.  
  13. }

Pokaz co zwraca
Go to the top of the page
+Quote Post
Turson
post
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie zauważyłeś, że twoje zapytanie jest niekompletne? Pewnie nadpisujesz sobie zmienną
Go to the top of the page
+Quote Post
pela222
post
Post #10





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


To zawiera zmienna:NULL

Czyli jak zrobić żeby zmienna się nie nadpisywała?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tam sie nic nie nadpisuje. POprostu twoja zmienna $subsidary nie istnieje. Moze chodzi o zasieg zmiennych. Nie wiem skad ją masz

Ba, nawet nie moze, a napewno chodzi o zasieg zmiennych.... musisz te zmienna $subsidary przekazac w parametrze funkcji lub uzyc GLOBAL. Inaczej ona w funkcji nie jest widoczna
Go to the top of the page
+Quote Post
pela222
post
Post #12





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


No i widzicie jak to jest z amatorami programistami.
Dzięki za pomoc. Teraz wiem gdzie jest problem. Poszukam jak zapodać zmienną do funkcji lub golbal i dam znać czy udało mi się zrobić.

Dzięki.
Ps.
Przy okazji nauczyłem się:
Jak i poco stosować var_dump :-)
podstawy odnośnie zmiennych i ich zasięgu :-)

Pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Temat: Jak poprawnie zada pytanie
Tu jest temat z bardzo cennymi wskazowkami.
Jedną z nich jest tez wyswietlanie bledow, czego ty nie robisz. Jakbys robil, to na ekranie juz dawno bys mial info, ze uzywasz zmiennej ktorej nie ma.
Go to the top of the page
+Quote Post
pela222
post
Post #14





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


Super dzięki za pomoc :-)

zmieniłem plik na:
  1. /* user related parameter */
  2. if ($_POST['subsidary'] == 'wex') {
  3. define("AUTHTOKEN", "token1");
  4. }
  5. elseif ($_POST['subsidary'] == 'dub') {
  6. define("AUTHTOKEN", "token2");
  7. }

oraz niżej na:
  1. if ($_POST['subsidary'] == 'wex') {
  2. $query = "replace into rightone_crm.leads (id, firstname, lastname, dob, company, occupation, income, spousename, spouselastname, spousedob, spousecompany, spouseoccupation, spouseincome, street, area, city, state, child1name, child1dob, child2name, child2dob, child3name, child3dob, child4name, child4dob) value ";
  3. }
  4. elseif ($_POST['subsidary'] == 'dub') {
  5. $query = "replace into rightone_crm.leadsltd (id, firstname, lastname, dob, company, occupation, income, spousename, spouselastname, spousedob, spousecompany, spouseoccupation, spouseincome, street, area, city, state, child1name, child1dob, child2name, child2dob, child3name, child3dob, child4name, child4dob) value ";
  6. }


I gra muzyka. Ale jestem tukiem :-). Bak podstaw pokutuje straconymi godzinami. Nawet nie uwieżylibyście ile czasu na tym już straciłem.
Dzięki za pomoc

Zapoznam się napewno przed wrzuceniem kolejnego temetu. A tak naprawdę to po przeczytaniu tego może sam rozwiąże problem:-)
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: 14.09.2025 - 18:21