Witam, staram się ogarnąć temat w którym posiadam podstawowy formularz gdzie wpisujesz osobę i mamy poniżej opcję dodaj kolejną, tak aby bez przeładowania strony została dodana kolejna linijka gdzie można dopisać kolejną osobę i tak np do 6... gdzie obok jest jest opcja wyślij i cały wpis w zależności od ilości linii jest dodawany do bazy danych, oczywiście każdy pod oddzielnym rekordem.
Zależy mi na tym, aby w jakiś sposób dynamicznie i na żywo była opcja dodania linii tekstowych np (Imię, Nazwisko, dzień) coś w stylu tworzenia grup.
Domyślam się że w php bez przeładowania strony to się nie uda, dlatego proszę o pomoc, ponieważ jestem totalnym laikiem a chciałbym coś takiego osiągnąć.
- Rejestracja:ponad 15 lat
- Ostatnio:ponad 11 lat
- Rejestracja:około 17 lat
- Ostatnio:prawie 12 lat
<form name="foo" method="get">
<span id="row">
<input type="text" name="imie[]" /> <br/>
</span>
<span id="row2"></span>
<input type="button" onclick="document.getElementById('row2').innerHTML += document.getElementById('row').innerHTML;" value="dodaj" />
<input type="submit" value="wyslij" />
</form>
- Rejestracja:ponad 15 lat
- Ostatnio:ponad 11 lat
ekhm no to jak mówiłem jestem laikiem :P
zastanawia mnie jeszcze kwestia jak będzie miał wyglądać pod to wpis do bazy danych, jak dla mnie coś takiego
czy przypisywanie zmiennych będzie standardowe, czy musi być umieszczone w jakiejś pętli, bo nie wiem co mają robić te kwadratowe nawiasy w atrybucie name :( ?
$imie = stripslashes(strip_tags($_POST['imie']));
$nazwisko = stripslashes(strip_tags($_POST['nazwisko']));
itd..
$sql = "INSERT INTO `osoba` (`imie` , `nazwisko`, `email`, `telefon`) VALUES ('$imie', '$nazwisko', '$email', '$telefon')";
$add = mysql_query($sql,$connect) or die('Nie dodano osoby, błąd: ' .mysql_error());
Siedziałem nad jakimiś wideo tutorialami żeby łatwiej to opanować co nie co czytałem a i tak to jest tak obszerny temat...
- Rejestracja:około 17 lat
- Ostatnio:prawie 12 lat
jak masz więcej pól tekstowych, np.:
<input type="text" name="imie[]" value="a"/>
<input type="text" name="imie[]" value="b"/>
<input type="text" name="imie[]" value="c"/>
to dane będą trzymane w tablicy $_POST['imie']
:
$_POST['imie'][0] = "a";
$_POST['imie'][1] = "b";
$_POST['imie'][2] = "c";
możesz zrobić pętlę i dodać po kolei wszystkie rekordy:
$n = count($_POST['imie']);
for($i=0; $i<$n; ++$i) {
// tutaj twój kod, tylko zamień wszędzie $_POST[...] na $_POST[...][$i]
}
- Rejestracja:ponad 15 lat
- Ostatnio:ponad 11 lat
kurde gubię się już w tym
mam 3 pliki...
index.php
<html>
<head>
</head>
<body bgcolor="#DDDDDD">
<?php
$sub=1;
if (isset($_POST['wyslij'])) {
$sub=0;
//połączenie z bazą danych
// include 'mysql.php';
//przypisanie nazw zmiennych
// include 'var.php';
//test błędów
// include 'bad.php';
// if ($bad == 0) {
include 'form_dane.php';
// }
}
if ($sub==1) {
include 'form.php';
}
$sub=1;
?>
</html>
form.php
<form name="foo" method="post">
<span id="row">
<input type="text" name="imie[]" /> <input type="text" name="nazwisko[]" /> <input type="text" name="email[]" /> <input type="text" name="telefon[]" /><br/>
</span>
<span id="row2"></span>
<input type="button" onclick="document.getElementById('row2').innerHTML += document.getElementById('row').innerHTML;" value="dodaj" />
<input type="submit" value="wyslij" name="wyslij" />
</form>
form_dane.php
<?php>
if (isset($_POST['wyslij'])) {
$n = count($_POST['imie']);
for($i=0; $i<$n; ++$i) {
// tutaj twój kod, tylko zamień wszędzie $_POST[...] na $_POST[...][$i]
$sql = "INSERT INTO `osoba` (`imie` , `nazwisko`, `email`, `telefon`) VALUES ('$_POST[imie][$i]', '$_POST[nazwisko][$i]', '$_POST[email][$i]', '$_POST[telefon][$i]')";
$add = mysql_query($sql,$connect) or die('Nie dodano osoby, błąd: ' .mysql_error());
}
}
if(mysql_query($sql)) {
echo '<META HTTP-EQUIV=Refresh CONTENT="2; URL=index.php">';
}
?>
Czy to jest poprawne?
- Rejestracja:około 13 lat
- Ostatnio:ponad 10 lat
<input type="button" onclick="dodaj('row',imie[])" value="dodaj" /> <input type="submit" value="wyslij" /> </form>
Koledze chodziło zapewne o coś takiego, aby dynamicznie dodawać pola input, a przetwarzanie po stronie serwera to już analiza tablicy POST jak kolega wyżej napisał.
Pozdrawiam
Marcin

- Rejestracja:ponad 15 lat
- Ostatnio:ponad 11 lat
chodziło mi o coś takiego
<?php
$strona= stripslashes(strip_tags($_POST['strona']));
echo 'strona: '. $strona;
?>
<form name="foo" method="post">
<span id="row">
<input name="strona[]" type="hidden" value="<?php echo $strona; ?>" /> <input type="text" name="imie[]" /> <input type="text" name="nazwisko[]" /> <input type="text" name="dd[]" size="1" maxlength="2">-<input type="text" name="mm[]" size="1" maxlength="2">-<input type="text" name="yyyy[]" size="3" maxlength="4"><font size="-1" color="#999999"> (dd-mm-rrrr)</font><br/>
</span>
<span id="row2"></span>
<input type="button" onclick="document.getElementById('row2').innerHTML += document.getElementById('row').innerHTML;" value="dodaj" />
<input type="submit" value="wyslij" name="wyslij" />
</form>
<?php
$data_Y = date('Y');
$data_Y = substr($data_Y, 2,2);
$data_m = date('m');
$data_d = date('d');
$data_h = date('H');
$rand = rand(100, 999);
$data_num = $data_Y.$data_m.$data_d;
$grupa = $data_Y."-".$data_m."-".$data_d."/".$data_h."/".$rand;
include 'mysql.php';
if (isset($_POST['wyslij'])) {
$n = count($_POST['imie']);
for($i=0; $i<$n; ++$i) {
$strona= stripslashes(strip_tags($_POST['strona'][$i]));
$imie = stripslashes(strip_tags($_POST['imie'][$i]));
$nazwisko = stripslashes(strip_tags($_POST['nazwisko'][$i]));
$dd = stripslashes(strip_tags($_POST['dd'][$i]));
$mm = stripslashes(strip_tags($_POST['mm'][$i]));
$yyyy = stripslashes(strip_tags($_POST['yyyy'][$i]));
$sql = "INSERT INTO `osoba` (`strona` , `imie` , `nazwisko`, `dd`, `mm`, `yyyy`, `grupa`) VALUES ('$strona', '$imie', '$nazwisko', '$dd', '$mm', '$yyyy', '$grupa')";
$add = mysql_query($sql,$connect) or die('Nie dodano osoby, błąd: ' .mysql_error());
echo "DODANO WPIS";
}
}
?>
próbuję to połączyć z kodem wysyłania email i mam problem ponieważ dodaje mi się tylko pierwszy rekord z tablicy, a kod wygląda tak:
<?php
$strona = stripslashes(strip_tags($_POST['strona']));
echo 'strona: '. $strona;
if (empty($_POST['wyslij'])) {
echo "<table border=\"0\"><form name=\"foo\" method=\"post\">
<tr>
<td>Imie, nazwisko lub nick</td>
<td><input type=\"text\" name=\"zgloszeniowiec\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>Adres e-mail</td>
<td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>Tresc wiadomosci</td>
<td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
</tr>
</table>
<span id=\"row\">
<input name=\"strona[]\" type=\"hidden\" value=\"<?php echo $strona; ?>\" /> <input type=\"text\" name=\"imie[]\" /> <input type=\"text\" name=\"nazwisko[]\" /> <input type=\"text\" name=\"dd[]\" size=\"1\" maxlength=\"2\">-<input type=\"text\" name=\"mm[]\" size=\"1\" maxlength=\"2\">-<input type=\"text\" name=\"yyyy[]\" size=\"3\" maxlength=\"4\"><font size=\"-1\" color=\"#999999\"> (dd-mm-rrrr)</font><br/>
</span>
<span id=\"row2\"></span>
<input type=\"button\" onclick=\"document.getElementById('row2').innerHTML += document.getElementById('row').innerHTML;\" value=\"dodaj\" />
<input type=\"submit\" value=\"wyslij\" name=\"wyslij\" />
</form>";
}
elseif (!empty($_POST['tresc']) && !empty($_POST['zgloszeniowiec']) && !empty($_POST['email'])) {
$message = "Tresc wiadomosci:\n$_POST[tresc]\nWyslal: $_POST[imie]\ne-mail: $_POST[email]";
$header = "From: $_POST[zgloszeniowiec] <$_POST[email]>";
@mail("test@test.pl","Wiadomosc ze strony WWW","$message","$header")
or die('Nie udalo sie wyslac wiadomosci');
$data_Y = date('Y');
$data_Y = substr($data_Y, 2,2);
$data_m = date('m');
$data_d = date('d');
$data_h = date('H');
$rand = rand(100, 999);
$data_num = $data_Y.$data_m.$data_d;
$grupa = $data_Y."-".$data_m."-".$data_d."/".$data_h."/".$rand;
include 'mysql.php';
if (isset($_POST['wyslij'])) {
$n = count($_POST['imie']);
for($i=0; $i<$n; ++$i) {
$strona = stripslashes(strip_tags($_POST['strona'][$i]));
$imie = stripslashes(strip_tags($_POST['imie'][$i]));
$nazwisko = stripslashes(strip_tags($_POST['nazwisko'][$i]));
$dd = stripslashes(strip_tags($_POST['dd'][$i]));
$mm = stripslashes(strip_tags($_POST['mm'][$i]));
$yyyy = stripslashes(strip_tags($_POST['yyyy'][$i]));
$sql = "INSERT INTO `osoba` (`strona` , `imie` , `nazwisko`, `dd`, `mm`, `yyyy`, `grupa`) VALUES ('$strona', '$imie', '$nazwisko', '$dd', '$mm', '$yyyy', '$grupa')";
$add = mysql_query($sql,$connect) or die('Nie dodano osoby, blad: ' .mysql_error());
echo "DODANO WPIS";
}
}
echo "<div align=\"center\"><strong>Wiadomosc zostala wyslana poprawnie!</strong></div>";
}
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypelnij wszystkie pola formularza!</span>";
?>