|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
Problem z tworzeniem własnej modyfikacji |
Autor |
Wiadomość |
Infinitiv
Posty: 40
|
Wysłany: 31-10-2013, 18:56 Problem z tworzeniem własnej modyfikacji
|
|
|
Otóż postanowiłem spróbować swoich sił w tworzeniu prostych modyfikacji do phpBB by przemo i na dobry początek spróbowałem stworzyć skrypt pozwalający zapisać jeden input formularza w bazie danych.
W .php mam:
Kod: | <?
define('IN_PHPBB', true);
define('ATTACH', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
$page_title = 'Pierwsza modyfikacja';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'body' => 'test.tpl')
);
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
if(isset($_GET['test']))
{
function zapisz_test($test)
{
global $db;
$sql = 'INSERT INTO '.test.' (test) VALUES (\"$test\")';
$result = $db->sql_query($sql);
if (!$result)
{
message_die(GENERAL_ERROR, 'Could not insert into '.test.' table.', '', __LINE__, __FILE__, $sql);
}
}
}
?> |
W .tpl:
Kod: | <html>
<form action="" method="post">
Test:
<input type="text" id="test" name="test" size=30>
<input name="test" id="test" type="submit" value="wyślij">
</form>
</html> |
Po naciśnięciu przycisku "Wyślij", strona się jedynie przeładowuje, a tabelka "phpbb_test" nie dostaje żadnych danych. Czy mógłby mi ktoś powiedzieć, dlaczego się tak dzieje? |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Gadatliwa Kasia
|
|
|
|
kooza
![](images/avatars/943290665553fed5bd2690.png)
Pomógł: 486 razy Posty: 2401
|
Wysłany: 31-10-2013, 20:32
|
|
|
SQL
Kod: | CREATE TABLE `phpbb_test` (
`test` text NOT NULL
); |
później constants.php
Kod: | define('TEST_TABLE', $table_prefix . 'test'); |
php
Kod: | if (!empty($_POST['submit']))
{
$tresc = stripslashes(htmlspecialchars(trim($_POST['test'])));
if ( $test == '')
{
$message = 'Uzupelnij pole';
message_die(GENERAL_MESSAGE, $message);
}
$sql = mysql_query('INSERT INTO '.POSTTEST_TABLE.' (`test`) VALUES ("' . $test . '")');
$message = 'Dodano';
message_die(GENERAL_MESSAGE, $message);
}
|
tpl
Kod: | <form method="POST" action="plik.php">
<input type="text" name="test" size="30">
<input type="submit" name="submit" class="mainoption" value="wyslij">
</form> |
tak gdzie <b>plik.php</b> to podajesz nazwe pliku gdzie dodajesz ten formularz w php
i ten formularz w php dodawaj zawsze po:
Kod: | include($phpbb_root_path . 'includes/page_header.'.$phpEx); |
a nie na końcu pliku. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Infinitiv
Posty: 40
|
Wysłany: 31-10-2013, 21:05
|
|
|
Dzięki, podane przez Ciebie rozwiązanie działa, ale chodziłoby mi o coś innego: aby action formularza dotyczył funkcji w pliku .php, a nie całego pliku, bo docelowo chciałbym mieć kilka funkcji w tym .php i nie mogę zrobić tego w ten sposób. Dlatego użyłem
Kod: | if(isset($_GET['test']) |
|
|
|
|
![](templates/subSilver/images/spacer.gif) |
Woytec
![junior](templates/subSilver/images/ranks/rank_JA.gif)
Pomógł: 2596 razy Posty: 7676
|
Wysłany: 01-11-2013, 13:53
|
|
|
Funkcję musisz jeszcze wywołać ale nie wiem czy potrzebujesz do tego funkcji bo można od razu tak:
Kod: | if(isset($_GET['test']))
{
$sql = 'INSERT INTO '.test.' (test) VALUES (\"$test\")';
$result = $db->sql_query($sql);
if (!$result)
{
message_die(GENERAL_ERROR, 'Could not insert into '.test.' table.', '', __LINE__, __FILE__, $sql);
}
} |
|
|
|
|
![](templates/subSilver/images/spacer.gif) |
Infinitiv
Posty: 40
|
Wysłany: 01-11-2013, 23:21
|
|
|
Woytec, jest to samo - strona się przeładowuje jakby skrypt działał poprawnie, a w bazie żadnych danych nic nie ma. Sposób podany przez @kooza jednak też nie działa, przeładowuje stronę i tyle (nie wywala nawet żadnego błędu). Wszystkie trzy rozwiązania dają to samo. Co jest nie tak z moim kodem? |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Tommekk80
![junior](templates/subSilver/images/ranks/rank_JA.gif)
![](images/avatars/16922063785467c2c28d552.png)
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 02-11-2013, 06:40
|
|
|
kooza napisał/a: | INSERT INTO '.POSTTEST_TABLE. |
gdzie prędzej nazwałeś ją TEST_TABLE. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Infinitiv
Posty: 40
|
Wysłany: 04-11-2013, 22:56
|
|
|
.POSTTEST_TABLE. było tylko w jednym rozwiązaniu z trzech (konkretnie w tym podanym przez kooza), a mi nie działa żadne z nich, więc z pewnością nie o to chodzi. Wiem, że proszę zapewne o zbyt wiele, ale czy mógłby ktoś załączyć spakowane pliki .tpl i .php zawierające taką prostą modyfikację, która faktycznie funkcjonuje? Najlepiej byłoby mi zobaczyć kod i łopatologicznie go przeanalizować, to pomoże mi bardziej niż jakiekolwiek rady w tym temacie. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
Gadatliwa Kasia
|
|
|
|
Tommekk80
![junior](templates/subSilver/images/ranks/rank_JA.gif)
![](images/avatars/16922063785467c2c28d552.png)
Pomógł: 1411 razy Posty: 4780
|
Wysłany: 05-11-2013, 08:17
|
|
|
A to nie jest przypadkiem tak, że powinno być jakieś id? Nawet, gdy jest tylko jedna wartość? To przecież nie jest inteligentna forma życia i nie wie, skąd brać dane. Dodałbym kolumnę id i w zapytaniu dodał WHERE id=
Sam w mysql nie jestem obeznany, ale tak mi się wydaje. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,07 sekundy. Zapytań do SQL: 13 | |
![](images/spacer.gif) |
|