dodawanie lini wpisu bez przeładowania strony

0

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ąć.

1
<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>
0
onclick="document.getElementById('row2').innerHTML += document.getElementById('row').innerHTML;

Za takie coś powinni wysyłać na Syberię do wyrębu lasów :)

0

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

1

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]
}
0

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?

0
<script type="text/javascript"> function dodaj(id_container,el_name){ var input=document.createElement('input'); input.type=text; input.name=el_name; var node=document.getElementById(id_container); node.appendChild(input); } </script> <form name="foo" method="get"> <input type="text" name="imie[]" />
<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

0

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("[email protected]","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>";
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1