Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 592
Hei,

jeg har en kodesnutt som er som følger, det er forøvrig et array.

Kode

$products = array(

"varenr" =>
new product(
"tittel",
"egensideforprodukt.php", 
"bildebane", 
pris,
vekt,
"beskrivelse."
)

);
De forskjellige varene skal bli presentert på en side. Problemet er at jeg ønsker mer enn en vare, og jeg vil lagre dem i sql.

Hvordan kan jeg lage en loop som henter "resten" av produktene som ligger i databasen? Hvordan lager jeg en loop til et array. Jeg har prøvd meg frem, men stopper helt opp :/
Limited edition
Moff's Avatar
Jeg forstår ikke helt logikken i den kodesnutten du har der på grunn at den delen med "new product". Hvis det ikke er en funksjon du har skrevet, så hører den ikke helt hjemme der.

Uansett:
Hvis du bruker MySQL (?) så kan du lage en tabell som ser nogenlunde slik ut:
id - navn - url - pris - vekt - tekst
(Samme som du har skrevet, jeg liker bare å bruke korte ord i feltnavn. Du kan også legge tid et dato-felt med timestamp i, så du vet når varen ble lagt til.)
Deretter kan du bruke en spørring til å hente ut hele tabellen, eller deler av den. Hvis jeg tar utgangspunkt i at du bruker MySQL kan jeg komme med et kontret eksempel:

Kode

// Koble til databasen

// Spørring
$query = mysql_query("select * from tabell");

while($record = mysql_fetch_array($query)) {
echo $record['id'] . " - " . $record['navn'] . "<br />";
}

// Koble fra database og slike ting
Her er et eksempel på en array-loop. $query inneholder alle recordsetene, men de er samlet i en ressurs. Ved å bruke while-løkken kan du hente ut ett og ett recordset (fra første til siste). Når det ikke er flere recordset igjen, vil mysql_fetch_array() returnere FALSE, og while-løkken vil stanse. Dette er en veldig kjekk måte å hente informasjon fra slike tabeller på.

For vanlig looping av arrayer, uavhengig av databaser, kan du se på foreach()-løkken (slå opp på php.net). Den kan kjøre løkken en gang for hver item (oppføring) som er i et array.
Sist endret av Moff; 11. oktober 2008 kl. 01:31. Grunn: Det finnes ingen C i "navn".
Jeg har prøvd å bruke while loop. Men får bare feilmeldinger. Kunne du prøvd å plassert mitt array inn i ditt script? For det ser ikke ut som om arrayet fungerer etter det er puttet i en loop. Kanskje jeg bør bruke foreach isteden? Hvordan gjør jeg da det? Har søkt på det, men klarer ikke helt å putte alt sammen.

Takk for kjapt svar

Kan jo kanskje nevne at det egentlig er et slags "halvferdig" webshop. Jeg vet jeg burde skrevet den fra bunn, og lært meg alt. Men denne gangen har jeg ikke helt tid til det. Ble litt mye med de forskjellige session-greiene.

Men denne webshopen forstår jeg rimelig godt, eneste problemet er at den lister produkter opp fra arrays i en php-fil. De ligger på denne måten:

Kode

$products = array(

// Product key
"SKU001" =>
new product(
// Name
"Rubber Ducky™",
// Product page. Can be a custom page or the generic product.php page.
"product.php", 
// Product image
"images/ducky.jpg",
// Price 
2.99,
// Weight
0.25,
// Extended description
"A nice bubble bath companion."
),

"SKU002" =>
new product(
"Compass",
"product.php", 
"images/compass.jpg", 
9.95,
0.75,
"Always know where north is."
),

"SKU003" =>
new product(
"Gold fish & Tank",
"product.php", 
"images/fish.jpg", 
24.95,
2,
"Circle around and around."
),

"SKU004" =>
new product(
"Mailbox",
"product.php", 
"images/mailbox.jpg", 
12.99,
1,
"You've got mail."
)

);

Jeg ønkser å hente ut produktene fra mysql. Og mysqlen har jeg kontroll på, det enste jeg ikke får til å fungere nå er loops og arrays. Hadde vært supert om noen kunne smelt det sammen for meg
Trigonoceps occipita
vidarlo's Avatar
Donor
foreach ($array as $key) {
print $key[foobar];
}

foreach er den løkketypen du er ute etter.
Limited edition
Moff's Avatar
Sitat av fredrikweb
Men denne webshopen forstår jeg rimelig godt, eneste problemet er at den lister produkter opp fra arrays i en php-fil.
*Snip*
Jeg ønkser å hente ut produktene fra mysql.
Vis hele sitatet...
Forstår jeg det riktig, hvis jeg tror at webshopen "lagrer" produketene i denne PHP-fila, mens du vil hente dem fra MySQL-databasen din? Det du trenger da, er et skript som henter produktene dine og stiller dem opp i et array lik det webshoppen bruker.

Kode

<?php
// Tilkobling og databasevalg
$mysql = mysql_connect("localhost", "bruker", "passord");
mysql_select_db("database");

// Sett opp et array
$products = array();

// Hent produktene
$query = mysql_query("select * from tabell");
while($record = mysql_fetch_array($query)) {

	// Legg til recordsettet som en item i arrayet
	$products[$record['id']] = new product(
		$record['name'],
		$record['page'],
		$record['image'],
		$record['price'],
		$record['weight'],
		$record['discription']
	);

}
?>
Her er et eksempel som muligens funker. Tanken er at du erstatter alle de tingene i den originale PHP-fila (som "rubber ducky" og sånt) med verdier fra databasen (slik som $record['name']). Jeg har beholdt navnene slik at du ser hvor jeg har plassert ting. Du kan endre de engelske navnene her med de som passer til MySQL-databasen din. Som nevnt; jeg kjenner ikke til den klassen som heter "new product" (den hører til webshoppen), men dette bør funke likevel. Logikken er på plass, om ikke annet.
Takk

Det fungerte..
Sist endret av fredrikweb; 11. oktober 2008 kl. 18:37.