Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jeśli pole z formlarza puste to...
#1
Jeśli pole z formlarza puste to... to nie chce dodawać całego wpisu. Skrypt na bazie mysql. Czy ktoś jest w stanie poprawić tak skrypt, żeby w momencie gdy dane pole nie jest wypełniane, do bazy zapisało się jako tekst: "Nie podano danych".

Oto skrypt:
Kod:
$ksywaqq = addslashes(htmlspecialchars ($_POST['ksywa']));
$wwwqq = addslashes(htmlspecialchars ($_POST['www']));
$emailqq = addslashes(htmlspecialchars ($_POST['email']));
$ggqq = addslashes(htmlspecialchars ($_POST['gg']));
$trescqq = addslashes(htmlspecialchars ($_POST['tresc']));

{ //skomplikowanie
  echo '<FORM METHOD=POST action="?go=guest_book_save">';
  echo '<INPUT TYPE="hidden" NAME="action" VALUE="add"><TABLE>';
  echo '<TR><TD>Ksywa:</TD><TD><INPUT TYPE="text" NAME="ksywa"></TD></TR>';
  echo '<TR><TD>Www:</TD><TD><INPUT TYPE="text" NAME="www"></TD></TR>';
  echo '<TR><TD>Email:</TD><TD><INPUT TYPE="text" NAME="email"></TD></TR>';
  echo '<TR><TD>GaduGadu:</TD><TD><INPUT TYPE="text" NAME="gg"></TD></TR>';
  echo '<TR><TD>Tresc:</TD><TD><textarea cols="40" rows="10" NAME="tresc"></textarea>';
  echo '<TR><TD></TD><TD align=\"right\"><INPUT TYPE="submit" VALUE="Dodaj"></td></tr>';
  echo '</TABLE>';
  echo '</FORM>';
}

To na przykładzie wycinek formularza księgi gości, skrypt można zobaczyć pod adresem:
Kod:
http://www.djtinware.netii.net/?go=guest_book

Prosiłbym o poprawienie kodu, gdyż sam nie jestem w stanie, bo niewiem o co chodzi... Proszę o pomoc Smile
Odpowiedz
#2
Tam gdzieś musi być if, a ten wycinek kodu nam nic nie mówi. Musisz dać więcej. ;]
Odpowiedz
#3
Na stronie jesli link dodaj wpis, który zaprowadza nas do: ?go=guest_book_add

i to właśnie jego zawartość:
Kod:
if ($_GET['go'] == 'guest_book_add') {
  echo "<b>Guest Book / Add:</b><br><br><br>";

$ksywaqq = addslashes(htmlspecialchars ($_POST['ksywa']));
$wwwqq = addslashes(htmlspecialchars ($_POST['www']));
$emailqq = addslashes(htmlspecialchars ($_POST['email']));
$ggqq = addslashes(htmlspecialchars ($_POST['gg']));
$trescqq = addslashes(htmlspecialchars ($_POST['tresc']));

{ //skomplikowanie
  echo '<FORM METHOD=POST action="?go=guest_book_save">';
  echo '<INPUT TYPE="hidden" NAME="action" VALUE="add"><TABLE>';
  echo '<TR><TD>Ksywa:</TD><TD><INPUT TYPE="text" NAME="ksywa"></TD></TR>';
  echo '<TR><TD>Www:</TD><TD><INPUT TYPE="text" NAME="www"></TD></TR>';
  echo '<TR><TD>Email:</TD><TD><INPUT TYPE="text" NAME="email"></TD></TR>';
  echo '<TR><TD>GaduGadu:</TD><TD><INPUT TYPE="text" NAME="gg"></TD></TR>';
  echo '<TR><TD>Tresc:</TD><TD><textarea cols="40" rows="10" NAME="tresc"></textarea>';
  echo '<TR><TD></TD><TD align=\"right\"><INPUT TYPE="submit" VALUE="Dodaj"></td></tr>';
  echo '</TABLE>';
  echo '</FORM>';
}
}

Zapisywanie odbywa się pod adresem: ?go=guest_book_save a jego kod to:

Kod:
if ($_GET['go'] == 'guest_book_save') {
  echo "<b>Guest Book / Add / Save:</b><br><br><br>";

$ksywaqq = addslashes(htmlspecialchars ($_POST['ksywa']));
$wwwqq = addslashes(htmlspecialchars ($_POST['www']));
$emailqq = addslashes(htmlspecialchars ($_POST['email']));
$ggqq = addslashes(htmlspecialchars ($_POST['gg']));
$trescqq = addslashes(htmlspecialchars ($_POST['tresc']));


if ($_POST['action'] == 'add') {   //dodawanie rekordu
  if ($ksywaqq && $wwwqq && $emailqq && $ggqq && $trescqq) {
    $query = "INSERT INTO Guest_Book (ksywa, www, email, gg, ";
    $query .= "tresc, data) VALUES ('$ksywaqq', '$wwwqq', '$emailqq', '$ggqq', '$trescqq', ".
    "now());";
    $wynik = mysql_query ($query);                          
  }
} elseif ($_POST['action'] == 'popraw') {    //poprawienie rekordu
  if ($ksywaqq && $wwwqq && $emailqq && $ggqq && $trescqq) {
    $query = "UPDATE Guest_Book SET ksywa='$ksywaqq',www='$wwwqq',email='$emailqq',gg=";
    $query .= "'$ggqq',tresc='$trescqq' WHERE
    nr='".$_POST['id']."';";
    $wynik = mysql_query ($query);
  }
}  

  echo "<meta http-equiv=\"Refresh\" content=\"1; url=?go=guest_book\" />Dodaje...";

}

I tutaj po sekundzie czyli już po zapisaniu jestesmy zawracani znowu na wyswietlanie wpisów. Oczywiście jakieś 1000 linijek przed mamy include, który łączy nas z baza mysql Smile
Skrypt działa bez zarzutnie, ale chce dodać do niego tą możliwość, że jeśli nie wypełnia sie danego pola w formularzu, na stronie pojawi się napis: Nie podano danych tego pola, oczywiscie cala reszta sie doda oprocz tego pola (zamiast niego ten napis). I tak chce zastosować do wszystkich pól...


O ile dobrze wiem polega to na tym ze np.

Kod:
if // cos tam, cos tam. jesli nie podasz pola to...
{
  echo "brak danych"; // pojawi sie ten napis
}
// lub
echo '<TR><TD>Ksywa:</TD><TD><INPUT TYPE="text" NAME="ksywa"></TD></TR>'; // jak podasz to doda sie to
Odpowiedz
#4
Kod:
if(!empty($_POST['ksywka']) && !empty($_POST['www']) && !empty($_POST['email']) && !empty($_POST['gg']) && !empty($_POST['tresc'])) {
// wszystko co ma się dziać, np. sprawdzenie poprawności tych wpisanych pól, zapisanie itd.
} else {
echo 'wypełnij pola!';
}

Powinno działać.
Odpowiedz
#5
Yhym to jest kod na to aby wypelnic koniecznie wszystkie pola.
Ale ja potrzebuje bardziej kodu, ktory jesli dane pole nie zostanie wypelnione to skrypt je pominie
a w chwili obecnej podczas nie podania jakiego kolwiek z pola wpis nie zostaje wogole dodany.

Twoj kod mi sie przyda bo zrobie pola obowiazkowe (ksywa, tresc) i nie obowiazkowe (email, gg), ale nie kazdy wpisujac sie podaje email i gg np. a taki wpis wtedy nie zostaje dodawany, a powinien sie dodac poprostu bez pol emaila i numeru gg
Odpowiedz
#6
Przy zapisie pola nieobowiązkowe zamień z $_POST['gg'] na zmienne np. $nr_gg.
Zrób warunek że jeśli $_POST['gg'] jest pusty to $nr_gg='brak danych' a jak niepusty to $nr_gg= $_POST['gg']
Odpowiedz
#7
(21-07-2009, 19:22)rodi napisał(a):
Kod:
if(!empty($_POST['ksywka']) && !empty($_POST['www']) && !empty($_POST['email']) && !empty($_POST['gg']) && !empty($_POST['tresc'])) {
// wszystko co ma się dziać, np. sprawdzenie poprawności tych wpisanych pól, zapisanie itd.
} else {
echo 'wypełnij pola!';
}

Powinno działać.

Jeśli ktoś w polu formularza zostawi spacje, to taka wartość ' ', przejdzie pomyślnie tą weryfikację.
Propomuje dodać przed tym fukcje trim() do każdej zmiennej przesłanej przez formularz.
Odpowiedz
#8
Troche się nie zrozumieliśmy. Dziękuje Rodiemu za kod który mi się bardzo przydał, ale drugą część skryptu używam do Cms-a, w ktorym mam np. dział z mp3 i mam tam rekordy $mp3_1 $mp3_1 ... $mp3_20 i jak wpisać w panelu administracyjnym w formularzu mam 20 pól i pod tym button Dodaj. Jest tych 20 pól a przy danym wpisie mam 15 mp3-ójek przy czym 5 pól zostanie wolnych = mój wpis sie nie doda! A ma się dodać! 15 mp3 + 5 napisów: Brak danych.

Poprostu gdy dane okno nie jest wypełniane, skrypt zapisuje wpis z pustym polem, a podczas wyswietlania jego poprostu pomija to pole stosujac napis: Brak Danych. Jak potrzeba skryptu wyswietlania to prosze:


Kod:
if ($_GET['go'] == 'guest_book') {
  echo "<b>Guest Book:</b><br><br><br>";

  echo " <a href=\"?go=guest_book_add\">Dodaj Wpis...</a><br><br><br>";

$wynik = mysql_query ("SELECT * FROM Guest_Book ORDER by nr DESC;");
$i=0;
$ile = mysql_num_rows($wynik);
while ($rekord = mysql_fetch_assoc ($wynik)) {

  $nr = $rekord['nr'];
  $data = $rekord['data'];
  $ksywa = stripslashes( ($rekord['ksywa']));
  $www = stripslashes( ($rekord['www']));
  $email = stripslashes( ($rekord['email']));
  $gg = stripslashes( ($rekord['gg']));
  $tresc = stripslashes( ($rekord['tresc']));


  echo "<table width=\"310\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\">
<tr>
<td width=\"270\" align=\"left\" valign=\"middle\" bgcolor=\"#EEEEEE\"><a href=\"$www\" target=\"_Blank\">$ksywa</a></td>
<td width=\"40\" align=\"right\" valign=\"middle\" bgcolor=\"#EEEEEE\"><a href=\"mailto:$email\"><img src=\"template/img/mail.png\" width=\"14\" height=\"14\" border=\"0\"></a><a href=\"gg:$gg\"><img src=\"template/img/gg.png\" width=\"14\" height=\"14\" border=\"0\"></a></td>
</tr>
<tr>
<td width=\"310\" align=\"left\" valign=\"middle\"><i>$tresc</i></td>
</tr>
</table><br>";

}
echo "</tr></TABLE>";
}

oczywiscie wczesniej jest include ktory laczy skrypt z baza
Odpowiedz
#9
Pokaż, strukturę bazy danych. To chyba nie skrypt odnośnie części z mp3.
Odpowiedz
#10
(21-07-2009, 23:27)Poju napisał(a): Pokaż, strukturę bazy danych. To chyba nie skrypt odnośnie części z mp3.

Co masz na myśli, rodzaje pól które zrobiłem ?
Jeśli chodzi o baze to zrobiłem sobie plik, żeby pozniej nie mieć problemu w razie zmiany bazy. Oto on na tabele: Guest_Book :

Kod:
CREATE TABLE `Guest_Book` (
  `nr` int(9) NOT NULL auto_increment,
  `data` text NOT NULL,
  `ksywa` text NOT NULL,
  `www` text NOT NULL,
  `email` text NOT NULL,
  `gg` text NOT NULL,
  `tresc` text NOT NULL,
  KEY `nr` (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jeśli katalog zawiera tylko jeden plik, wyświetl... Apikshos 3 3,735 13-05-2013, 15:49
Ostatni post: mateo
  [php] > usuwanie stringu z tablicy, jesli został użyty i zastąpienie go innym eremen 14 9,342 25-02-2012, 15:14
Ostatni post: eremen
  [PHP]pole opcji(radio) działa jak pole wyboru(checkbox) eremen 2 2,774 19-02-2012, 23:36
Ostatni post: eremen
  [js] Dodatkowe pole formularz bez odświeżania Grzesiek5753065 2 4,543 25-02-2008, 21:57
Ostatni post: Radek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl