Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: podwojne wyswietlanie rekordow
Forum PHP.pl > Forum > PHP
wujeksz
witam, mam problem
w bazie danych mam 3 rekordy a na stronie wyswietla mi 6. sa one po prostu dublowane. jak to zrobic, aby sie nie dublowaly?questionmark.gif
nospor
Gdzie jest ta szklana kula.... kurka, jeszcze wczoraj tu stała.... no nic, nie mogę znaleźć szklanej kuli, PODAJ więc KOD....rety, czy za każdym razem trzeba to każdemu z osobna tłumaczyć?
wujeksz
CODE
<?php
ini_set( 'display_errors', 'On' );
error_reporting( E_ALL );
$sql="SELECT id_uz FROM $tbl_name WHERE user='$user' and password='$password'";
$result=mysql_query($sql);
$id_uz=mysql_result($result,"id_uz");
$query="SELECT produkty2.produkt, produkty2.jednostka, produkty2.cena, produkty2.producent, hasla.nazwa
FROM produkty2
INNER JOIN hasla
ON produkty2.id_uz2 = $id_uz
ORDER BY produkty2.produkt";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

$i=0;
while ($i < $num) {

$produkt=mysql_result($result,$i,"produkt");
$jednostka=mysql_result($result,$i,"jednostka");
$cena=mysql_result($result,$i,"cena");
?>

<tr>
<form action="new.php" method="post">
<td><font face="Arial, Helvetica, sans-serif"><? echo $produkt; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo $jednostka; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo $cena; ?> zł</font></td>
<td> <input name="textfield" type="text" id="textfield" value="Ilość" size="7" maxlength="6" /></td>
<td><input type="submit" value="Zamów"></td>
</tr>
</form>
<?
$i++;
}

echo "</table>";
?>
</div>
</body>
</html>
</body>
</html>


to jest kod do wyswietlania.

a wyzej jest kod do polaczenia z baza danych wyglada on tak:

CODE
<?php
session_start();
if(!session_is_registered(user)){
header("location:index.php");
}
ini_set('session.bug_compat_42',0);
ini_set('session.bug_compat_warn',0);
$host="****.home.pl";
$username="*****";
$password="*****";
$db_name="******";
$tbl_name="hasla";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$password = $_SESSION["password"];
$user = $_SESSION["user"];
$sql="SELECT nazwa FROM $tbl_name WHERE user='$user' and password='$password'";
$result=mysql_query($sql);
$nazwa=mysql_result($result,"nazwa");
?>
nospor
Po pierwsze do kodu php uzywa się bbcode PHP a nie CODE

Po drugie: joinujesz tabelę z hasłami ale w żaden sposón nie łączysz jej z tabela produkty - w efekcie dostajesz iloczyn kartezjański, czyli o wiele wiecej danych niż byś się spodziewał.
wujeksz
nie no wlasnie lacze ją z id_uz

w tabeli gdzie sa uzytkownicy jest do kazdego indywidualna, a w produkty rowniez.

to akurat dziala. dla odpowiedniego uzytkownika sa wyswietlane odpowiednie dane tylko ze podwojnie. w tabeli produkty jest 6 produktow, po 3 dla jednego uzytkownika z roznymi cenami, natomiast przy wieswietlaniu dla jednego uzytkownika sa trzy wyniki, ale zdublowane

czyli.

w tabeli produkty mam

id_uz | produkt | cena
1 | ocet | 5
1 | bulka | 3
1 | piwo |6
2 | ocet | 4
2 |bulka | 5
2 | piwo | 18


i mi wysiwetla dla uzytkownika z ID 1
ocet 5
ocet 5
bulka 3
bulka 3
piwo 6
piwo 6
nospor
Cytat
nie no wlasnie lacze ją z id_uz
Słucha.... nie łączysz.... mówię o tabeli HASLA. Dołączasz tę tabelę, ale w żaden sposób nie łączysz jest z tabelą PRODUKTY. I właśnie dlatego ci się dane dublują. PRzyjmij to do wiadomości
wujeksz
moglbys mi podpowiedziec jak to naprawic? bo naprawde nie moge dostrzec bledu. przyznam sie bez bicia ze jestem samoukiem i jeszcze wiele musze sie nauczyc.

Cytat
$query="SELECT produkty2.produkt, produkty2.jednostka, produkty2.cena, produkty2.producent, hasla.id_uz
FROM produkty2
INNER JOIN hasla
ON produkty2.id_uz2 = hasla.id_uz
ORDER BY produkty2.produkt";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();


znalzlem blad. tutaj wkleilem poprawiony kod. moze komus sie przyda.

a moglibyscie mi podpowiedziec jak zrobic odnosnik aby dla admina przekirowalo na inno strone, i w zaden sposob nie moge polskich znakow wyswietlac z bazy danych. wkleje kod z pliku ktory sprawdza login.

Cytat
<?php
$host="******";
$username="****";
$password="****";
$db_name="****";
$tbl_name="hasla";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$user=$_POST['user'];
$password=$_POST['password'];

$user = stripslashes($user);
$password = stripslashes($password);
$user = mysql_real_escape_string($user);
$password = mysql_real_escape_string($password);

$sql="SELECT * FROM $tbl_name WHERE user='$user' and password='$password'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){


// Register $user, $password and redirect to file "login_success.php"
session_register("user");
session_register("password");
session_register("nazwa");
header("location: login_success.php");
}
else {
$message="Podałeś nieprawidłowe dane!";
}
?>
nospor
No musisz w jakis sposob połączyć tabele HASLA z tabelą PRODYKTY. Jest jakieś pole po którym te tabele mogą się łączyć? Jak nie ma, to nie możesz joinować hasła razem z produktami.

  1. $query="SELECT produkty2.produkt, produkty2.jednostka, produkty2.cena, produkty2.producent, hasla.nazwa
  2. FROM produkty2
  3. INNER JOIN hasla
  4. ON hasla.JAKIES_POLE=produkty2.JAKIES_POLE
  5. where produkty2.id_uz2 = $id_uz
  6. ORDER BY produkty2.produkt";


Po raz ostatni proszę: używaj bboce PHP dla kodu PHP

Cytat
a moglibyscie mi podpowiedziec jak zrobic odnosnik aby dla admina przekirowalo na inno strone,
No to dla admina zamiast
header("location: login_success.php");
masz dac:
header("location: inna_strona.php");

No IF chyba umiesz zrobić?
wujeksz
ok wszystko jasne,

a powiedz mi tylko jak zrobic aby polskie znaki byly wyswietlane z bazy danych? bo nie moge tego zrobic w zaden sposob.
nospor
Na temat polskich znaków na tym forum było już tysiące postów. Wystarczy, że użyjesz wyszukiwarki

O przypiętym temacie już nie wspominając....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.