Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL][PostgreSQL] Odpowieniki funkcji..., Przejście na MYSQL
Sublove
post 26.01.2009, 16:50:59
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Witam,
Do tej pory miałem bazę na Postgresie ale muszę przejść na MySQL, bo serwer szkolny padł a i muszę działać na swoim domowym który akceptuje bazy MySQL.
Teraz mam prośbę bo mam gotowe kwerendy i zapytania i nie wiem jak przerobić je na komendy MySQLa,
miałbym prośbę odnośnie tego, jak zamienić użyte poniżej funkcje na MySQL'owe odpowiedniki...


1.Wysyłanie poczty
  1. <?php
  2. echo' Wysłano';
  3. $header = "From: ". $Name . " <" . $email . ">r\n";
  4. $header .= "Content-type: text/html; charset=iso-8859-2r\n";
  5. $header .= "Content-Transfer-Encoding: 8bitr\n ";
  6. mail($recipient, $subject, $mail_body, $header);
  7. ?>


2. Dodawanie do bazy
  1. <?php
  2. $db = pg_connect("user=tomczak dbname=******** host=******** password=***** port=54321");
  3. $query = "insert into zapytanie (vin, marka, model, pojemnosc, mail, telefon)
  4.   values ('$vin','$marka1','$model1','$pojemnosc1','$mail1','$telefon1')";
  5. $result = pg_exec($db, $query);
  6. ?>



3. Zapytanie SELECET do bazy wraz z wyświetlaniem wyników w tabeli (tutaj wstawię całość kodu bo boję się że coś pominę):
  1. <?php
  2. if (isset($_POST['wyslij']) && $_POST['wyslij'] == 'Szukaj') {
  3. $db = pg_connect("user=tomczak dbname=**** host=********* password=****** port=54321");
  4. $nazwa=$_POST['nazwa'];
  5. $marka=$_POST['marka'];
  6. $model=$_POST['model'];
  7.  
  8. $blad_txt='';
  9. $blad=false;
  10.  
  11. if (strlen($nazwa)<2) {
  12. $blad_txt.='Wprowadzona nazwa częsci jest za krótka<br/>';
  13. $blad=true;
  14. }
  15.  
  16. if ($marka=='0') {
  17. $blad_txt.='Nie wybrałeś Marki, wybierz jedną z listy<br/>';
  18. $blad=true;
  19. }
  20.  
  21. if (strlen($model)<2) {
  22. $blad_txt.='Wprowadzona nazwa modelu jest za krótka<br/>';
  23. $blad=true;
  24. }
  25.  
  26. if (!$blad) {
  27.  
  28. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE
  29. lower(nazwa) LIKE lower('%".$nazwa."%') AND
  30. lower(marka) LIKE lower('%".$marka."%') AND
  31. lower(model) LIKE lower('%".$model."%')
  32. ORDER BY nazwa";
  33.  
  34. $result = pg_exec($db, $query);
  35. if (!$result) {
  36. $errormessage = pg_errormessage($db);
  37. }
  38.  
  39. $numrows = pg_numrows($result);
  40. $row=0;
  41. if (!$numrows)
  42. { printf("<a id='inf'><b>Brak wyników wyszukiwania...</b></a><br/>Niestety nie posiadamy takiej części w bazie.<br>Skorzystaj z naszego formularza aby wysłać zapytanie o część.<br>Skontaktujemy się z Tobą tak szybko, jak będzie to możliwe<br>
  43. <form action='zapytaj.php'><input type='submit' value='Przejdź do formularza'></form>
  44. ");
  45. }
  46. else {
  47. printf ("<table width=530>");
  48. printf ("<tr>
  49.  
  50. <td height=30 align=center>Nazwa</td>
  51. <td height=30 align=center>Marka</td>
  52. <td height=30 align=center>Model</td>
  53. <td height=30 align=center>Roczniki</td>
  54. <td height=30 align=center>Zapas</td>
  55. </tr>");
  56.  
  57. do
  58. {
  59. $myrow = pg_fetch_row ($result,$row);
  60. printf ("<tr><td height=30 >%s</td>
  61. <td height=20 >%s</td>
  62. <td height=20 >%s</td>
  63. <td height=20 >%s</td>
  64. <td height=20 >%s</td>
  65. </tr>",
  66. $myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[4]
  67.  
  68. );
  69.  
  70. $row++;
  71. }
  72.  
  73. while ($row < $numrows);
  74.  
  75. printf ("</table>");
  76. }
  77. } else {
  78. printf ("<a id='err'><b>Błąd wyszukiwania!</b></a><br/>");
  79. echo $blad_txt;
  80. }
  81. }
  82. ?>
Go to the top of the page
+Quote Post
EarthCitizen
post 26.01.2009, 16:55:58
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Wszystkie funkcje do PHP odnośnie mysqla masz tutaj: http://php.net.pl/manual/pl/book.mysql.php
A podane przez Ciebie zapytania są identyczne dla obu baz. Musisz tylko zamiast pg_query dać mysql_query itp dla wszystkich funkcji, odpowiedniki masz w linku wyżej.
Go to the top of the page
+Quote Post
Sublove
post 27.01.2009, 08:58:50
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Dzięki, pozamieniałem ale wystąpił błąd, otóż nie mogę wykonać finkcji mysql_num_rows(), kod mam taki:

  1. $db = mysql_connect('localhost', 'root','');
  2.  
  3. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE lower(nazwa) LIKE lower('%".$nazwa."%') AND lower(marka) LIKE lower('%".$marka."%') AND lower(model) LIKE lower('%".$model."%')
  4. ORDER BY nazwa";
  5.  
  6. $result = mysql_query($query, $db);
  7.  
  8. $numrows = mysql_num_rows($result);


Wywala mi błąd:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\wamp\www\wyszukaj.php on line 95

Co jest źle?


Ten post edytował Sublove 27.01.2009, 08:59:59
Go to the top of the page
+Quote Post
nospor
post 27.01.2009, 09:18:43
Post #4





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




masz blad zapytania. by dowiedziec sie jaki musisz to sprawdzic smile.gif
  1. <?php
  2. $result = mysql_query($query, $db) or die('Zapytanie: '.$query.' --- błąd: '.mysql_error());
  3. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sublove
post 27.01.2009, 09:34:05
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Dziękuję smile.gif

Wyświetla mi błędy:

Warning: Division by zero in D:\wamp\www\wyszukaj.php on line 82

tyczy się to linijek:

lower(nazwa) LIKE lower('%".$nazwa."%') AND
lower(marka) LIKE lower('%".$marka."%') AND
lower(model) LIKE lower('%".$model."%')
ORDER BY nazwa';

Wcześniej miałem to zapytanie na Postgresie i działało, teraz pewnie coś ze składnią... ale nie wiem co sad.gif
Go to the top of the page
+Quote Post
nospor
post 27.01.2009, 09:38:10
Post #6





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




blad co dostajesz ma sie nijak do kodu co ci podalem. Twoj blad to blad php a nie mysql smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sublove
post 27.01.2009, 09:46:32
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Zapytanie: SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE lower(nazwa) LIKE lower('%asdasd%') AND lower(marka) LIKE lower('%Honda%') AND lower(model) LIKE lower('%asdas%') ORDER BY nazwa --- błąd: No database selected

Ale to mnie dziwi bo mam to:

  1. <?php
  2. $db = mysql_connect('localhost', 'root','');
  3. mysql_select_db('Test',$db);
  4. ?>
Go to the top of the page
+Quote Post
nospor
post 27.01.2009, 09:54:06
Post #8





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




  1. <?php
  2. $db = mysql_connect('localhost', 'root','') or die(mysql_error());
  3. mysql_select_db('Test',$db) or die(mysql_error());
  4. ?>

Czy przy kazdej linijce musze sam ci to dopisywac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
melkorm
post 27.01.2009, 09:56:13
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


A zobacz co Tobie zwraca mysql_select_db() smile.gif


--------------------
Go to the top of the page
+Quote Post
Sublove
post 27.01.2009, 10:11:27
Post #10





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


Unknown database 'test'

Ale przecież mam taką bazę, wchodzię w SQLite manager i widzę po lewej że jest ...




Ten post edytował Sublove 27.01.2009, 10:17:16
Go to the top of the page
+Quote Post
nospor
post 27.01.2009, 10:18:56
Post #11





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




Cytat
wchodzię w SQLite manager
A ten sqllite laczy sie do bazy sqllite czy do bazy mysql? Bo ty w php laczysz sie do bazy mysql winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sublove
post 27.01.2009, 11:16:42
Post #12





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 23.01.2009

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


a ten SQllite manager to nie jest jakaś nakładka na MySQL poprostu?
Jeżeli to są dwi inne bajki to nie rozumie... W Wampie jest MySQL a powyżej jest SQllite manager... tzn że są różne dwie bazy? Jak w takim razie stworzyć jakąś w MySQL? Nie ma jakiegoś kreatora?

Juz mam.... ale dałem ciała, wstyd jak nic! smile.gif
php my admin.... widzę teraz biggrin.gif

i mam znów problem, wszystko już gra, bazę ma MySQL zrobiłem, nazwa bazy i tabeli się zgadza, wszystko sprawdziłem lecz nie odnajduje mi wyników zapytania:

  1. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE lower(nazwa) LIKE lower('%".$nazwa."%') AND lower(marka) LIKE lower('%".$marka."%') AND lower(model) LIKE lower('%".$model."%')
  2. ORDER BY nazwa";
  3.  
  4. result = mysql_query($query, $db);
  5. IF (!$result) {
  6. $errormessage = mysql_error($db);
  7. }
  8.  
  9. $numrows = mysql_num_rows($result);
  10. $row=0;
  11. IF (!$numrows)
  12. { printf("<a id='inf'><b>Brak wyników wyszukiwania...</b></a><br/>Niestety nie posiadamy takiej części w bazie.<br>Skorzystaj z naszego formularza aby wysłać zapytanie o część.<br>Skontaktujemy się z Tobą tak szybko, jak będzie to możliwe<br>
  13. <form action='zapytaj.php'><input type='submit' value='Przejdź do formularza'></form>
  14. ");
  15. }


wynik jest (!$numrows) bo wychodzi z IFa do tego komunikattu co jest powyżej. Zachowuje się jakby nie znalazł rekordu w bazie, żadnych błędów nie wyswietla nawet po dodaniu die*** może to zapytanie jest złe?
Zmienne globalne są włączone bo coś się w POST wysysła napewno - wcześniej sprawdziłby to inny IF i wywalił inny stosowny komunikat. A tak jest to wiadomość o braku rekordów... co jest grane?

Ten post edytował Sublove 27.01.2009, 10:30:34
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:30