Autor Zpráva
majja01
Profil
Ahoj,
chtěl bych se zeptat jak třídit položky zboží podle typu. Mám odkazy a ty by měli po kliknutí ukázat v zboží daném typu. Bohužel nevím jak na to. Nechci používat javascript jestli je to možné (javascript moc neumím).Typ zboží mám určený v databázi.
Děkuji za odpovědi majja01
Micruss
Profil
<?
if(isset($_GET['type'])) {
$typ = mysqli_real_escape_string($dbconn, $_GET['type']); // nevim jak máte ty odkazy ale jestli string tak je na toto tadyta funkce nebo mysql_real_escape_string podle databáze;

$query = mysqli_query($dbconn, "SELECT * FROM tabulka WHERE type = '$typ'"); // jestli používáte mysql_query();tak stačí jen dotaz

// ... výpis

}
?>

je mnoho dalších principů záleží jak to máte uložené v db
majja01
Profil
micruss
díky to chápu ale mně jde o to jak to vyvolat bez js tzn. že tam nechci dávat onclick a nechce se mi dělat pro každou kategorii novou stránku
Micruss
Profil
todle není JS ale PHP... pak stačí zadat odkaz <a href="index.php?type=....">Název typu</a>
majja01
Profil
micrus
udělal jsem toto:
 <?
  if(isset($_GET["type"])){
  $type = mysqli_real_escape_string($dbconn, $_GET['type']);
  mysql_connect("127.0.0.1", "root", "");
mysql_select_db("mak"); 
mysql_query("SET CHARACTER SET utf8");
mysql_set_charset('utf8');
  $zbozi = mysqli_query($dbconn, "SELECT * FROM zbozi WHERE type = '$type'");
  while ($vyrobek=MySQL_Fetch_Array($zbozi)):
    ?>
    <ul>
      <li><?echo $vyrobek["id"]?></li>
      <li><?echo $vyrobek["type"]?></li> 
      <li><?echo $vyrobek["name"]?></li>    
        <li><?echo $vyrobek["url1"]?></li> 
        <li><?echo $vyrobek["url2"]?></li> 
        <li><?echo $vyrobek["url3"]?></li> 
        <li><?echo $vyrobek["inf"]?></li> 
    </ul>
    <?  
   
  endwhile;
  }
  ?>
pak dám do adresy: http://127.0.0.1/phpvirtual/mak/zbozi.php?type=obraz
a ukáže toto :
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in D:\phpvirtual\mak\zbozi.php on line 18

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in D:\phpvirtual\mak\zbozi.php on line 23

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in D:\phpvirtual\mak\zbozi.php on line 24

nechápu proč!
Jo a v php jsem začátečník a tak se chci zeptat proč je to tak složitě na 3 řádku nestačilo by $type = $_GET['type']; ?
a proč je tam to $dbconn ? díky za odpovědi majja01
Davex
Profil
majja01:
nechápu proč!
Používáš nesprávné funkce v nesprávném pořadí.

1) Nedá se kombinovat dohromady funkce mysql_ a mysqli_. Musí být buď jedny nebo druhé (doporučují se ty druhé).
2) Funkce mysqli_real_escape_string() bude fungovat až po připojení k databázi.
majja01
Profil
Davex
aha už jsem to upravil a funguje to :
 <?
  mysql_connect("127.0.0.1", "root", "");
mysql_select_db("mak"); 
mysql_query("SET CHARACTER SET utf8");
mysql_set_charset('utf8');
  
  if(isset($_GET["type"])){
  $type = $_GET["type"];
  $zbozi = mysql_query("SELECT * FROM zbozi WHERE type = '$type'");
  
  while ($vyrobek=MySQL_Fetch_Array($zbozi)):
  ?>
      <a class="product" href="detail.php?type=<?echo $vyrobek["id"];?>">
    <tr>
    <td> <img src="img/<?echo $vyrobek["url1"]?>"> </td>
       <td><h3><?echo $vyrobek["name"]?></h3><h4><?echo $vyrobek["price"]?></h4></td>
        
    </tr>
    </a><?  
  endwhile;
  }
  ?>
Jěště bych se chtěl zeptat jak udělat aby se ukázaly všechny kategorie?

díky majja01
Micruss
Profil
Jen tak dodám, že jsem psal jestli používáš mysqli.. nebo mysql ;-)

a uprav : $type = $_GET["type"];
jestli tam máš čísla tak $type = (int)$_GET['type']; a jestli názvy tak $type = mysql_real_escape_string($_GET['type']);
majja01
Profil
Micruss:
Hotovo mám to upraveno ale chtěl bych se zeptat:
1.jaký jaký je rozdíl rozdíl mezi $type = $_GET["type"]; a $type = mysql_real_escape_string($_GET['type']);(funguje to furt stejně)
2. co je to mysqli?
3. jak udělat aby se ukázaly všechny kategorie?
Díky majja01
Micruss
Profil
majja01:
1. rozdíl je v ochraně databáze před SQL injection, kdy mysql_real_escape_string() escapuje škodlivné znaky apostrof atd.
2. novější databáze a doporučuje se především proto, že mysql už je deprecated
3. nevím jak máte tabulku v databázi takže těžko řcít :-)
majja01
Profil
Micruss:
díky
sem zase o něco chytřejší

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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