• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wyswietlenie rekordu tyle razy ile jest w zapytaniu

Object Storage Arubacloud
0 głosów
267 wizyt
pytanie zadane 16 kwietnia 2015 w SQL, bazy danych przez makoso Mądrala (7,380 p.)
edycja 16 kwietnia 2015 przez makoso

Witam twrozę dla siostry sklep internetowy i mam mały problem z koszykiem wszystko pieknie się dodaje (kod będzie poniżej opisu) tylko że dany produkt jest wyświetlany raz, próbowałem zrobić jakąś pentlę zliczającą ilośc występowania produktu w zapytaniu o niego ale musiałbym ręcznie zapisac kazy produkt jako zmienną i dopisać mu numer id w bazie danych czyli wyglądałoby to tak:

$id_numer1=substr_count($koszyk, "1");
$id_numer2=substr_count($koszyk, "2");

w $koszyk mam zapisane wszystkie produkty wybrane przez klienta

i wystarczyłoby mi gdybym mógł oznaczyć jakoś że w zapytaniu do mysql jak powtarza się rekord w IN np IN(10,10,10,9)
to w koszyku wyswietli mi produkt10,produkt10,produkt10,produkt9

poniżej kod który za to odpowiada dodam że wybranie przez klienta przesyłam do ciasteczek, proszę nie patrzeć na komórki bo jest to pozostałość po wyjściowym kodzie pana Mirosława :)

 

<?
$produkt=$_POST[id_produkt];
$pop=$_COOKIE['wybrane_produkty'].','.$produkt;
$fragment = substr($pop, 1);
$koszyk=$fragment;
echo $koszyk;
setcookie('wybrane_produkty', $pop, time()+3600*1);


?>

<?php
$connection = @mysql_connect('****', '****', '****') 
    or die('Brak połączenia z serwerem MySQL'); 
    $db = @mysql_select_db('****', $connection) 
    or die('Nie mogę połączyć się z bazą danych');


	
$rezultat = mysql_query("SELECT * FROM produkty WHERE idprodukt IN($koszyk)");


$ile = mysql_num_rows($rezultat);

echo "znaleziono: ".$ile.'<br/><br/><br/>';
if ($ile>=1) 
{
echo<<<END



</tr><tr><br/><br/><br/>TWÓJ KOSZYK ZAWIERA:

END;
}

	for ($i = 1; $i <= $ile; $i++) 
	{
	
		
		$row = mysql_fetch_assoc($rezultat);
		$a1 = $row['nazwa'].'<br/>';
		$a3 = $row['obrazek'];
		$a2 = $row['cena'];	
    $ciastko = $row['idprodukt'];	
		
echo<<<END
<td width="50" align="center">$a1</td>
<td width="100" align="center">$a2</td>

</tr><tr><hr>
END;
			
		}
	

?>

Bardzo jest mi to potrzebne ew jakaś alternatywa kombinowałem coś z przesyłaniem ilości sztuk z pliku index gdzie są wyświetlane ów produkty 

dodatkowo plik index.php jakbyktoś chciał zobaczyć wyjasnienie niektórych zmiennych

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
 
<body>
<h3>DODAJ NOWY Produkt do bazy :)</h3>
 
<!-- FORMULARZ HTML WPROWADZANIA DANYCH -->
<form enctype="multipart/form-data" name="form1" method="post" action="skrypt.php">
<input type="hidden" name="MAX_FILE_SIZE" value="3145728" />
<input name="plik" type="file"/>
  Nazwa przedmiotu: <input name="marka" type="text" size="20">
  Cena: <input type="text" name="model" size="20">
  <input value="dodaj produkt" type="submit">
</form>
<!-- KONIEC FORMULARZA -->
<?php
$connection = @mysql_connect('****', '****', '****') 
    or die('Brak połączenia z serwerem MySQL'); 
    $db = @mysql_select_db('****', $connection) 
    or die('Nie mogę połączyć się z bazą danych');


	
	
	$rezultat = mysql_query("SELECT * FROM produkty ORDER BY idprodukt DESC");
$ile = mysql_num_rows($rezultat);

echo "znaleziono: ".$ile.'<br/><br/><br/>';
if ($ile>=1) 
{
echo<<<END

<td width="100" align="center" bgcolor="e5e5e5">nazwa</td>
<td width="100" align="center" bgcolor="e5e5e5">cena</td>

</tr><tr><br/><br/><br/>
END;
}

	for ($i = 1; $i <= $ile; $i++) 
	{
		
		$row = mysql_fetch_assoc($rezultat);
		$a1 = $row['nazwa'].'<br/>';
		$a3 = $row['obrazek'];
		$a2 = $row['cena'];	
    $ciastko = $row['idprodukt'];	
		
echo<<<END
<td width="50" align="center">$a1</td>
<td width="50" align="center"><img src="$a3" width="150" height="150" /></td>
<td width="100" align="center">$a2</td>
<td width="100" align="center">

<form enctype="multipart/form-data" name="form1" method="post" action="ciasteczko.php">
<input type="hidden" name="id_produkt" value="$ciastko " />
<input value="dodaj do koszyka" type="submit">
</form>


</td>
</tr><tr><hr>
END;
			
	}
	

?>

 

1 odpowiedź

0 głosów
odpowiedź 16 kwietnia 2015 przez Geek Pasjonat (19,660 p.)
while( $row = mysql_fetch_assoc($rezultat)) {
// Tutaj wpisz kod który będzie wykonywany na każdym znalezionym rekordzie po kolei, np. echo $row['name']; Ten kod wyświetli wartość każdego wiersza w kolumnie name jeden po drugim
}

 

komentarz 16 kwietnia 2015 przez jeremus Maniak (59,720 p.)
to nic nie da

musisz miec tabele np. koszyk ( nr, id_prod)

a zapytanie :

select koszyk.nr,produkty.*  from koszyk,produkty

where koszyk.id_prod=produkty.id

wtedy zobaczysz wszystkie pozycje
komentarz 16 kwietnia 2015 przez makoso Mądrala (7,380 p.)

nie wyszło mi tak o co mi chodziło :(

zastosowałem to tak:(pewnie źle)

while( $row = mysql_fetch_assoc($rezultat)) {
$a1 = $row['nazwa'].'<br/>';
		$a3 = $row['obrazek'];
		$a2 = $row['cena'];	
		echo<<<END
<td width="50" align="center">$a1</td>
<td width="100" align="center">$a2</td>

</tr><tr><hr>start kod teraz
END;
}

w odpowiedzi uzyskałem:

 

9 ,10 ,10 //tutaj jest zawartość zmiennej koszyk
znaleziono: 2 //TUTAJ chciałbym mieć wszystkie produkty a mam dwa bo nie liczy drugiego 10 x2 


<br/><br/><br/>TWÓJ KOSZYK ZAWIERA:
<td width="50" align="center">produkt9<br/></td>
<td width="100" align="center">cena9</td>

</tr><tr><hr>start kod teraz<td width="50" align="center">produkt10<br/></td>
<td width="100" align="center">cena10</td>
hr>
//produkt10 został wymieniony w zapytaniu dwa razy jednak jest //wyswietlany raz i jest to prawidłowe ale chcę jakoś osiągnąć //aby wyświetlał się dwa razy albo wyświetlała się ilośc //zamówionych sztuk input byłby przy produkcie 

 

komentarz 16 kwietnia 2015 przez Geek Pasjonat (19,660 p.)
Spróbuj z pomysłem, który wyżej podał kolega :)
komentarz 16 kwietnia 2015 przez makoso Mądrala (7,380 p.)

tak tylko mam pewną uwagę nie jestem obiegany w bazach więc odpisałem Koledze wyżej na PW ale zamieszczę tutaj może ktoś jeszcze to oceni 

Dostałem twoją odpowiedź i sorry że meczę Cię na priv

to nic nie da
musisz miec tabele np. koszyk ( nr, id_prod)
a zapytanie :
select koszyk.nr,produkty.*  from koszyk,produkty
where koszyk.id_prod=produkty.id
wtedy zobaczysz wszystkie pozycje
ale czy może dałoby się to zrobić że podpiął bym nowe pole pod tą tabelę np ilosc
i w niej zapisywał dane liczbowe z formularza  po czym wywoływał je normalnie, przy koszyku na starcie strony dodałbym skrypt ustalający dane wszystkie pola w (ilosc) na 0 i to samo wykorzystywałbym w podsumowaniu zamówienia czyli mnożeniu ceny produktu przez daną z tego pola tylko pewnie byłby problem jak dwóch użytkowników byłyby w sklepie jedn wyzerowałby drugiemu czyli wszystko mógłbym zrobić na zasadzie nowej tabeli i wnim ip chyba byłoby lepsze niż id bo albo nie rozumiem zbytnio tego albo twój sposób też by zerował tak jak mój i a ip byłoby unikalne dla tego aktualnego i miałbym w tabeli powiedzmy koszyk(ip,id_produkt,sztuk) tylko tutaj znowu nie mogę sobie wyobrazić co będzie jak będzie chciał różne produkty -.- sory za tak długą wiadomość ale wydaje mi się że masz pojęcie o tym co piszesz :)

Podobne pytania

0 głosów
3 odpowiedzi 634 wizyt
pytanie zadane 20 listopada 2015 w C i C++ przez coonkhey Nowicjusz (180 p.)
–1 głos
0 odpowiedzi 316 wizyt
pytanie zadane 21 czerwca 2018 w C# przez xxkondzioxx15 Obywatel (1,440 p.)
+24 głosów
3 odpowiedzi 2,430 wizyt

92,568 zapytań

141,420 odpowiedzi

319,617 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...