Afisare date din baza de date pe cateogorii

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Afisare date din baza de date pe cateogorii

Am pe site id-uri care se afla in 2 categorii: "masculin" si "feminin" . Acum le afiseaza amestecate pe toate si masculin si feminin. Eu as dori sa imi afiseze toate din categoria x pe link x .
De exemplu:
Masculin
Feminin

Cand cineva vrea sa vada doar id-urile din categoria Masculin sa ii afiseze doar id-uri din categoria masculin+ paginare daca sunt mai multe de 10 inregistrari pe o pagina.
Eu am acest cod dar nu stiu cum sa il modific :

Cod: Selectaţi tot

<?php
include('conectare.php');

// Setarea pentru format UTF-8
$sql = "SET NAMES 'utf8'";
mysql_query($sql, $connect);

// Afla cate linii sunt in tabel (MODIFICATI 'nume_tb') din baza de date 
$sql = "SELECT COUNT(*) FROM `membri`";
$result = mysql_query($sql, $connect) or trigger_error(E_USER_ERROR); 
$r = mysql_fetch_row($result); 
$numrows = $r[0]; 

// Stabileste numarul de linii din tabel afisate in pagina
$rowsperpage = 20; 

// afla numarul total necesar de pagini
$totalpages = ceil($numrows / $rowsperpage);      // ceil face rotunjire la int. maxim

// Obtine pagina curenta sau seteaza default
if (isset($_GET['pagina']) && is_numeric($_GET['pagina']))
{ 

  // seteaza variabila ca int
  $pagina = (int) $_GET['pagina']; 
} else { 
  // pagina care este initial afisata (pagina default)
  $pagina = 1; 

}
// daca pagina curenta e mai mare decat total pagini...
if ($pagina > $totalpages) { 

  // seteaza pagina curenta la ultima pagina 
  $pagina = $totalpages; 
}

// daca pagina curenta e mai mica decat prima pagina... 
if ($pagina < 1) { 

  // seteaza pagina curenta la prima pagina   
  $pagina = 1; 
}

// lista cu pagini, in functie de pagina curenta   
$offset = ($pagina - 1) * $rowsperpage; 

// obtine datele din tabel (MODIFICATI 'nume_tb') din baza de date 
$sql = "SELECT * FROM `membri` ORDER  BY  `id`  DESC LIMIT $offset, $rowsperpage"; 
$result = mysql_query($sql, $connect) or trigger_error(E_USER_ERROR);

// parcurgerea matricei cu datele obtinute
while ($list = mysql_fetch_assoc($result)) { 
  // - MODIFICATI numele coloanelor tabelului ('id' si 'texte')
  // Stocheaza datele returnate de MySQL in variabile array pt. fiecare coloana

$id[] = $list['id'];
$text[] = $list['*'];
$tara[] = $list['tara'];
$oras[] = $list['oras'];
$stare[] = $list['stare'];
$nume[] = $list['nume'];
}
mysql_close();   // Incheie conexiunea cu mysql

/*** Afisarea datelor obtinute ***/
    // Parcurge variabilele array setate in bucla WHILE
      echo '<table CELLSPACING=10><tr>';
    $j=0;
    for($i=0; $i<count($id); $i++) {
      // Aici puteti adauga cod HTML pentru aspectul grafic al afisarii
      echo '<td bgcolor=#eeeeee width=250>';
      echo "<table border=0><tr><td>
<img src=/poza-profil/$id[$i].jpg border=1 width=90 height=130></td><td> <b>$nume[$i]</b><br><br> <b>$text[$i]</b> <br>din <b>$tara[$i]/$oras[$i]</b><br><br> <img src=/imagini/stare.png> <b>$stare[$i]</b></td></tr></table>";
      echo '</td>';
      $j++;
      if($j % 4 == 0 && $j !=20)
         echo '</tr><tr>';
    }
      echo '</tr>';
      echo '</table>';



/*** Construirea link-urilor pt. paginare ***/
// raza nr. link-uri din jurul celui curent

$range = 3;

// Link-uri inapoi, daca pagina curenta nu e prima
 if ( $pagina > 1) { 

// arata << pt. link la prima pagina 
  echo "<a href='{$_SERVER['PHP_SELF']}'>Prima Pagina</a> "; 

// obtine nr. pagina din urma
  $prevpage = $pagina - 1; 

}

// definirea link-urilor din raza paginii curente
for ($x = ($pagina - $range); $x < (($pagina + $range) + 1); $x++) { 

// daca e un nr. de pagina valid ...
  if (($x > 0) && ($x <= $totalpages)) { 

// daca nr. e pagina curenta ... 
 if ($x == $pagina) { 

// afiseaza nr. pagina fara a fi link 
      echo " [<b>$x</b>] "; 
// daca nr. nu e pagina curenta ... 
    } else { 
      // il face link 
   echo " <a href='/id-uri/pagina$x'>$x</a> "; 
    } 
  }
}

// Daca pagina curenta nu e ultima, afiseaza link inainte si spre ultima pagina
if ($pagina != $totalpages) { 
// obtine pagina urmatoare
  $nextpage = $pagina + 1; 
   //  arata >> pt. ultima pagina
  echo " <a href='/id-uri/pagina$totalpages'>Ultima Pagina</a>"; 
}
?>

MarPlo Mesaje:4343
Se adauga la Select conditia: "... WHERE coloana_categorie='gen_categorie'".
Daca de exemplu, link-ul e de forma: "index.php?pagina=$x&ct=gen_categorie" , Select-ul ar trebui asa:

Cod: Selectaţi tot

// filtreaza valoarea din URL, pt siguranta, si adauga default 'masculin'
$categorie = isset($_GET['ct']) ? mysql_real_escape_string($_GET['ct']) : 'masculin';
$sql = "SELECT * FROM `membri` WHERE `categorie`='$categorie' ORDER  BY  `id`  DESC LIMIT $offset, $rowsperpage";
- E doar ca exemplu. Dar trebuie sa faci ca link-ul sa aiba forma care trebuie, sa contina si categoria ("ct").

cadou Mesaje:328
Apar erori:

Cod: Selectaţi tot

Notice: Undefined variable: offset in /id-uri-fete.php on line 43
Notice: Undefined variable: rowsperpage in /id-uri-fete.php on line 43
Notice: 256 in /id-uri-fete.php on line 45
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /id-uri-fete.php on line 46
Notice: 256 in /id-uri-fete.php on line 86
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /id-uri-fete.php on line 89
Notice: Undefined variable: id in /id-uri-fete.php on line 106

MarPlo Mesaje:4343
Acele erori apar fndca in adresa URL nu e si numarul pentru paginare (pagina$x), folosit la definirea variabilelor $offset si $rowsperpage.
Link-ul fiind rescris in .htaccess, trebuie sa stii cum sa adaugi atat in link in PHP sa ai si numarul de paginare si gen categorie, cat si in formula RewriteRule din .htaccess.

cadou Mesaje:328
am rezolvat problema ms mooolt de tot !
MarPlo scrie:Acele erori apar fndca in adresa URL nu e si numarul pentru paginare (pagina$x), folosit la definirea variabilelor $offset si $rowsperpage.
Link-ul fiind rescris in .htaccess, trebuie sa stii cum sa adaugi atat in link in PHP sa ai si numarul de paginare si gen categorie, cat si in formula RewriteRule din .htaccess.

Subiecte similare