Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd przy wykonywaniu skryptu
Forum PHP.pl > Forum > Przedszkole
Ka-lolek
WItam,
Podczas nauki z php pisze skrypt , ktory bedzie tworzyc tabele w bazie danych
druga jego czescia jest formularz:
  1. <!Doctype html public \"-//w3c//DTD html 4.0 transitional//en\">
  2. <html>
  3. <head>
  4. <title>Utwórz tabelę bazy danych: Etap 2</title>
  5. </head>
  6. <body>
  7.  
  8. <h1>Zdefiniuj pola dla <?php echo &#092;"$_POST[table_name]\"; ?></h1>
  9.  
  10. <form method=\"post\" action=\"do_createtable.php\">
  11. <input type=\"hidden\" name=\"table_name\" value=\"<?php echo \"$_POST[table_name]\"; ?>\">
  12.  
  13. <table cellspacing=5 cellpadding=5>
  14. <tr>
  15. <th>Nazwa Pola</th><th>Typ Pola</th><th>Długość Pola</th></tr>
  16.  
  17. <?php
  18. for ($i = 0 ; $i < $_POST[num_fields]; $i++) {
  19. echo \"<tr>
  20. <td align=center>
  21. <input type=&#092;"text\" name=\"field_name[]\" size=\"30\">
  22. </td>
  23.  
  24. <td align=center>
  25. <select name=&#092;"field_type[]\">
  26. <option value=&#092;"float\">float</option>
  27. <option value=&#092;"int\">int</option>
  28. <option value=&#092;"text\">text</option>
  29. <option value=&#092;"varchar\">varchar</option>
  30. </select>
  31. </td>
  32.  
  33. <td align=center>
  34. <input type=&#092;"text\" name=\"field_length[]\" size=\"5\">
  35. </td>
  36. </tr>&#092;";
  37. }
  38. ?>
  39.  
  40. <tr>
  41. <td align=center colspan=3>
  42. <input type=\"submit\" value=\"Utwórz tabele\"></td>
  43. </tr>
  44. </table>
  45. </form>
  46. </body>
  47. </html>




i po jego wypelnieniu wykonywany jest ten skrypt:


  1. <!--HEADER-->
  2. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">
  3. <HTML>
  4. <HEAD>
  5. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
  6. <META HTTP-EQUIV=\"Creation-date\" CONTENT=\"2002.03.16\">
  7. <META HTTP-EQUIV=\"Reply-to\" CONTENT=\"adres zwrotny\">
  8. <META NAME=\"Description\" CONTENT=\"opis dokumentu\">
  9. <META NAME=\"Author\" CONTENT=\"autor dokumentu\">
  10. <META NAME=\"Generator\" CONTENT=\"Zajączek 3.0\">
  11. <TITLE>Utwórz tabelę bazy danych: Etap 3</TITLE>
  12. </HEAD>
  13. <BODY>
  14.  
  15. <h1>Dodawanie tabeli <?php echo &#092;"$_POST[table_name]\"; ?> </h1>
  16. <?php
  17. $sql = &#092;"CREATE TABLE $table_name (\";
  18.  
  19. // dodaje do instrukcji sql pola tabeli , ich typ i dł jeżeli była podana
  20.  
  21. for ($i = 0; $i < count($_POST[field_name]); $i++) {
  22. $sql .= $_POST[field_name][$i].&#092;" \".$_POST[field_type][$i];
  23.  if ($_POST[field_length][$i] != &#092;"\") {
  24. $sql .= &#092;" (\".$_POST [field_length][$i].\"),\";
  25. }
  26.  else {
  27. $sql .= &#092;",\";
  28. }
  29. }
  30. $sql = substr($sql, 0, -1);
  31. $sql .= &#092;")\";
  32.  
  33. //utwórz połączenie
  34. $conn = mysql_connect(&#092;"localhost\",\"root\",\"root\") or
  35. //wybierz baze danych
  36. $db = mysql_select_db(&#092;"MyDB\", $conn) or die(mysql_error());
  37. //wykonaj zapytanie sql i pobierz wyniki
  38. $sql_result = mysql_query($sql,$conn) or die(mysql_error());
  39. //wyświetl komunikat o powodzeniu
  40. if ($sql_result) {
  41. echo &#092;"<p>$_POST[table_name] została utworzona!</p>\";
  42. }
  43. ?>
  44.  
  45.  
  46. </body>
  47. </HTML>


niestety napotykamy tutaj blad. Nie weim czym jest spowodowany.
Jego tresc to:
Kod
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 '(osiem float (2),dziewiec float (3))' at line 1

osiem i dziewiec to nazwy, ktore wprowadzilem w formularzu (pierwszy kod zrodlowy)

Pozdrawiam
i prosze o szybka odpowiedz.

Ka-lolek
Ociu
Dałeś za małą ilość znaków w tworzeniu tabeli.

W tabeli masz 2 a 'osiem' ma 5...
Ka-lolek
z tego co wiem, to nei odnosi się to do nazwy pola, tylko do tworzonych rekordów...
SongoQ
Jakie Ci zwraca zapytanie?
Ka-lolek
? jakie zapytanie?
zwraca mi ten blad co napisalem:
Kod
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 '(osiem float (2),dziewiec float (3))' at line 1
nospor
Cytat
? jakie zapytanie?
@SongoQ chodziło jak wygląda Twoje wygenerowane zapytanie. Po wygenerewaniu zapytania daj echo $sql; i pokaż nam jak wygląda to zapytanie.
SongoQ
masz blad w $sql = "CREATE TABLE $table_name (";
powinno byc $sql = "CREATE TABLE $_POST['table_name'] (";
Ka-lolek
dzięki, taki głupi błąd a tyle zachodu;P

Trochę posunąłem moją naukę php i mysql do przodu, ale oczywiście natrafiłem na kolejny problem...

w pliku show_addrecord.html
jest taki oto formularz:
  1. <form method="post" action="do_addrecord.php">
  2. <table cellspacing=5 cellpadding=5>
  3. <tr>
  4. <td valign=top><strong>Identyfikator produktu:</strong></td>
  5. <td valign=top><input type="text" name="item_id" size=5 maxlength=5></td>
  6. </tr>
  7. <tr>
  8. <td valign=top><strong>Nazwa produktu:</strong></td>
  9. <td valign=top><strong><input type="text" name="item_title" size=30 maxlength=50></td>
  10. </tr>
  11. <tr>
  12. <td valign=top><strong>Opis produkt:</strong></td>
  13. <td valign=top><strong><textarea name="item_desc" cols=30 rows=5></textarea></td>
  14. </tr>
  15. <tr>
  16. <td valign=top><strong>Cena produktu:</strong></td>
  17. <td valign=top>$ <input type="text" name="item_price" size=10></td>
  18. </tr>
  19.  
  20. <tr>
  21. <td align=center colspan=2><input type="submit" value="Dodaj rekord"></td>
  22. </tr>
  23. </form>


wysyła on się do pliku do_addrecord.php, który wygląda w ten sposób:
  1. <?php
  2. if ((!$_POST[item_id]) || (!$_POST[item_title]) || (!$_POST[item_desc]) ||
  3.  (!$_POST[item_price])) {
  4.  header(&#092;"Location: http://127.0.0.1/show_addrecord.html\");
  5.  exit;
  6.  }
  7. ?>
  8.  
  9. <!--HEADER-->
  10. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">
  11. <HTML>
  12. <HEAD>
  13. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
  14. <META HTTP-EQUIV=\"Creation-date\" CONTENT=\"2002.03.16\">
  15. <META HTTP-EQUIV=\"Reply-to\" CONTENT=\"adres zwrotny\">
  16. <META NAME=\"Description\" CONTENT=\"opis dokumentu\">
  17. <META NAME=\"Author\" CONTENT=\"autor dokumentu\">
  18. <META NAME=\"Generator\" CONTENT=\"Zajączek 3.0\">
  19. <TITLE></TITLE>
  20. </HEAD>
  21. <BODY>
  22. <!--/HEADER-->
  23.  
  24. <h1>Dodawanie rekordu do tabeli MY_PRODUCTS</h1>
  25.  
  26. <?php
  27. $sql = \"INSERT INTO MY_PRODUCTS (ITEM_ID, ITEM_TITLE, ITEM_DESC, ITEM_PRICE)
  28. VALUES ('$_POST[item_id]', '$_POST[item_title]', '$_{PST[item_desc]}',
  29. '$_POST[item_prive]')&#092;";
  30.  
  31. //utwórz połączenie
  32. $conn = mysql_connect(&#092;"localhost\",\"root\",\"root\") or
  33. //wybierz baze danych
  34. $db = mysql_select_db(&#092;"MyDB\", $conn) or die(mysql_error());
  35. //wykonaj zapytanie sql i pobierz wyniki
  36. $sql_result = mysql_query($sql,$conn) or die(mysql_error());
  37.  
  38.  
  39. if ($sql_result) {
  40. echo &#092;"
  41. <p>Rekord został dodany!</p>
  42. <table cellspacing=5 cellpadding=5>
  43. <tr>
  44. <td valign=top><strong>Identyfikator produktu:</strong></td>
  45. <td valign=top>&#092;".stripslashes($_POST[item_id]).\"</td>
  46. </tr>
  47. <tr>
  48. <td valign=top><strong>Nazwa produktu:</strong></td>
  49. <td valign=top>&#092;".stripslashes($_POST[item_title]).\"</td>
  50. </tr>
  51. <tr>
  52. <td valign=top><strong>Opis produktu:</strong></td>
  53. <td valign=top>&#092;".stripslashes($_POST[item_desc]).\"</td>
  54. </tr>
  55. <tr>
  56. <td valign=top><strong>Cena produktu:</strong></td>
  57. <td valign=top>$&#092;".stripslashes($_POST[item_price]).\"</td>
  58. </tr>
  59. </table>&#092;";
  60. }
  61. ?>
  62.  
  63. <!--FOOTER-->
  64. </BODY>
  65. </HTML>
  66. <!--/FOOTER-->


w pierwszym pliku do formularza wpisuje się dane, które później mają być zamieszczone w bazie danych MyDB w tabeli MY_PRODUCTS (do tej tabeli ma zamieścić to skrypt do_addrecord.php (2 kod źródłowy) .

Problem polega na tym , że po wpisaniu komendy describe MY_PRODUCTS w konsoli mysql wszystko wygląda tak:

Kod
+---------+-----------------------+------------------+------------+
| ITEM_ID | ITEM_TITLE            | ITEM_DESC        | ITEM_PRICE |
+---------+-----------------------+------------------+------------+
|       1 | Czapka futrzana       | {PST[item_desc]} |            |
|       2 | Szalik we│niany       | {PST[item_desc]} |            |
|       3 | Sanda│y skurzane      | {PST[item_desc]} |            |
|       4 | Rŕkawiczki bawe│niane | {PST[item_desc]} |            |
+---------+-----------------------+------------------+------------+

jak widać nie pokazuje ITEM_PRICE a w ITEM_DESC jest {PST[item_desc]}

powinny tam być zamieszczone odpowiednio zmienne $_POST[item_price] i $_POST[item_desc]
gdzie tkwi błąd?

Pozdrawiam
i proszę o odpowiedź
Ka-lolek
nospor
czytać nie umiesz? masz w bazie PST..., a mowisz ze wkladasz POST. teraz spojrz se na zapytanie i co w widać? Nie wkaldasz POST a PST to i ci bzdury wrzuca do bazy. TO samo pisze ze wkaldasz do ceny price a w zapytaniu wkladasz jakis prive. sie zdecyduj.
  1. <?php
  2.  
  3. $sql = &#092;"INSERT INTO MY_PRODUCTS (ITEM_ID, ITEM_TITLE, ITEM_DESC, ITEM_PRICE)
  4. VALUES ('\".$_POST['item_id'].\"', '\".$_POST['item_title'].\"', '\".$_POST['item_desc'].\"','\".$_POST['item_price'].\"')&#092;";
  5.  
  6. ?>
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.