Autor Zpráva
PetrQ
Profil
Zdravím všechny, prosím o pomoc, s php začínám a toto už je nad moje možnosti :o)) .
Mám formulář, kde není jasné, kolik řádků bude mít - přidává je uživatel pomocí javascriptu. Počet sloupců se měnit nebude.
Výpis formuláře po odeslání funguje, ale neumím to vypsat do nějakého rozumného formátu (např. do stejného, jako má formulář, vždy výpíšu jen položky pod sebou, ale to je druhořadé) a hlavně mi tam nejde předsunout text, jako např. typ: blablabla, počet: blabla, ....

Pořád to vypisuje toto:

typ: akustická kytara
model:
počet:

typ:
model: standard
počet:

typ:
model:
počet: 2

Anebo to umím tak, jak chci, ale musím mít předem jasné, kolik budu mít řádků, což se mi moc nehodí.
Celé bych to pak potřeboval poslat do databáze, nejspíš jako jeden zápis.

Kód vypadá takto:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="scReen" href="css/style.css"/>
<!-- Zaváděcí skript pro funkce jQuery -->
<script obal="javascript" type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.table.addrow.js"></script>
<script type="text/javascript">
(function($){
	$(document).ready(function(){
		$(".addRow").btnAddRow();
		$(".delRow").btnDelRow();
});
})(jQuery);
</script>
</head>
<body>
<?

echo "<font color='#CC3300' size='5'>Objednávka</font><br /><br />";

echo"<form method='POST'>";
	
   
	echo"<table cellspacing='0'  style='border: #DDDDDD 1px solid;'>
	
	<tr><td><input type='button' class='delRow' value='Delete Row'/></td>

	<td><div><select name='obal[$i][typ]' style='width:200px;'>
		 <option value='Akustické klasická kytara'>Akustické - klasická kytara</option>
		 <option value='Akustické dreadnought'>Akustické - dreadnought</option>
		 <option value='Akustické jumbo'>Akustické - jumbo</option>
		 <option value='Elektrické Strat a Tele'>Elektrické - Strat / Tele</option>
		 <option value='Elektrické LP a PRS'>Elektrické - LP / PRS</option>
		 <option value='Jazzové 16 palců'>Jazzové 16 \" ( 41 cm )</option>
		 <option value='Jazzové 17 palců'>Jazzové 17 \" ( 43 cm)</option>
		 <option value='Atypické'>Atypické</option>
         </select>
		 </td>
	     <td><select name='obal[$i][mod]' style='width:180px;'>
		 <option value='Standard'>Standard</option>
		 <option value='Luxury'>Luxury</option>
		 <option value='Professional'>Professional</option>
		 </select></div></td> 
				
		 <td><div><input type='text' name='obal[$i][poc]' size='2' value=''></div></td> 
			</tr>
			<tr><td colspan='3' align='right'>
<input type='button' class='addRow' value='Add Row'/></td></tr>
<tr><td>Poznámky</td></tr>
			<tr><td colspan='5'><textarea name='obal[text]' cols='53' rows='3'></textarea></td><tr>
	
			  <tr><td colspan='5' align='center'><input type='submit' name='send' value='Upravit'></td></tr>";
echo"</table>";
	echo"</form>";
 
?>
<?php
if(isset($_POST['send']))
{
   $obal = $_POST['obal'];
   $n        = count($obal);
   $i        = 0;
   
   echo "Váš výběr: \r\n" .
        "<ol>";
   while ($i < $n)
   {
   	  echo "<li>{$obal[$i]['no']}</li> \r\n";

	  echo "<li>{$obal[$i]['typ']}</li> \r\n";
	  echo "<li>{$obal[$i]['mod']}</li> \r\n";
      echo "<li>{$obal[$i]['poc']}</li> \r\n";

      $i++;
	  
   }
      echo "<li>{$obal[text]}</li> \r\n";

   echo "</ol>";
}

?>
</body>
</html>


Děkuju moc všem, už to bastlím od pátku a vždycky skončím bez úspěchu .....
AM_
Profil
1) místo while použij
for ($i = 0; $i < $n; $i++)

2) zřejmá chyba je např. na řádku 30, kde máš proměnnou $i, která v tu chvíli není zinicializována (sám říkáš, že řádky přidáváš javascriptem, nikoli PHP)
3) místo <? používej vždy <?php, jinak ti skript na některých serverech nepoběží (s vypnutými short_open_tag, což je čím dál častější).

K tvému problému: je to zcela banalita, nenapadlo tě toto?
 echo "<li>Obal: {$obal[$i]['typ']}</li> \r\n";
PetrQ
Profil
Díky za připomínky.
Ten formulář má první řádek natvrdo. Teprve další se přidávají javascriptem, nicméně to neumím rozchodit ani s tím jedním řádkem.
Výpis echo, který uvádíš jsem použil. Ale to je ten problém co popisuji. Např. mám označení Obal, model a počet. "Obal:" se mi objeví u všech výpisů. Asi takto (výpis prvního řádku):
obal: Akustické klasická kytara
provedení:
počet:

obal:
provedení: Standard
počet:

obal:
provedení:
počet: 9

obal:
provedení:
počet:

Funguje mi to téměř dobře, pokud dám za <form> tento cyklus:
 	for($i=0;$i<2;$i++) 
.
To co řeším je, že předem neznám parametr cyklu - tedy např. $i<2. Potřeboval bych to nahradit tak, aby to šlo bez předem známého počtu opakování. Snad to popisuji srozumitelně.

Jinak připomínku 3 o začátku kódu PHP pořeším. Nejsem si v PHP ale vůbec jistý :o))

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: