ďťż

[PHP+MySQL] Dodaje pusty rekord przy wchodzeniu na stronę :/

       

Podstrony


telcocafe

Strona 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.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.