Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wynik zapytanie wkładany do formularza
primo
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

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


Witam,

mam skrypt który powinien po kliknięciu kategorii wsadzić jej dane do formularza do edycji:

całość korzysta z klasy DB - Pear

  1. <?php
  2. require 'DB.php';
  3.  
  4.  
  5. $dsn ='mysql://root:@localhost/php_receptury';
  6.  
  7.  
  8.  
  9. // połączenie z bazą danych
  10. $dbh = DB::connect($dsn) or die(&#092;"Nie można ustanowić połączenia\");
  11. if (DB::isError($dbh)) { log_die($dbh); }
  12. $dbh->setFetchMode(DB_FETCHMODE_OBJECT);
  13.  
  14. $fields = array('sign', 'planet', 'element', 'start_month', 'start_day', 'end_month', 'end_day');
  15.  
  16. switch ($_REQUEST['cmd']) {
  17.  
  18.  
  19. case 'edit': //podejrzewam, że tutaj tkwi błąd, ale nie wiem jaki
  20.  $row = $dbh->getRow('Select' . join(',', $fields). &#092;"FROM zodiac WHERE id = ?\", array($_REQUEST['id']));
  21.  
  22.  
  23.  
  24. case 'add':
  25.  print'<form method=\"post\" action=\"10.12.php\">';
  26.  print'<input type=\"hidden\" name\"cmd\" value=\"save\">';
  27.  print'<table>';
  28.  if ('edit' == $_REQUEST['cmd']) {
  29. printf('<input type=\"hidden\" name=\"id\" value=\"%d\">', $_REQUEST['id']);
  30.  
  31.  }
  32.  foreach ($fields as $field) {
  33.  if ('edit' == $_REQUEST['cmd']) {
  34.  $value = htmlspecialchars($row->$field);
  35.  }else{
  36.  $value = ' ';
  37.  }
  38.  printf('<tr><td>%s: </td><td><input type=\"text\" name=\"%s\" value=\"%s\">', $field, $fields, $value);
  39.  printf('</td></tr>');
  40.  }
  41.  print '<tr><td></td><td><input type=\"submit\" value=\"Zapisz\"></td></tr>';
  42.  print '</table></form>';
  43.  break;
  44.  
  45.  
  46.  
  47. case 'save':
  48.  $sql = pc_build_query($dbh, 'id', $fields, 'zodiac');
  49.  if (DB::idError($sth = $dbh->query($sql))) {
  50.  print &#092;"Nie można zapisać danych: \".$sth->getMessage();
  51.  } else {
  52.  print &#092;"Informacje zostały zapisane.\";
  53.  }
  54.  print '<hr>';
  55.  break;
  56.  
  57. default:
  58.  $sth = $dbh->query('Select id, sign FROM zodiac');
  59.  print '<ul>';
  60.  while ($row = $sth-> fetchRow()){
  61.  printf ('<li> <a href=\"%s?cmd=edit&id=%s\">%s</a>', $_SERVER ['PHP_SELF'], $row->id, $row->sign);
  62. }
  63. print '<hr><li> <a href=\"10.12.php?cmd=add\">Dodaj nowy</a>';
  64. print '</ul>';
  65. break;
  66. }
  67. ?>


Ten post edytował primo 23.12.2004, 11:48:05
Go to the top of the page
+Quote Post
Jojo
post
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


Fajnie. Ja też miewam różne skrypty, które powinny różne rzeczy robić.
Napisałbyś co jest nie tak i jakie błędy wywala.

Na pierwszy rzut oka cośmoże być nie tak z zapytaniem w linii 21, bo nie ma spacji po 'Select' i przed 'FROM'.
Go to the top of the page
+Quote Post
Liko
post
Post #3





Grupa: Zarejestrowani
Postów: 436
Pomógł: 6
Dołączył: 8.11.2003
Skąd: Szczecin

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


  1. <?php
  2.  
  3. case 'edit': //podejrzewam, że tutaj tkwi błąd, ale nie wiem jaki
  4.  $row = $dbh->getRow('Select' . join(',', $fields). &#092;"FROM zodiac WHERE id = ?\", array($_REQUEST['id']));
  5. // A gdzie tu break; ?
  6.  
  7. ?>
Go to the top of the page
+Quote Post
primo
post
Post #4





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

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


zapytanie wyświetla 12 kategorii znaków zodiaku, które są łączami, jak klikne jeden z nich to powinien w jednym formularzu wyświetlić jego dane, a w drugim obok dane do edycji, czego właśnie nie robi i w tym właśnie jest problem, -- nie wyświetla błędów.

jak dodałem break; którego faktycznie brakowało to teraz już nic nie wyświetla, no ale on tam powinien być...

linia 61
Cytat
printf ('<li> <a href="%s?cmd=edit&id=%s">%s</a>', $_SERVER ['PHP_SELF'], $row->id, $row->sign);
jak zmodyfiikuję $_SERVER -- czy to gdzies w pliku php.ini nie powinno wskazywac zrodla -- czy to jest domyslne, niezaleznie od katalogu (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował primo 23.12.2004, 11:46:27
Go to the top of the page
+Quote Post
Jojo
post
Post #5





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


Popraw zapytanie.
A break'a być nie powinno. W konstrukcji switch jeśli nie ma instrukcji break są wykonywane wszystkie następne przypadki do napotkania instrukcji break lub do końca switch'a.
W wypadku który przytoczyłeś brak break'a jest podyktowany chęcią skrócenia kodu. W przypadku akcji 'edit' wybierane są odpowiednie dane z bazy, a akca 'add' (wykonywana od razu po 'edit') jest rozbudowana o wpisywanie do formularza odpowiednich zmiennych zawierających te dane.
Go to the top of the page
+Quote Post
primo
post
Post #6





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

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


poprawiłem zapytanie wg Twoich wskazówek i działa, wrzucanie do formularza, ale nadal nie działa dodanie nowego rekordu

Ten post edytował primo 23.12.2004, 23:31:33
Go to the top of the page
+Quote Post
Jojo
post
Post #7





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


Linia 27. Błąd w formularzu. Brakuje znaku '=' przy atrybucie name elementu input.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 19:13