Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] rekord sie nie dodaje
Forum PHP.pl > Forum > Gotowe rozwiązania
raziell
Witam!
Uczę się właśnie php i my sql i w tym celu bawiłem się skryptem opisanym w pewnym czasopiśmie - starałem się go przerobić, ale chyba coś zepsułem, ponieważ nie da się dodać poprzez owy skrypt danych do bazy. Kiedy wpiszę dane, kliknę na przycisk wyślij, dane z formularza znikają, natomiast w bazie nie przybywa nowego rekordu. Wszystko jest ok. z edycja i usuwaniem danych. Co robię źle? Dzięki z góry za pomoc

Wyciąłem fragment odpowiedzialny za łączenie z bazą i logowaniem, żeby kod był bardziej przejrzysty:
  1. <!DOCTYPE HTML PUBLIC \"-//W3C//Dtd HTML 4.0//EN\">
  2. <html>
  3. <head>
  4. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\" />
  5. <link href=\"blog.css\" type=text/css rel=stylesheet>
  6. <title>Blog</title>
  7. </head>
  8. <body>
  9. <div id=content>
  10. <?php
  11. if ($zalogowany==true) {
  12. if ($_POST['co']=='insert') {
  13. insert($_POST['obraz'],$_POST['autor'],$_POST['tytul'],$_POST['tresc']);
  14. pokazForm('');
  15.  
  16.  
  17. }
  18. else if ($_POST['co']=='update') {
  19. update($_POST['data'],$_POST['tytul'],$_POST['tresc']);
  20. pokazForm('');
  21. }
  22. else if ($_GET['co']=='edit') {
  23. pokazForm($_GET['data']);
  24. }
  25. else if ($_GET['co']=='delete') {
  26. delete($_GET['data']);
  27. pokazForm('');
  28. }
  29. else {
  30. pokazForm('');
  31. }
  32. }
  33. pokazBlog();
  34. ?>
  35. </div>
  36. <div id=menu>
  37. <ul>
  38. <?php
  39. $miesiace[]='Styczeń';
  40. $miesiace[]='Luty';
  41. $miesiace[]='Marzec';
  42. $miesiace[]='Kwiecień';
  43. $miesiace[]='Maj';
  44. $miesiace[]='Czerwiec';
  45. $miesiace[]='Lipiec';
  46. $miesiace[]='Sierpień';
  47. $miesiace[]='Wrzesień';
  48. $miesiace[]='PaĽdziernik';
  49. $miesiace[]='Listopad';
  50. $miesiace[]='Grudzień';
  51. $dzisiaj=getdate();
  52. $m=$dzisiaj['mon'];
  53. $rok=$dzisiaj['year'];
  54. for ($i=0; $i<12 ;$i++) {
  55. $miesiac=$m;
  56. if ($miesiac<10) $miesiac='0'.$miesiac;
  57. echo '<li><a href=\"blog.php?miesiac='.$rok.$miesiac.'\">';
  58. echo $miesiace[$miesiac-1].' '.$rok.'</a>';
  59. $m--;
  60. if ($m==0) {
  61. $m=12;
  62. $rok--;
  63. }
  64. }
  65. ?>
  66. </ul>
  67. </div>
  68. </body>
  69. </html>
  70.  
  71. <?php
  72.  
  73. function pokazBlog() {
  74. global $zalogowany;
  75. if (isset($_GET['miesiac'])) {
  76. $miesiac=substr($_GET['miesiac'],4,2);
  77. $rok=substr($_GET['miesiac'],0,4);
  78. }
  79. else {
  80. $dzisiaj=getdate();
  81. $miesiac=$dzisiaj['mon'];
  82. $rok=$dzisiaj['year'];
  83. }
  84. $q=&#092;"SELECT * FROM newsy WHERE YEAR(data)=\".$rok.\" AND MONTH(data)=\".$miesiac.\" ORDER BY data DESC\"; 
  85. $r=mysql_query($q);
  86. while ($row = mysql_fetch_array($r, MYSQL_ASSOC)) {
  87. echo '<div class=wpis>';
  88. echo '<div class=kiedy>'.$row['data'];
  89. if ($zalogowany==true) echo ' | <a href=\"blog.php?co=edit&data='.$row['data'].'\">edytuj</a> | <a href=\"blog.php?co=delete&data='.$row['data'].'\">usuń</a>';
  90. echo '</div>';
  91. echo '<h2>'.$row['temat'].'</h2>';
  92. echo '<img src='.$row['obraz'].'>';
  93. echo nl2br($row['tresc']);
  94. echo '</div>';
  95. }
  96. }
  97.  
  98. function pokazForm($data) {
  99. $edit=false;
  100. $tytul='';
  101. $tresc='';
  102. if ($data!='') {
  103. $q=&#092;"SELECT * FROM newsy WHERE data='\".$data.\"'\";
  104. $r=mysql_query($q);
  105. if ($row = mysql_fetch_array($r, MYSQL_ASSOC)) {
  106. $obraz=$row['obraz'];
  107. $autor=$row['autor'];
  108.  
  109.  
  110. $tytul=$row['temat'];
  111. $tresc=$row['tresc'];
  112. $edit=true;
  113. }
  114. }
  115. echo '<div class=wpis>';
  116. if ($edit==true) echo '<h2>Edycja wpisu</h2>';
  117. else echo '<h2>Nowy wpis</h2>';
  118. ?>
  119. <form action=\"blog.php\" method=\"post\">
  120. <table cellSpacing=0 cellPadding=2 border=0>
  121. <tbody>
  122. <tr>
  123. <td noWrap>Tytuł: <br></td>
  124. <td width=\"100%\">
  125. <?php
  126. echo '<input maxLength=80 size=40 name=\"tytul\" value=\"'.$tytul.'\">';
  127. if ($edit==true) {
  128. echo '<input type=\"hidden\" name=\"co\" value=\"update\">';
  129. }
  130. else {
  131. echo '<input type=\"hidden\" name=\"co\" value=\"insert\">';
  132. }
  133. echo '<input type=\"hidden\" name=\"data\" value=\"'.$data.'\">';
  134. ?>
  135. </td>
  136.  
  137. </tr>
  138. <tr>
  139. <td noWrap colSpan=2>
  140. Tresc: <br><textarea name=tresc rows=10 wrap=VIRTUAL cols=40><?php 
  141.  echo $tresc; 
  142. ?></textarea><br><br>
  143. Adres obrazka:<br><textarea name=obraz rows=1 wrap=VIRTUAL cols=40><?php 
  144.  echo $obraz; 
  145. ?></textarea><br><br>
  146. Autor:<br><textarea name=autor rows=1 wrap=VIRTUAL cols=40><?php 
  147.  echo $autor; 
  148. ?></textarea><br><br>
  149. </td>
  150. </tr>
  151. <tr>
  152. <td colspan=\"2\">
  153. <input type=\"submit\" value=\"Wyślij\" name=\"post\">
  154. </td>
  155. </tr>
  156. </tbody>
  157. </table>
  158. </form>
  159. </div>
  160. <?php
  161. }
  162.  
  163. function insert($obraz,$autor,$tytul,$tresc) {
  164. $q=&#092;"INSERT INTO newsy VALUES (CURDATE(), id, '$obraz', '$autor','$tytul', '$tresc')\";
  165. $r=mysql_query($q);
  166. }
  167.  
  168. function delete($data) {
  169. $q=&#092;"DELETE FROM newsy WHERE data='\".$data.\"'\";
  170. $r=mysql_query($q);
  171. }
  172.  
  173. function update($data,$tytul,$tresc) {
  174. $q=&#092;"UPDATE newsy SET tytul='\".$tytul.\"', tresc='\".$tresc.\"' WHERE data='\".$data.\"'\";
  175. $r=mysql_query($q);
  176. }
  177.  
  178. ?>
MarcinZ
Chciałbym wiedziec jak wygląda struktura bazy danych bo może w tym tkwić problem, jeżeli jednak posiadasz dobrze stworzoną baze danych to chyab podczas wkładania do bazy danych informacji jest jakiś błąd...
Prawdopodobnie tkwi on w tym miejscu.:
Kod
function insert($obraz,$autor,$tytul,$tresc) {
    $q="INSERT INTO newsy VALUES (CURDATE(), id, '$obraz', '$autor','$tytul', '$tresc')";
    $r=mysql_query($q);
}

Powinno troche inaczej wyglądać, w miejscu id w bazie danych powinieneś mieś ustawione auto_increment i wtedy za id dajesz wcześniej zmienną lokalna $id = 'NULL'; która to bedzie wstawiana w baze danych to tak wpisywane jest w kolumne id ciąg id, który przy ustawionym kluczu na id podstawowym to jest niemożliwe by wartości się powtarzały.. kod powinienn wyglądać następująco..

Kod
function insert($obraz,$autor,$tytul,$tresc) {
$id = 'NULL';
  $q="INSERT INTO newsy VALUES (CURDATE(), $d, '$obraz', '$autor','$tytul', '$tresc')";
    $r=mysql_query($q);
}


Mam nadzieje iż to pomogło tobie w poprawnym napisaniu tego skryptu a jak nie będzie chodzić podeślij mi na adres mailowy to coś stwozrzył wraz z struktura baz danych w MySQL to poprawie Tobie..
raziell
niestety, mimo że podmieniłem kod nadal sie rekordy nie dodają.

baza mysql:
  1. `ID` int(4) NOT NULL AUTO_INCREMENT,
  2. `data` date DEFAULT NULL,
  3. `autor` text,
  4. `obraz` text,
  5. `temat` varchar(40) NOT NULL DEFAULT '',
  6. `tresc` text NOT NULL,
  7. PRIMARY KEY (`ID`)
  8. ) TYPE=MyISAM AUTO_INCREMENT=2007 ;
tumczasty
w kodzie MarcinZ'eta jest literówka, poza tym była zła kolejność; spróbuj tak:
  1. <?php
  2. function insert($obraz,$autor,$tytul,$tresc) {
  3. mysql_query(&#092;"INSERT INTO newsy VALUES (NULL, CURDATE(), '$autor', '$obraz','$tytul', '$tresc')\");
  4. }
  5. ?>


a w razie problemów istnieją takie funkcje, jak np. mysql_error" title="Zobacz w manualu PHP" target="_manual, która potrafi bardzo pomóc i Tobie, i nam
raziell
dzięki wielkie, już wszytsko działa!
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-2024 Invision Power Services, Inc.