![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.05.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli trafiłem do źłego pokoju to przepraszam, ale potrzebuje pomocy z php i MySQL.
Robie baze danych tematów dyplomowych. Tabela temat ma atrybuty [TematID, NazwaTematu]. Jest tez tabela archiwum_tematu [TematID, StaryTytul]. Z załozenia jest mozliwa zmiana tytyłu tematu, czyli w archiwum wstawia sie rekord z TematID oraz StaryTytul(który jest dotychczasową NazwaTematu w tabeli temat), a w tabeli temat zmienia sie krotka NazwaTamatu na NowyTytul. Moj problem jest w tym ze nie umiem wstawic tego nowego tytuły oraz ze stary tytuł nie wstawia sie do archiwum. Do archiwum trafia tylko TamatID. Prosze o wskazówki co jest źle. Oto kod pliku nowe_archiwum.php: [php:1:09edc3ee23]<?php <html> <head> <title>Wstawianie archimum tematu</title> </head> <body> <h1>Wstawianie archimum tematu</h1> <form action="wstaw_archiwum.php" method="post"> <table border="0"> <tr> <?php require_once('laczenie.php'); polacz_mysql(); mysql_select_db('pracedyplomowe'); $zapytanie = "select * from temat order by NazwaTematu"; $wynik = mysql_query($zapytanie); $ile_znalezionych = mysql_num_rows($wynik); ?> <br /><tr>Temat     </tr> <select name="TematID"> <? for ($i=0; $i <$ile_znalezionych; $i++) { $wiersz = mysql_fetch_array($wynik); echo '<option value="'.$wiersz['TematID'].'">'.$wiersz['NazwaTematu'].'</option>'; echo '<br />'; } ?> </select> </td></tr> <tr><td>Nowa nazwa tematu</td><td><input type="text" name="NowyTytul" maxlength="120" size="120"><br /></td></tr> <tr><td colspan="2"><input type="submit" value="Zapisz"></td></tr> </table> </form> </body> </html> ?>[/php:1:09edc3ee23] A tytaj plik: wstaw_archiwum.php [php:1:09edc3ee23]<?php <html> <head> <title>Rezultat wstawiania nowego archimum tematu</title> </head> <body> <h1>Rezultat wstawiania nowego archimum tematu</h1> <?php $TematID=$HTTP_POST_VARS['TematID']; $NazwaTematu=$HTTP_POST_VARS['NazwaTematu']; $NowyTytul=$HTTP_POST_VARS['NowyTytul']; if (!$NowyTytul) { echo 'Nie podano wszystkich potrzebnych danych.<br />' .'Wróć do poprzedniej strony i spróbuj ponownie.'; exit; } $TematID = addslashes($TematID); $NowyTytul = addslashes($NowyTytul); $NazwaTematu = addslashes($NazwaTematu); require_once('laczenie.php'); polacz_mysql(); mysql_select_db('pracedyplomowe'); $zapytanie = "insert into archiwum_tematu values ('".$TematID."', '".$NazwaTematu."', '2004-04-15')"; $wynik = mysql_query($zapytanie); $zapytanie2 = "update temat set NazwaTematu=$NowyTytul where TematID=$TematID"; $wynik2 = mysql_query($zapytanie2); if ($wynik) echo mysql_affected_rows().' temat zapisany do bazy.'; ?> </body> </html> ?>[/php:1:09edc3ee23] |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 2.01.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Tutaj wydajesz się wiedzieć o co chodzi:
[php:1:e533acf33c] <?php $zapytanie = "insert into archiwum_tematu values ('".$TematID."','".$NazwaTematu."', '2004-04-15')"; ?> [/php:1:e533acf33c] A tutaj już wydaje się, że nie wiesz o co chodzi: [php:1:e533acf33c] <?php $zapytanie2 = "update temat set NazwaTematu=$NowyTytul where TematID=$TematID"; ?> [/php:1:e533acf33c] O ile $TematID jest liczbą to wszystko jest w porządku, ale $NowyTytul liczbą raczej nie jest więc w zapytaniu musisz go wstawić w "ciapki" ' Generalnie przy tego typu problemach proponuję wyświetlić sobie na ekranie wygenerowane zapytanie, wtedy widać czy jest dobrze skonstruowane. Dobrze jest też poznać działanie funkcji mysql_error(), która może by Ci w tym przypadku podpowiedziała co jest nie tak. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.05.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki. Już zastosowałem krzaczki.
![]() Ale czemu umieszczając w pliku wstaw_archiwum.php [php:1:bdb7e63717]<?php echo 'TematID: ',$TematID,'<br />'; echo 'Nowy tytul: ',$NowyTytul,'<br />'; echo 'Nazwa tematu: ',$NazwaTematu,'<br />'; ?>[/php:1:bdb7e63717] wyświetlone zostają dane tylko z dwóch pierwszych poleceń? Czy poniższy kod nie przekazuje danych NazwaTematu? [php:1:bdb7e63717]<?php $zapytanie = "select * from temat where Status<>'zakonczony' and Status<>'udostepniony' order by NazwaTematu"; $wynik = mysql_query($zapytanie); $ile_znalezionych = mysql_num_rows($wynik); ?> <br /><tr><td>Temat</td><td> <select name="TematID"> <? for ($i=0; $i <$ile_znalezionych; $i++) { $wiersz = mysql_fetch_array($wynik); echo '<option value="'.$wiersz['TematID'].'">'.$wiersz['NazwaTematu'].'</option>'; echo '<br />'; } ?> </select> </td> </tr> <? ?>[/php:1:bdb7e63717] a moze ma byc cos podobnego do tego?? [php:1:bdb7e63717]<?php $zapytanie = "select * from temat where Status<>'zakonczony' and Status<>'udostepniony' order by NazwaTematu"; $wynik = mysql_query($zapytanie); $ile_znalezionych = mysql_num_rows($wynik); ?> <br /><tr><td>Temat</td><td> <select name="TematID","NazwaTematu"> <? for ($i=0; $i <$ile_znalezionych; $i++) { $wiersz = mysql_fetch_array($wynik); echo '<option value="'.$wiersz['TematID'].'","'.$wiersz['NazwaTematu'].'">'.$wiersz['NazwaTematu'].'</option>'; echo '<br />'; } ?> </select> </td> </tr> <? ?>[/php:1:bdb7e63717] |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 2.01.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale czemu umieszczając w pliku wstaw_archiwum.php
[php:1:e2a94133d5] <?php echo 'TematID: ',$TematID,'<br />'; echo 'Nowy tytul: ',$NowyTytul,'<br />'; echo 'Nazwa tematu: ',$NazwaTematu,'<br />'; ?> [/php:1:e2a94133d5] wyświetlone zostają dane tylko z dwóch pierwszych poleceń? Pewnie dlatego, że zmienna $NazwaTematu jest pusta ![]() -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.05.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wiec co zrobic żeby $NazwaTematu nie była pusta?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 2.01.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Pobrać je właściwie z bazy danych i upewnić się wcześniej, że w bazie danych rekordy mają coś wpisane w pole "NazwaTematu".
Krok po kroczku, najpierw obczaj czy rekordy nie są puste w polu "NazwaTematu", potem zbuduj zapytanie i sprawdź je np. w phpMyAdminie, jeśli zwróci to co trzeba to przechodzisz do skryptu i jeśli dotarłes do tego momentu i nadal jest źle to szukaj literówek w swoim kodzie. -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.05.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedzi, bardzo sie przydały.
Mam teraz problem bardziej z html'em, ale może będziecie mogli pomóc. Jak zrobic maske do wpisywania roku szkolnego (__/__), np. wpisując 0304 odebrane to zostanie jako 03/04. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 180 Pomógł: 0 Dołączył: 24.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dzięki za odpowiedzi, bardzo sie przydały.
Mam teraz problem bardziej z html'em, ale może będziecie mogli pomóc. Jak zrobic maske do wpisywania roku szkolnego (__/__), np. wpisując 0304 odebrane to zostanie jako 03/04. Nie wiem czy o to Ci chodzi, ale zrób 2 pola input, np: [pole1 input typu text] / [pole2 input typu text] |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 4.07.2025 - 13:43 |