ďťż
Podstrony
|
telcocafeStrona ma wyglądać tak, że na górze jest formularz, a pod nim wyświetlają się rekordy już dodane do bazy.Siedzę nad tym już ponad godzinę i szukam błędu. W problem tkwi w tym, że gdy wchodzę na stronę z poniższym kodem automatycznie dodaje się do bazy pusty rekord, który się potem wyświetla. Zauważyłem, że tego błędu nie ma gdy jest sama funkcja dodaj, a jak już dodam pokazywanie rekordów to się dodaje przy wejściu pusty :( <html> <head> <STYLE TYPE="text/css"> <!-- BODY { background: #000000; color: #FFFFFF; font-size: smaller; font-family: Arial; } TD { background: #000000; color: #FFFFFF; font-size: smaller; font-family: Arial; } A { text-decoration: none; color: yellow; font-size: smaller; } --> </STYLE> <body> <? mysql_connect ("localhost", "gamblirus", "haslo") or die ("mysql_connect nie działa"); mysql_select_db ("gamblirus_uk_db") or die ("baza padla "); $query = "INSERT INTO 4um (nick, text) VALUES ('".$nazwa."', '".$haslo."');"; $wynik = mysql_query ($query); print '<FORM METHOD="POST">Chcesz coś dodać:<table CELLPADDING=3 BORDER=1><INPUT TYPE="hidden" NAME="roz" VALUE="Dodaj">'; print '<TR><td><b>Nick:</b></td><td><input type="text" name="nazwa" /></td></TR>'; print '<TR><td><b>Co chce napisać:</b></td><td><input type="text" name="haslo" /></td></TR>'; print '</TABLE><input type="submit" VALUE="nowy"/>'; print "<A HREF='forum.php?if=zobacz'>Zobacz</A>"; //czyta z bazy $odczyt = mysql_query("SELECT * FROM 4um;") or die ("4um się $@#@%$#$%#$"); print ''; while ($rekord = mysql_fetch_array ($odczyt)){ $kto = $rekord[1]; $co = $rekord[2]; print "<TABLE CELLSPACING=0 CELLPADDING=0><TR> <TD>Nick: $kto</TD></TR><TR><TD>Napisał: $co</TD></TR></TABLE>";} print "<A HREF='forum.php?if=nowy'>Dodaj</A>"; print "<A HREF=''>ftp</A>"; print $id; ?> </HTML> [ciach] O tak? $_REQUEST = "INSERT INTO 4um (nazwa, haslo) VALUES ('".$nazwa."', '".$haslo."');"; $wynik = mysql_query ($_REQUEST); Bo coś nie dodaje teraz... Użytkownik Malganis edytował ten post 27 grudzień 2005, 11:15 Malganis... pomyśl :) Masz stronę, a na niej formularz. Jeszcze przed jego uzupełnieniem i wysłaniem danych $nazwa i $hasło do $_POST zapisujesz je do bazy. Są puste więc dlatego masz puste rekordy w bazie. Co prawda nie wczytywałem się w ten kod dokładnie, ale może powinieneś zrobić to tak, że z tego pliku głównego usunąć sekcje dodającą dane do bazy i umieścić ją w innym pliku, a przy formularzu dodać target="innyplik.php". W nim dodać warunekif(isset($_POST['nazwa']) && isset($_POST['haslo']) { mysql_connect ("localhost", "gamblirus", "haslo") or die ("mysql_connect nie działa"); mysql_select_db ("gamblirus_uk_db") or die ("baza padla "); $query = "INSERT INTO 4um (nick, text) VALUES ('".$nazwa."', '".$haslo."');"; $wynik = mysql_query ($query); //plik.php to plik z wyswietlaniem danych i formularzem echo '<a href="plik.php">Wróć</a>'; } else { echo '<a href="plik.php">Wróć</a>'; } Dzięki temu po naciśnięciu przycisku Nowy będziesz przenoszony do nowej strony która zapisze dane do bazy jeśli będą istanieły dane z formularza, a następnie linkiem wrócisz do strony głównej (oczywiście możesz jeszcze dodać jakieś warunki żeby dane po świadomym wysłaniu nie były puste, ale to już Twoja sprawa) PS. mogłem się walnąć w składni :) dodać target="innyplik.php".[/code] Proponuję jakiś porządniejszy kurs PHP ;) Kupie jutro Vademecum profesjonalisty PHP i MySQL, bo książla "Ćwiczenia praktyczne" jakoś średnio to tłumaczy. Niestety po załadowaniu strony na sewer jest błąd :( Parse error: parse error in /data/members/free/tripod/uk/g/a/m/gamblirus/htdocs/forum.php on line 81 kod PHP: <? mysql_connect ("localhost", "gamblirus", "haslo") or die ("mysql_connect nie działa"); mysql_select_db ("gamblirus_uk_db") or die ("baza padla "); //if ($if== 'zobacz'){ if(isset($_POST['nazwa']) && isset($_POST['haslo']) { mysql_connect ("localhost", "gamblirus", "haslo") or die ("mysql_connect nie działa"); mysql_select_db ("gamblirus_uk_db") or die ("baza padla "); $query = "INSERT INTO 4um (nick, text) VALUES ('".$_POST['nazwa']."', '".$_POST['haslo']."');"; $wynik = mysql_query ($query); //plik.php to plik z wyswietlaniem danych i formularzem echo '<a href="plik.php">Wróć</a>'; } else { echo '<a href="plik.php">Wróć</a>'; } print '<FORM METHOD="POST">Chcesz coś dodać:<table CELLPADDING=3 BORDER=1><INPUT TYPE="hidden" NAME="roz" VALUE="Dodaj">'; print '<TR><td><b>Nick:</b></td><td><input type="text" name="nazwa" /></td></TR>'; print '<TR><td><b>Co chce napisać:</b></td><td><input type="text" name="haslo" /></td></TR>'; print '</TABLE><input type="submit" VALUE="nowy"/>'; print "<A HREF='forum.php?if=zobacz'>Zobacz</A>"; $odczyt = mysql_query("SELECT * FROM 4um;") or die ("4um się $@#@%$#$%#$"); print ''; while ($rekord = mysql_fetch_array ($odczyt)){ $kto = $rekord[1]; $co = $rekord[2]; print "<TABLE CELLSPACING=0 CELLPADDING=0><TR> <TD>Nick: $kto</TD></TR><TR><TD>Napisał: $co</TD></TR></TABLE>";} print "<A HREF='forum.php?if=nowy'>Dodaj</A>"; print "<A HREF=''>ftp</A>"; //} print $id; ?> Nie mam pojęcia co jest nie tak. Czy kolejność jest dobra? Tą książkę to ci bardzo polecam, jest świetna! Chodzi o Vademecum profesjonalisty PHP i MySQL, oczywiście Użytkownik mmatheww edytował ten post 29 grudzień 2005, 14:39 Cóż, nie bardzo mogę ci pomóc, bo nie widzę pliku /data/members/free/tripod/uk/g/a/m/gamblirus/htdocs/forum.php ... Wrzuć go w codebox http://members.lycos...lirus/forum.php Pełen kod: <html> <head> <STYLE TYPE="text/css"> <!-- BODY { background: #000000; color: #FFFFFF; font-size: smaller; font-family: Arial; } TD { background: #000000; color: #FFFFFF; font-size: smaller; font-family: Arial; } A { text-decoration: none; color: yellow; font-size: smaller; } --> </STYLE> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" /> <body> <? mysql_connect ("localhost", "gamblirus", "haslo") or die ("mysql_connect nie działa"); mysql_select_db ("gamblirus_uk_db") or die ("baza padla "); //if ($if== 'zobacz'){ if(isset($_POST['nazwa']) && isset($_POST['haslo']) { mysql_connect ("localhost", "gamblirus", "haslo") or die ("mysql_connect nie działa"); mysql_select_db ("gamblirus_uk_db") or die ("baza padla "); $query = "INSERT INTO 4um (nick, text) VALUES ('".$_POST['nazwa']."', '".$_POST['haslo']."');"; $wynik = mysql_query ($query); //plik.php to plik z wyswietlaniem danych i formularzem echo '<a href="plik.php">Wróć</a>'; } else { echo '<a href="plik.php">Wróć</a>'; } print '<FORM METHOD="POST">Chcesz coś dodać:<table CELLPADDING=3 BORDER=1><INPUT TYPE="hidden" NAME="roz" VALUE="Dodaj">'; print '<TR><td><b>Nick:</b></td><td><input type="text" name="nazwa" /></td></TR>'; print '<TR><td><b>Co chce napisać:</b></td><td><input type="text" name="haslo" /></td></TR>'; print '</TABLE><input type="submit" VALUE="nowy"/>'; print "<A HREF='forum.php?if=zobacz'>Zobacz</A>"; $odczyt = mysql_query("SELECT * FROM 4um;") or die ("4um się $@#@%$#$%#$"); print ''; while ($rekord = mysql_fetch_array ($odczyt)){ $kto = $rekord[1]; $co = $rekord[2]; print "<TABLE CELLSPACING=0 CELLPADDING=0><TR> <TD>Nick: $kto</TD></TR><TR><TD>Napisał: $co</TD></TR></TABLE>";} print "<A HREF='forum.php?if=nowy'>Dodaj</A>"; print "<A HREF=''>ftp</A>"; //} print $id; ?> </HTML> Parse error: parse error in /data/members/free/tripod/uk/g/a/m/gamblirus/htdocs/forum.php on line 39 :pomocy: //} Wywal // ;) A na końcu linii 39 dodaj zamykający nawias... Zawsze zamiast $_POST można stosować $HTTP_POST_VARS, to może zmniejszyć obszart poszukiwań przy innych tego rodzaju błędach. Zawsze zamiast $_POST można stosować $HTTP_POST_VARS, to może zmniejszyć obszart poszukiwań przy innych tego rodzaju błędach. |
|||
Sitedesign by AltusUmbrae. |