Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z dodawanie pytań
Forum PHP.pl > Forum > PHP
edekzkrainykredek
A więc kod dodawania_pytan:
  1. <?php
  2.  
  3.  
  4. require ("konfiguracja.php");
  5. require ("funkcje.php");
  6.  
  7. if(!$_SESSION['SESS_USERNAME']) {
  8. echo "<td><center>Nie jesteś zalogowany przejdź na strone<a href='logowanie.php'>logowania</a> by się zalogować</td>";
  9. }
  10. if(pf_check_number($_GET['temat']) == TRUE){
  11. $validsubject = $_GET['temat'];
  12. }
  13. else{
  14. header("Location: " . $config_basedir);
  15. }
  16.  
  17. if(isset($_GET['topic']) == TRUE) {
  18. if(is_numeric($_GET['topic']) == TRUE) {
  19. $validtopic = $_GET['topic'];
  20. }
  21. else{
  22. header("Location: " . $config_basedir);
  23. }
  24. }
  25. require("naglowek.php");
  26.  
  27. $subsql = "SELECT * FROM tematy WHERE id = " . $validsubject . ";";
  28. $subq = mysql_query($subsql);
  29. $subrow = mysql_fetch_assoc($subq);
  30.  
  31. $toplistsql = "SELECT * FROM watki WHERE id_tematu = " . $validsubject . " ORDER BY nazwa ASC;";
  32.  
  33. $toplistresult = mysql_query($toplistsql);
  34. $toplistnumrows = mysql_num_rows($toplistresult);
  35.  
  36. echo"<h1>Dodanie nowego pytania</h1>";
  37.  
  38. if($_SESSION['SESS_USERID'] == $subrow['id_posiadacza']) {
  39. if($toplistnumrows == 0){
  40. $notopics = TRUE;
  41. }
  42. }
  43.  
  44. if($notopics == TRUE) {
  45. echo "Nie utowrzono żadnego wątku. Kliknij <a href='dodawanie_watku.php'>tutaj</a> , aby go utowrzyć!";
  46. }
  47. else {
  48. echo "<p>";
  49. echo "<form action='dodawanie_pytania.php?temat=" . $validsubject . "' method='POST'>";
  50. echo "<table cellpadding=5>";
  51. echo "<tr>";
  52. echo "<td>Temat</td>";
  53. echo "<td><strong>" . $subrow['temat'] . "</strong></td>";
  54. echo "</tr>";
  55. echo "<tr>";
  56. echo "<td>Wątek</td>";
  57. echo "<td>";
  58.  
  59. if(!validtopic) {
  60. echo "<select name='topic'>";
  61. while($toplistrow = mysql_fetch_assoc($toplistresult)) {
  62. echo "<option value='" . $toplistrow['id'] . "'>" . $toplistrow['nazwa'] . "</option>";
  63. }
  64. echo "</select>";
  65. }
  66.  
  67. else {
  68. $topsql = "SELECT * FROM watki WHERE id = " . $validtopic . ";";
  69. $topq = mysql_query($topsql);
  70. $toprow = mysql_fetch_assoc($topq);
  71.  
  72. echo "<strong" . $toprow['nazwa'] . "</strong>";
  73. echo "<input type='hidden' name='topic' value='" . $toprow['id'] . "'>";
  74. }
  75. echo "</td>";
  76. echo "</tr>";
  77. echo "<tr>";
  78. echo "<td>Pytanie</td>";
  79. echo "<td><input type='text' name='pytanie'></td>";
  80. echo "</tr>";
  81. echo "<tr>";
  82. echo "<td>Odpowiedź</td>";
  83. echo "<td><textarea name='odpowiedz' rows=10 cols=50></textarea></td>";
  84. echo "</tr>";
  85. echo "</table>";
  86. echo "</form>";
  87. }
  88.  
  89. if($_POST['submit']) {
  90. $authsql = "SELECT * FROM tematy WHERE id = " . $validsubject . " AND id_posiadacza = " . $_SESSION['SESS_USERID'] . ";";
  91. $authresult = mysql_query($authsql);
  92. $authnumrows = mysql_num_rows($authresult);
  93.  
  94. if($authnumrows == 1) {
  95. $qsql = "INSERT INTO pytania(id_watku, pytanie, odpowiedz, id_dodajacego, data_dodania, aktywne) VALUES(" . $_POST['topic']
  96. . ", '". pf_fix_slashes($_POST['pytanie'])
  97. . "', ," . pf_fix_slashes($_POST['odpowiedz'])
  98. . "', " . $_SESSION['SESS_USERID']
  99. . ", NOW()"
  100. . ", 1);";
  101. $qresult = mysql_query($qsql);
  102.  
  103. header("Location: " . $config_basedir . "odpowiedz.php?id=" . mysql_insert_id());
  104. }
  105.  
  106. else {
  107. $qsql = "INSERT INTO pytania(id_watku, pytanie, odpowiedz, id_dodajacego, data_dodania, aktywne) VALUES(" . $_POST['topic']
  108. . ", '". pf_fix_slashes($_POST['pytanie'])
  109. . "', ," . pf_fix_slashes($_POST['odpowiedz'])
  110. . "', " . $_SESSION['SESS_USERID']
  111. . ", NOW()"
  112. . ", 1);";
  113. $qresult = mysql_query($qsql);
  114.  
  115. require ("naglowek.php");
  116.  
  117. echo "<h1>Oczekiwanie na ocenę</h1>";
  118. echo "Przed zamieszczeniem pytanie wymaga ocenienia przez administratora.";
  119. }
  120. }
  121.  
  122. else {}
  123. require("stopka.php");
  124. ?>



kod funkcje
  1. <?php
  2.  
  3. function pf_fix_slashes($string)
  4. {
  5. if (get_magic_quotes_gps() == 1)
  6. {
  7. return($string);
  8. }
  9. else{
  10. return(addslashes($string));
  11. }
  12. }
  13.  
  14. function pf_check_number($value) {
  15. if(isset($value) == FALSE)
  16. {
  17. $error = 1;
  18. }
  19.  
  20. if(is_numeric($value) == FALSE) {
  21. $error = 1;
  22. }
  23.  
  24. if($error == 1) {
  25. return FALSE;
  26. }
  27. else {
  28. return TRUE;
  29. }
  30. }
  31. ?>


PROBLEM:


Wszystkie zapytania do bazy są poprawne. Jestem początkującym użytkownikiem php i niestety nie rozumiem czemu nie działają zapytania bo pewnie tam tkwi błąd a bardziej w $validsubject

Pozdrawiam i z góry dziękuje za pomoc oraz WESOŁYCH ŚWIĄT

darko
Tak na szybko:
1.
linia 70 zamień

$topq = mysql_query($topsql);

na

$topq = mysql_query($topsql) or die(mysql_error());

2. wywal te średniki na końcu zapytań
3. sprawdź jak wygląda zapytanie, które podajesz jako parametr do mysql_query

// edit
ps pokaż nam jeszcze strukturę tabel
ps2 tam, gdzie stosujesz mysql_fetch_assoc dane powinno wyciągać się w pętli while
edekzkrainykredek


po zamieniu tych lini nie widze już nic tylko :
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 '' at line 1
darko
  1. echo $topsql;


średniki pousuwałeś z zapytań?

Definicję zmiennej $validtopic przenieś poza warunek, albo wstawiaj do zapytania wartość $_GET['topic']; (po uprzednich czynnościach związanych z bezpieczeństwem)
edekzkrainykredek
Niestety średniki mam wszędzie i ani przeniesienie tego poza ani zmiana na topic nie daje.
darko
Skoro tak uważasz, to ok prześledźmy cykl życia zmiennej $validsubject
  1. $validsubject = $_GET['temat'];
  2. $subsql = "SELECT * FROM tematy WHERE id = " . $validsubject . ";";
  3. $toplistsql = "SELECT * FROM watki WHERE id_tematu = " . $validsubject . " ORDER BY nazwa ASC;";
  4. echo "<form action='dodawanie_pytania.php?temat=" . $validsubject . "' method='POST'>";
  5. $authsql = "SELECT * FROM tematy WHERE id = " . $validsubject . " AND id_posiadacza = " . $_SESSION['SESS_USERID'] . ";";


w bazie:
  1. tematy.temat varchar(20)
  2. tematy.id int(11)
  3. watki.id_tematu int(11)


Zdecyduj się w końcu jakiego typu ma być zmienna $validsubject zarówno w bazie, jak w kodzie.
edekzkrainykredek
nie rozumiem może chodzi Ci o porobione klucze obce które w razie usunięcia usuwają wszystko co jest z nimi związane?
darko
Mój błąd, ale zwróć uwagę, odbierasz zmienne $_GET, a formularz wysyłasz metodą $_POST...
edekzkrainykredek
Problem był w adresie smile.gif ponieważ był pusty smile.gif
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.