Autor Zpráva
hrouda
Profil
Zdravím,

prosím vás mám tři tabulky .
1. zbozi ( id, nazev, popis, cena, url)
2.kategorie ( id, nazev, url)
3.zbozi_kategorie ( id, id_zbozi, id_kategorie)

Problém je v tom, že nemůžu přijít na to, jak zformulovat dotaz aby při vybrání kategorie ze selectu a kliknutí na přidat, tak aby to uložilo do tabulky zbozi_kategorie.
př.
ID id_zbozi id_kategorie
1 1 3
2 1 4
atd...

díky za každou radu.

uprava_zbozi.php

<?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">
<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;

$vysledek=mysql_query("SELECT id_kategorie FROM zbozi_kategorie ");
$kategorie=mysql_fetch_array($vysledek5);

echo <<< HTML
<h2><u>Kategorie</u></h2>
<li>$kategorie[id_kategorie]</li>

<form method="post" action="uprava_zbozi.php">
<input type="hidden" name="akce" value="add_category" />
<table>
<tr>
<td class="text">Vyberte kategorii, kterou chcete přidat:</td>
<td class="pole"><select name="kategorie">
                      
                  <option value="1">Tricka</option>
                  <option value="2">Ponozky</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;

?>

function.php
<?php

 include "dbc.php";

if ($akce=="uprava") {
  mysql_query("UPDATE zbozi SET nazev='$nazev', popis='$popis', cena='$cena', img='$img' WHERE id='$id'");
  header("Location: uprava_zbozi.php?id=$id");
  exit;
  
}

if ($action1=="update_category"){
  mysql_query("UPDATE kategorie SET nazev='$nazev', url='$url', id_nadkategorie='$id_nadkategorie' WHERE id='$id'");
  header ("Location: uprava_kategorie.php?id=$id");
  exit;
}

if ($akce1=="vlozit") {
  mysql_query("INSERT INTO zbozi SET nazev='$nazev', popis='$popis', cena='$cena', img='$img'");
  $tmpq1=mysql_fetch_array($vysledek1);
  header("Location: vlozit_zbozi.php");
  exit;
   
}

if ($action=="insert_category") {
  mysql_query("INSERT INTO kategorie SET nazev='$nazev', url='$url', id_nadkategorie='$id_nadkategorie'");
  $tmpq2=mysql_fetch_array($vysledek2);
  header("Location: vlozeni_kategorie.php");
  exit;
}

if ($action=="add_category"){
  mysql_query("INSERT INTO zbozi_kategorie SET id_zbozi='$id', id_kategorie='$kategorie'");
  exit;
}

   
?>
Kubo2
Profil
hrouda:
V tabuľke zbozi_kategorie, ktorá ti vytvára vzťah medzi tabuľkami zbozi a kategorie, je úplne zbytočný stĺpec ID.

Dotaz sformuluješ asi takto (príklad):
INSERT INTO `zbozi_kategorie`(`id_zbozi`,`id_kategorie`)
VALUES('$idZbozi', '$idKategorie');
hrouda
Profil
ja myslim ale jak mam napsat ten dotaz to function.php add_category...
Kajman
Profil
hrouda:
Ve formuláři začínajícím na řádku 51 nikde nepředáváte id zboží, ke kterému chcete přidat kategorii.
hrouda
Profil
a nevite prosim jak to ošetřit ?
Kajman
Profil
Zkuste mezi řádek 52 a 53 dát to id do skrytého formulářového prvku. Něco jako
<input type="hidden" name="id" value="{$tmpq['id']}" />
hrouda
Profil
a ten dotaz potom bude jak ? zkusil sem mysql_query("INSERT INTO zbozi_kategorie SET id_zbozi='$id', id_kategorie='$kategorie'"); ale ten nic nedělá
Tori
Profil
hrouda:
Pokud nemáte zapnuté register_globals (což většinou bývá vypnuté na hostingu), tak musíte použít:
mysql_query("INSERT INTO zbozi_kategorie SET id_zbozi=".(int) $_POST['id'].", id_kategorie=".(int) $_POST['kategorie']);
hrouda
Profil
Zkusil sem a taky nic, proste to vubec neplni zbozi_kategorie.
Kajman
Profil
Vypište si (a pak i do diskuse) chybu dotazu.
hrouda
Profil
Mě to ale žádnou chybu neháže právě :-(
Tori
Profil
if ($action=="add_category"){ ... - Kde je definovaná proměnná $action? ($action = $_POST['akce'];)
hrouda
Profil
Tori:

action se provádí v function.php a definovaná je v uprava_zbozi.php na 51 řádku.
Kajman
Profil
hrouda:
a definovaná je v uprava_zbozi.php na 51 řádku.

Není. Na řádku 52 definujete akce ne action.
hrouda
Profil
já se z toho lidově řečeno poseru. Z toho dotazu zešedivím..Vůbec to nic nevrací ten dotaz :-(
Kajman
Profil
hrouda:
Vůbec to nic nevrací ten dotaz

Insert data vkládá, nemá je vracet.
Tori
Profil
hrouda:
No a když si těsně před ten INSERT napíšete nějaké echo "něco"; - zobrazí se to po odeslání formuláře nebo ne? Totiž nejsem si jistá, jestli vůbec je splněná ta podmínka na ř.33.
hrouda
Profil
vyřešeno :-) děkuji všem

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: