phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
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?
 
     
Gadatliwa Kasia 

   
kooza


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.
 
     
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'])
 
     
Woytec


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);
    }
}
 
     
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?
 
     
Tommekk80



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.
 
     
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.
 
     
Gadatliwa Kasia 

   
Tommekk80



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.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

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
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

serwis laptopów

phpbb

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę