Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] klasa do formularzy
hhg
post 23.07.2007, 16:40:50
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


piszę klasę do walidacji i obsługi formularzy
niestety działanie funkcji mysqli_real_escape_string nie działa
Cytat
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, string given in ... on line 20

oto kod pliku do połączenia z bazą danych:
  1. <?php
  2.  
  3. DEFINE ('DB_USER', 'root');
  4. DEFINE ('DB_PASSWORD', '');
  5. DEFINE ('DB_HOST', 'localhost');
  6. DEFINE ('DB_NAME', 'comicsite');
  7.  
  8. @$db = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
  9.  
  10. if (mysqli_connect_errno()) {
  11.  
  12. echo 'Error: Connection with database failed (';
  13.  
  14. switch (mysqli_connect_errno()) {
  15. case 2005:
  16. echo 'unknown host';
  17. break;
  18. case 1045:
  19. echo 'bad login or password';
  20. break;
  21. case 1049:
  22. echo 'bad database name';
  23. break;
  24. }
  25.  
  26. echo ').';
  27.  
  28. }
  29.  
  30. ?>

oto kod pliku który po wysłaniu formularza zwraca błąd:

  1. <?php
  2.  
  3. include('../../mysqli.php');
  4.  
  5. class text {
  6.  
  7. var $data;
  8.  
  9. function __construct($dat) {
  10. $this->data = $dat;
  11. }
  12.  
  13.  
  14. function EscapeData () {
  15. global $db;
  16. if (ini_get('magic_quotes_gpc')) {
  17. $this->data = stripslashes($this->data);
  18. }
  19.  
  20. return mysqli_real_escape_string($this->data, $db);
  21. }
  22.  
  23.  
  24. function CheckData () {
  25. if (empty($this->data)) {
  26. return FALSE;
  27. } else {
  28. return $this->EscapeData();
  29. }
  30. }
  31.  
  32.  
  33.  
  34. }
  35.  
  36.  
  37. if (isset($_POST['submit']))
  38. {
  39. $poll = new text($_POST['test']);
  40.  
  41. if ( $poll->CheckData() ) {
  42. echo 'yes';
  43. } else {
  44. echo 'no';
  45. }
  46.  
  47.  
  48. }
  49.  
  50.  
  51. ?>
  52.  
  53.  
  54. <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
  55. <input type="text" size="20" name="test">
  56. <br />
  57. <input type="submit" value="send" name="submit">
  58. </form>


o ile się nie mylę to źle się odwołuję do zmiennej $db wewnatrz klasy..
Go to the top of the page
+Quote Post
kosmowariat
post 23.07.2007, 16:53:46
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

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


a może wykorzystaj gotową klasę do obsługi formularzy QuickForm sleepysmiley03.gif
Go to the top of the page
+Quote Post
qoob
post 23.07.2007, 17:50:07
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.06.2007

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


w
  1. <?php
  2. mysqli_real_escape_string($this->data, $db);
  3. ?>

pierwszy powinien byc $db a drugi dopiero $this->data, Ty masz na odwrot smile.gif

manual:
Cytat
Description
Procedural style:
string mysqli_real_escape_string ( mysqli $link, string $escapestr )
Go to the top of the page
+Quote Post
hhg
post 23.07.2007, 17:53:18
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


hmm do QuickForm2 (na php5) nie ma dokumentacji jeszcze, a dla php4 czyli QuickForm jest dokumentacja, ale ja mam na serwerze php 5.1.5 i niestety dostaje taki błędy przy próbie przejścia przez QuickStep


Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: No such file or directory in \classes\HTML\QuickForm.php on line 29

Fatal error: require_once() [function.require]: Failed opening required 'PEAR.php' (include_path='.;D:\WebServ\httpd') in \classes\HTML\QuickForm.php on line 29


o rzeczywiscie winksmiley.jpg qoob
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: 6.07.2025 - 23:31