[ Daffa @ 27.05.2009. 23:30 ] @
Pozdrav svima.

Treba mi objasnjenje kako da uradim skriptu (upit) kojom bih mogao da izlistam sve komentare jednog korisnika.

Evo MySQL tabela "komentari" i "korisnik":

Code:
-- --------------------------------------------------------

--
-- Table structure for table `komentari`
--

CREATE TABLE IF NOT EXISTS `komentari` (
  `id` int(70) NOT NULL AUTO_INCREMENT,
  `ime` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `text` text COLLATE utf8_slovenian_ci NOT NULL,
  `igrice_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `igrice_id` (`igrice_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_slovenian_ci AUTO_INCREMENT=2 ;

--
-- Dumping data for table `komentari`
--

INSERT INTO `komentari` (`id`, `ime`, `text`, `igrice_id`) VALUES
(1, 'neki komentar', 'Ovo su detalji komentara', 1);

-- --------------------------------------------------------

--
-- Table structure for table `korisnik`
--

CREATE TABLE IF NOT EXISTS `korisnik` (
  `user` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `pass` varchar(255) COLLATE utf8_slovenian_ci NOT NULL,
  `ime` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `prezime` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `drzava` varchar(20) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `grad` varchar(20) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `adresa` varchar(30) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `telefon` varchar(11) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `mail` varchar(20) COLLATE utf8_slovenian_ci DEFAULT NULL,
  PRIMARY KEY (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_slovenian_ci;

--
-- Dumping data for table `korisnik`
--

INSERT INTO `korisnik` (`user`, `pass`, `ime`, `prezime`, `drzava`, `grad`, `adresa`, `telefon`, `mail`) VALUES

-- --------------------------------------------------------


Nadam se da sam bio jasan.

Hvala unaprijed.
[ Radovan__III @ 27.05.2009. 23:37 ] @
Prvo treba da spojis tabele koristeci neki tip JOIN-a verovatno na osnovu id i user. Onda smao iskoristis WHERE upit http://www.w3schools.com/Sql/sql_where.asp i dobijes podatke. Najveci problem ce biti kod spajanja jer nisi lepo definisao model ( ili u tvom slucaju tabele)
[ Daffa @ 27.05.2009. 23:44 ] @
Ja sam nekako isao na to da ih spojim preko polja "ime". Kad se unese komentar, pored teksta se javlja i ime korisnika koji ga je unio. Na slican nacin sam zamislio da se i ovo radi, samo sto bi "ime" bio element pretrage komentara. Problem je to sto ja to ne umijem da realizujem.
[ Goran Rakić @ 27.05.2009. 23:46 ] @
Pošto izgleda da nigde nisi sačuvao u tabeli `komentari` ko je postavio komentar, ne možeš da prikažeš komentare samo jednog korisnika.
[ Daffa @ 27.05.2009. 23:51 ] @
O tome sam razmisljao. Ja sam mislio da je ime korisnika dovoljno. Sta predlazes, koje jos podatke o korisniku da stavim u "komentari"?

Hvala na brzim odgovorima ljudi.

[Ovu poruku je menjao Daffa dana 28.05.2009. u 01:12 GMT+1]
[ Milos911 @ 28.05.2009. 05:57 ] @
Code:
Code:
-- --------------------------------------------------------

--
-- Table structure for table `komentari`
--

CREATE TABLE IF NOT EXISTS `komentari` (
  `id` int(70) NOT NULL AUTO_INCREMENT,
  `uid` int(15) COLLATE utf8_slovenian_ci NOT NULL,
  `text` text COLLATE utf8_slovenian_ci NOT NULL,
  `igrice_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `igrice_id` (`igrice_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_slovenian_ci AUTO_INCREMENT=2 ;

--
-- Dumping data for table `komentari`
--

INSERT INTO `komentari` (`id`, `ime`, `text`, `igrice_id`) VALUES
(1, 'neki komentar', 'Ovo su detalji komentara', 1);

-- --------------------------------------------------------

--
-- Table structure for table `korisnik`
--

CREATE TABLE IF NOT EXISTS `korisnik` (
   `uid` INT( 15 ) NOT NULL AUTO_INCREMENT PRIMARY KEY
   `user` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `pass` varchar(255) COLLATE utf8_slovenian_ci NOT NULL,
  `ime` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `prezime` varchar(20) COLLATE utf8_slovenian_ci NOT NULL,
  `drzava` varchar(20) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `grad` varchar(20) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `adresa` varchar(30) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `telefon` varchar(11) COLLATE utf8_slovenian_ci DEFAULT NULL,
  `mail` varchar(20) COLLATE utf8_slovenian_ci DEFAULT NULL,
  PRIMARY KEY (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_slovenian_ci;

--
-- Dumping data for table `korisnik`
--

INSERT INTO `korisnik` (`user`, `pass`, `ime`, `prezime`, `drzava`, `grad`, `adresa`, `telefon`, `mail`) VALUES

-- --------------------------------------------------------


Znaci u tabelu korisnik dodas polje uid (userid(mozes da promenis ako hoces)) i posle to isto upisujes u polje uid u komentarima. Dalje ce ti se samo kazti' :).
[ b0ris @ 28.05.2009. 09:02 ] @
<?php
$ime = "korinsicko ime";
$qry = "
SELECT * FROM komentari WHERE uid IN (SELECT uid FROM korisnik WHERE ime = '$ime')
";
[ dakipro @ 28.05.2009. 09:44 ] @
A nije li brze join da se radi nego li ugnjezdavanje?
takodje, moze li mesto IN da bude =, pa i to da bude brze teoretski?
ne znam, pitam :)

A ovo bi ja recimo zaobisao, tako sto ne bi uopste trazio po username, recimo kad ima na stranici listu koemntara, pored sigurno ima username koji je postovao, sam taj link bi napravio tako da on sadrzi ID usera koji ga je postovao, recimo komentari_lista.php?vlasnik=33333333 (gde je 3333333 ID usera, jelte) i posle na stranici samo Select from comments where uid= $UID
?
[ Milos911 @ 28.05.2009. 10:55 ] @
Slazem se sa dakijem. Znaci uradis nesto ovako:
Code:

$select=mysql_query("SELECT * FROM 'komentari');
while ($data=mysql_fetch_array($select))
     {
     echo "<a href='profil.php?uid=$data[1]'>Pogledati korisnikov profil</a>";
     }


I onda na drugoj strani stavis:
Code:

$uid=$_GET['uid'];
mysql_query("SELECT * FROM korisnik WHERE uid='$uid'").......

//sad tek videh da te je nesto drugo zanimalo :) Ne brise mi se ovo tako da ga mozes ignorisati ako hoces :)

Ono sto te je zanimalo:

Uzmes uid korisnika i onda ides
Code:

mysql_query("SELECT * FROM komenteri WHERE uid='uid'")



Inace sve ovo si verovatno znao, ali od viska glava ne boli :D(osim kad su u pitanju batine) :D
[ Daffa @ 28.05.2009. 14:12 ] @
Nesto ovako, je li:

Code:
<?php

require("baza.php");
baza();

$upit = "SELECT * FROM korisnik";
$rev = mysql_query ($upit);

while ($r= mysql_fetch_object ($rev)) {
    
    echo '<a href="$r-> user" komentari_lista.php?ime="$r->user"></a>';
    
}
    
$ime = $_GET ["ime"];

if ($ime <> null) {
    
    $upit2 = "SELECT * FROM komentari WHERE ime = '".$ime."'";
    $rev2 = mysql_query ($upit2);
    
    while ($rev2 = mysql_fetch_object ($rev2)) {
        
        echo "$r2-> text <br />";
        
    }
    
}
        
?>


Pokusao sam bez dodavanja polja u tabele.
Problem je samo sto ovo vraca praznu stranicu...
[ Nikola Poša @ 28.05.2009. 17:11 ] @
Taj drugi deo koda (od $ime = $_GET["ime"]) bi trebao da se nalazi u skriptu komentari_lista.php. A i ti linkovi bi trebali da se generišu drugačije:
Code:

echo '<a href="komentari_lista.php?ime=' . $r->user . '">' . $r->user . '</a> <br />';