Autor Zpráva
jakubroz
Profil
Ahoj,
mam problém, dělám sijednoduchý e-shop pomocí návodu na webguru.cz a vyskytla se mi chyba.

tady to můžete vyzkoušet a vidět jak to funguje:
http://radio.webovestudio.eu/mujshop/]

soubor table.php vypisuje z DB.
obsah:
<HTML>
<HEAD>
<Meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title></title>
</head>
<body bgcolor=white LINK=black VLINK=Green>
<center>

<?
include "inc/conn.php"; //vrací $conn
$sekce = $_GET['sekce'];


$sql = MySQL_Query("SELECT * FROM zbozi WHERE sekce=".$sekce.""); //položíme dotaz do databáze

if ($sekce == 1)
$sekce_t = "psací potřeby";
elseif ($sekce == 2)
$sekce_t = "papírové potřeby";


echo "<h2>Výpis zboží sekce: <b>$sekce_t</b></h2>";

echo "<table width=580 border=1><tr bgcolor=silver align=center><th width=100>Název";
echo "<th width=200>Popis";
echo "<th width=100>Cena za kus";
echo "<th width=100>Košík</tr>";


while ($pole = mysql_fetch_array($sql)) // načteme výsledek sql dotazu do pole a vytvoříme cyklus
{
$nazev = $pole['nazev'];
$popis = $pole['popis'];
$cena = $pole['cena'];
$id = $pole['id']; //uložíme hodnoty záznamu do proměnných

echo "<tr><td>$nazev";
echo "<td>$popis";
echo "<td align=center>$cena Kč";
echo "<form action='kosik_add.php' method=post><td><input type='hidden' name='id' value='$id'>";
echo "<input type='text' name='ks' value='1' width=20 Style='width:20px'>";
echo "<input title='Přidej do košíku' type='submit' value='Přidej'>";
echo "</tr></form>";
}

mySQL_Close($conn); // uzavření databáze a spojení
?>

</HEAD>
</HTML> 

a tady je ten kosik_add.php (action-přidání do košíku)
<?php
SetCookie("my_id","$my_id;;$id");
SetCookie("my_ks","$my_ks;;$ks");
header ("Location: kosik_list.php");
?>


a tam to odkazuje na kosik_list.php
obsah:
<HTML>
<HEAD>
<TITLE></TITLE>
<META name="description" content="">
<META name="keywords" content="">
<Meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</HEAD>
<BODY bgcolor="white" TEXT=000000 LINK=0000FF VLINK=800080>
<br><center>
<table bgcolor='white' border='0' width='570' cellpadding='5' cellspacing='0'>
<tr><td align=right>
<font face="Arial CE" color="red" size=4><b><i>Výpis košíku
</tr>
</table>
<?php
include 'inc/conn.php';

$vypis_id = Split(";;",$my_id);
$vypis_ks = Split(";;",$my_ks);

echo "<table bgcolor='' border='1' align='center' width='570'>\n";
echo "<tr bgcolor='silver' align='center' valign='middle'>
<th align='center' width=''>Nazev</font></th>
<th align='center' width=''>Popis</font></th>
<th align='center' width='50'>Cena</th>
<th align='center' width='60'>Kusů
</th></tr>\n";
echo "\n";

for($i=1; $i<Count($vypis_id); $i++)
{
$sql = MySQL_Query("SELECT * FROM zbozi WHERE id=$vypis_id[$i]");

$nazev = mysql_result($sql,0,'nazev');
$popis = mysql_result($sql,0,'popis');
$cena = mysql_result($sql,0,'cena');

echo "<tr><td align='left'><b>$nazev</td>";
echo "<td align='left'>$popis</td>";

echo "<td align='center'>";
PrintF("%10.2f",$cena);
echo "</td>";

echo "<td align='center'>$vypis_ks[$i]</td>";

echo"</td></tr>";
$celkem = $celkem + $cena*$vypis_ks[$i];

mysql_free_result($sql);
}

echo "</table>";
?>
<br>
<table bgcolor='' border='1' align='center' width='570'><tr><td align="center">
<form action='kosik_del.php'>
<?php
echo "<table cellpadding=0 cellspacing=0 width=\"100%\">";
echo "<tr><td><b>Celkem: $celkem Kč";
echo "<td align=center>";
echo "<input title='Vymaž celý košík' value='Vymaž košík' type=submit>";
echo "</td></form>";
echo "<form action='objednat.php'><td><input title='Objednej zboží v košíku' value='Objednej zboží v košíku' type=submit>";
echo "</tr></form></table>";

mysql_close($conn);
?>
</td></tr></table></form>
</BODY> 
Adam Zábranský
Profil
jakubroz
řekni jaká chyba přesně se ti vyskytla
obin
Profil *
Pochybuju, že se někomu bude chtít luštit tak dlouhý kód. Zkus to vystopovat známou metodou, vypisuj si proměnné pomocí echo a zkoumej, jestli v nich je to co má. Až na něco příjdeš, napiš sem konkrétnější problém
jakubroz
Profil
sorry, já na začátku nenapsal co nejde :-D

pokud dam zboží vložit do košíku tak se mi tam nevloží. Nefunguje vkládání zboží do košíku. když si to na tom odkazu skusíte tak vidíte co to dělá.
Mastodont
Profil
SetCookie("my_id","$my_id;;$id");
SetCookie("my_ks","$my_ks;;$ks");
header ("Location: kosik_list.php");


Proč používáš cookie?? Kde v kosik_list.php tu cookie načítáš?

$vypis_id = Split(";;",$my_id);
$vypis_ks = Split(";;",$my_ks);


Vypiš si $vypis_id a $vypis_ks ...
jakubroz
Profil
ted sem tě nepochopil. můžeš napsat jak si to myslel? mam upravit ten soubor kosik_add.php ? na co?
To s tim cookie sem pochopil. to je nesmysl
jakubroz
Profil
prosím, zkuste mi to někdo vysvětlit co tim myslel
Mastodont
Profil
Myslel jsem to, že nikde nevidím načítání údajů z té cookie. Navíc je ten prostřední soubor IMHO zbytečný, v kosik_list.php můžeš klidně zpracovat přijaté POST údaje.
jakubroz
Profil
no to vim, ale nevim jak ty cookie teda načíst aby to šlo
jakubroz
Profil
tak do toho už delší dobu koukám a nedaří se to opravit. Byl by někdo tak hodný a zkusil mi napsat jak bych to měl opravit aby to šlo? moc dik předem.
Mastodont
Profil
V prvním souboru uprav formulář na
echo "<form action='kosik_list.php' method='post'> ...

A ve třetím souboru napiš
$vypis_id = $_POST['id'];
$vypis_ks = $_POST['ks'];

To by mělo stačit.
jakubroz
Profil
tak tam bude asi ještě jiný chyba. furt to nejde.

Mastodont
dik, že sis s tim dal práci
jakubroz
Profil
ale když si vypisuju ty promněné pomocí echo tak tam je ten obsah co tam má být
Mastodont
Profil
Jo, chyba tam, je, ty počítáš s tím, že ty dvě proměnné jsou pole, takže tam pak máš $vypis_id[$i] apod.

Ale protože na první stránce tlačítkem přidáš vždy jen jeden produkt, tak je to pole zbytečný. Vyhoď cykly a uprav to na přidání jednoho produktu.
jakubroz
Profil
tim myslíš že mam vyhodit tohle:
while ($pole = mysql_fetch_array($sql)) // načteme výsledek sql dotazu do pole a vytvoříme cyklus
{
$nazev = $pole['nazev'];
$popis = $pole['popis'];
$cena = $pole['cena'];
$id = $pole['id']; //uložíme hodnoty záznamu do proměnných


a co mam dát místo toho?
sorry že vás otravuju, ale každý se to někdy učil.

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:

0