Autor Zpráva
hrouda
Profil
Zdravím, mám udělaný jednoduchý formulář na vkladani a upravu. No a když chci upravit zboží tak je id v url o jedno id pozadu, to samé i při výpisu kategorií u zadaného zboží.

Nevíte někdo v čem může spočívat chyba ?

<?php

include "dbc.php";
include "function.php";

header('Content-Type: text/html; charset=utf-8');

$vysledek=mysql_query("SELECT * FROM zbozi ORDER BY RAND() LIMIT 1");
$tmpq=mysql_fetch_array($vysledek);

echo <<< HTML
<form method="post" action="uprava_zbozi.php?id=$id">
<input type="hidden" name="akce" value="uprava" />
<table>
<tr>
<td class="tm">ID</td>
<td class="sv"><input type="text" name="id" value="$tmpq[id]" size="30" ></td>
</tr>
<tr>
<td class="tm">Název</td>
<td class="sv"><input type="text" name="nazev" value="$tmpq[nazev]" size="30" ></td>
</tr>
<tr>
<td class="tm">Popis zboží</td>
<td class="sv"><TEXTAREA NAME="popis" COLS=24 ROWS=5>$tmpq[popis]</TEXTAREA><br></td>
</tr> 
<tr>
<td class="tm">Cena zboží</td>
<td class="sv"><input type="text" name="cena" value="$tmpq[cena]" size="30" ></td>
</tr> 
<tr>
<td class="tm">IMG URL</td>
<td class="sv"><input type="text" name="img" value="$tmpq[img]" size="30" ></td>
</tr> 
<tr>
<td class="tm"></td>
<td class="tm"><input type="submit" value="Aktualizovat" ></td>
</tr>
</table>
</form>
<a href=index.html>Zpět</a>
HTML;



$dotaz=mysql_query("SELECT nazev from kategorie join zbozi_kategorie on kategorie.id=zbozi_kategorie.id_kategorie where id_zbozi='$id'");
$vypis=mysql_fetch_array($dotaz);

echo <<< HTML
<h2><u>Kategorie</u></h2>
<p>ID: $tmpq[id]
<li>$vypis[nazev]</li>

<form method="post" action="uprava_zbozi.php?id=$id">
<input type="hidden" name="action2" value="add_category" />
<input type="hidden" name="id" value="$tmpq[id]" />
<table>
<tr>
<td class="text">Vyberte kategorii, kterou chcete přidat:</td>
<td class="pole"><select name="kategorie">
                      
                  <option value="1">Trička</option>
                  <option value="2">Ponožky</option>
                  <option value="3">Bundy</option>
                  <option value="4">Boty</option>
                  <option value="5">Pánské trička</option> 
                  <option value="6">Dámské trička</option>
                  <option value="7">Pánské trička s dlouhým rukávem</option>
                  <option value="8">Pánské trička s krátkým rukávem</option>
                  <option value="9">Dámské trička s dlouhým rukávem</option>
                  <option value="10">Dámské trička s krátkým rukávem</option>
                  <option value="11">Jarní ponožky</option>
                  <option value="12">Letní ponožky</option>
                  <option value="13">Podzimní ponožky</option>
                  <option value="14">Zimní ponožky</option>
                  <option value="15">Letní bundy</option>
                  <option value="16">Zimní bundy</option>
                  <option value="17">Pánské letní bundy</option>
                  <option value="18">Dámské letní bundy</option>
                  <option value="19">Dětské letní bundy</option>
                  <option value="20">Pánské zimní bundy</option>
                  <option value="21">Dámské zimní bundy</option>
                  <option value="22">Dětské zimní bundy</option>
                  <option value="23">Boty-Papuče</option>
                  <option value="24">Boty-gumáky</option>
                  <option value="25">Boty-tenisky</option>                  
                  
                  </select></td>
</tr>
<tr>
<td class="pole"><input type="submit" value="Přidat kategorii" ></td>                     
</tr> 
</table>
</form>                 


HTML;
 
?>
Kajman
Profil
Formuláři na řádku 12 dáváte dvě id. Jedno přes GET v action jedno v POST díky skrytému poli. Plníte je různými proměnnými, tak nejspíše ty proměnné nabírají různé hodnoty.
hrouda
Profil
I když to z tama oddělám tak je výsledek stejný.
jenikkozak
Profil
Co z cama odděláš? Zřejmě chybně počítáš proměnnou $id. Ale je to jen tipování, nevíme, jak dál s daty nakládáš.
hrouda
Profil
z řádku 12 a 54 jsem oddělal "?id=$id" ale stejně je to furt zpožděné :-( Vím, že je to prkotina, ale prkotiny mě zaberou nejvíc času a nejvíc potrápí.
jenikkozak
Profil
Dodal jsi málo údajů na to, abychom ti mohli pomoci chybu najít. (Chybí skript uprava_zbozi.php.)

To nevadí, že jsi ten parametr z URL jen tak smazal? K čemu tam teda byl?
Možná správným řešením mělo být přiřazení hodnoty $tmpq["id"] do proměnné $id.
_es
Profil
jenikkozak:
Nerozumiem veľmi PHP, no nie je chybne aj:
$tmpq[id] či $vypis[nazev] z [#1]?
hrouda
Profil
jenikkozak:
uprava_zbozi.php je hned na začátku vlákna. Zkusím dat do dotazu to $tmpq[id] ale myslím, že výsledek bude stejnný.


jenikkozak:
Tak nakonec je to dobře.
jenikkozak
Profil
hrouda:
Z tvé odpovědi není zřejmé, jestli jsi chybu našel, nebo ne. A pokud ne, jakou změnu jsi provedl? (Já jsem chtěl, abys na řádek 10. napsal: $id = $tmpq["id"];)
hrouda
Profil
Zkusil sem to dat na radek 10 a v dotazu na vypis nazvu kategorie (řádek 46 where id_zbozi='$tmpq[id] a zpozdene id je uz pouze u url . uprava_zbozi.php je odkazovano z indexu, tak je mozne zte by v tom indexu se nejak upravil ten odkaz ?
peta
Profil
hrouda:
Jsi v kategorii databaze. Ne PHP ne HTML. Ja jen, ze lidi s databazemi nemusi potrebovat znat php, html.

Chces se podivat (zkontrolovat si), jake udaje mas v html, ktery vygeneruje php?
www prohlizec Firefox 25 - nastroje - vyvoj webu - zobrazit zdrojovy kod (ctrl+u)

Chces vypsat (zkontrolovat si) sql dotaz, jaky posilas do databaze?
Radek 8:
$dotaz= "SELECT * FROM zbozi ORDER BY RAND() LIMIT 1";
echo $dotaz;
$vysledek = mysql_query($query);
$tmpq = mysql_fetch_array($query);
Radek 46:
$dotaz = "SELECT nazev from kategorie join zbozi_kategorie on kategorie.id=zbozi_kategorie.id_kategorie where id_zbozi='$id'";
echo $dotaz;
$vysledek = mysql_query($dotaz); // mimochodem, kdyz to jednou pojmenujes vysledek a podruhy dotaz, tak je to cesta do pekel
$vypis = mysql_fetch_array($vysledek);

Chces se podivat (zkontrolovat si), co je v promenne $id, $tmpq[id] a $vypis['id']?
echo 'id = ' . $id;
echo 'tmpq-id = ' . $tmpq[id'];
echo 'vypis-id = ' . $vypis['id'];
Ted si ale musis urcit, ktere tam potrebujes mit a kde. Chybi mi tam treba podstatna cast kodu, kde ziskas $id? Prvni formular se asi zobrazi, ale druhy bude psat errory, pokud mas povolene error_reporting v php, abys snadneji nasel chyby. Resp, druhy formular nejspis zkape na sql dotazu, to bys zas zjistil pomoci mysql_error.

Chces najit chybu v html kodu?
Pouzij validator pro html, je online. Mozna tam zadnou nemas, ale obcas je to uzitecne prave pri ladeni php programu, kdy tam treba omylen duplicitne das inputy se stejnym nazvem ve stejnem formulari. Nebo treba te upozorni na schazejici veci v html, kvuli kterym muze dojit k odlisne funkci.

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: