/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problem med løkker (udtræk fra db)
Fra : Dennis Munding


Dato : 16-03-11 01:54

Hej

Jeg har en lille nød, som jeg håber, nogen af jer kan hjælpe mig med at få
knækket...

2 tables:

#1:
id
kategori
beskrivelse

#2:
billed_id
kategori
tekst
pris


Jeg vil gerne lave en "teaser" med max. 3 billeder fra hver kategori.
Hver kategori skal opstilles på samme række med en overordnet beskrivelse
(hentes fra table #1) som skrives yderst til højre:
http://tsbilpleje.dk/?side=salg

Mit problem er midlertidig at jeg ikke helt har forstået løkker-i-løkker
fidusen... :-/
Som det fremgår af ovennævnte side, bliver hver kategori ikke udskrevet på
én række, da hver kategorier opdelt således:

Sort bil = kat #1
Grå bil = kat #2
Autocamper = kat #3



KODE:
<?
open_db();
$ind = array('_', 'ae', 'oe', 'aa');
$ud = array(' ', 'æ', 'ø', 'å');

$result1 = mysql_query("select * from salgs_kategorier");
if (!$result1) {
die('Query failed:' . mysql_error());
}
$result2 = mysql_query("select * from salg");
if (!$result2) {
die('Query failed:' . mysql_error());
}
$sti = "/img/salg/";

while($data1 = mysql_fetch_array($result1)) {
$beskriv = $data1['beskrivelse'];

echo "\r\n<div class='o_tekst'>".$beskriv."</div>";

while($data2 = mysql_fetch_array($result2)) {
$billed_id = $data2['billed_id'];
$kategori = $data2['kategori'];
$tekst = $data2['tekst'];
$pris = $data2['pris'];

$kat_side = str_replace($ud, $ind, $kategori);
$img = str_replace($ud, $ind, $kategori)."_".$billed_id;
$alt = ucfirst($kategori);

echo "\r\n<div class='oversigt'>";
echo "\r\n<div class='o_img'>\r\n<a style='display:block;'
href='?side=$kat_side'><img src='".$sti.$img."_tmb.jpg' alt='".$alt."'
/></a>\r\n</div>";
echo "</div>";
echo "\r\n<hr class='devider clearfix' />";
}
}
?>


Ethvert spark i den rigtige retning påskønnes.


Med venlig hilsen
--
Dennis Munding
a.k.a. The Eye - Member of the PosseGrim Squad
http://pgsquad.com/
"When you hear the wind - you're already dead..."


 
 
Leif Neland (16-03-2011)
Kommentar
Fra : Leif Neland


Dato : 16-03-11 08:45

Den 16-03-2011 01:53, Dennis Munding skrev:
> Hej
>
> Jeg har en lille nød, som jeg håber, nogen af jer kan hjælpe mig med at
> få knækket...
>
> 2 tables:
>
> #1:
> id
> kategori
> beskrivelse
>
> #2:
> billed_id
> kategori
> tekst
> pris
>
>
> Jeg vil gerne lave en "teaser" med max. 3 billeder fra hver kategori.
> Hver kategori skal opstilles på samme række med en overordnet
> beskrivelse (hentes fra table #1) som skrives yderst til højre:
> http://tsbilpleje.dk/?side=salg
>
> Mit problem er midlertidig at jeg ikke helt har forstået løkker-i-løkker
> fidusen... :-/
> Som det fremgår af ovennævnte side, bliver hver kategori ikke udskrevet
> på én række, da hver kategorier opdelt således:
>
> Sort bil = kat #1
> Grå bil = kat #2
> Autocamper = kat #3
>
>
>
>
> Ethvert spark i den rigtige retning påskønnes.
>

Uden at gå ind i html'en, så et lille spark:

$conn = dbx_connect(DBX_MYSQL, $server, $database, $username, $password,
DBX_PERSISTENT)

$res_kat=dbx_query($conn,
"select * from kat order by ...");

foreach ($res_kat->data as $kat) {
printf("<h1>%s</h1>%s<br>",
$kat['kategori'],$kat['beskrivelse']);

$res_bil=dbx_query($conn,"select * from bil where
kategori=".$kat['kategori']." order by random limit 3");
foreach($res_bil->data as $bil) {
printf("$s <img src='%s'>Pris: %d<br>",
   $bil['tekst'],$bil['billede'],$bil['pris']);
}
}

<disclaimer>
Jeg antager for simplicitetens skyld at data i kategoritabellen er
sikkert, uden mulighed for sql-injects, og bruger derfor ikke
parameterized queries i dette tilfælde.</disclaimer>

Leif

Dennis Munding (17-03-2011)
Kommentar
Fra : Dennis Munding


Dato : 17-03-11 18:46

Hej Leif
"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:4d806aa5$0$23760$14726298@news.sunsite.dk...
> Den 16-03-2011 01:53, Dennis Munding skrev:
>> Hej
>>
>> Jeg har en lille nød, som jeg håber, nogen af jer kan hjælpe mig med at
>> få knækket...
>>
>> 2 tables:
>>
>> #1:
>> id
>> kategori
>> beskrivelse
>>
>> #2:
>> billed_id
>> kategori
>> tekst
>> pris
>>
>>
>> Jeg vil gerne lave en "teaser" med max. 3 billeder fra hver kategori.
>> Hver kategori skal opstilles på samme række med en overordnet
>> beskrivelse (hentes fra table #1) som skrives yderst til højre:
>> http://tsbilpleje.dk/?side=salg
>>
>> Mit problem er midlertidig at jeg ikke helt har forstået løkker-i-løkker
>> fidusen... :-/
>> Som det fremgår af ovennævnte side, bliver hver kategori ikke udskrevet
>> på én række, da hver kategorier opdelt således:
>>
>> Sort bil = kat #1
>> Grå bil = kat #2
>> Autocamper = kat #3
>>
>>
>>
>>
>> Ethvert spark i den rigtige retning påskønnes.
>>
>
> Uden at gå ind i html'en, så et lille spark:
>
> $conn = dbx_connect(DBX_MYSQL, $server, $database, $username, $password,
> DBX_PERSISTENT)
>
> $res_kat=dbx_query($conn,
> "select * from kat order by ...");
>
> foreach ($res_kat->data as $kat) {
> printf("<h1>%s</h1>%s<br>",
> $kat['kategori'],$kat['beskrivelse']);
>
> $res_bil=dbx_query($conn,"select * from bil where
> kategori=".$kat['kategori']." order by random limit 3");
> foreach($res_bil->data as $bil) {
> printf("$s <img src='%s'>Pris: %d<br>",
> $bil['tekst'],$bil['billede'],$bil['pris']);
> }
> }

Mange tak for dit indspark.
P.t. har jeg ikke mulighed for at benytte DBX - har ikke tjekket hvilke
muligheder mit webhotel giver, men det gør jeg lige henover weekenden.

Umiddelbart (med tilrettelser så der bliver forbundet til db) har jeg ikke
været i stand til at få det til at virke.
Men jeg er sikker på, at det nok skal lykkedes ved et nærmere studie af dit
eksempel.

Jeg har lige et tillægsspørgsmål...: %s - er det noget DBX-relateret??
(synes ikke jeg har set det i denne sammenhæng før...)

Foreløbig mange tak.


Med venlig hilsen
--
Dennis Munding
a.k.a. The Eye - Member of the PosseGrim Squad
http://pgsquad.com/
"When you hear the wind - you're already dead..."


Martin (17-03-2011)
Kommentar
Fra : Martin


Dato : 17-03-11 20:22

On 17-03-2011 18:46, Dennis Munding wrote:
> Hej Leif
> "Leif Neland" <leif@neland.dk> skrev i en meddelelse
> news:4d806aa5$0$23760$14726298@news.sunsite.dk...
>> Den 16-03-2011 01:53, Dennis Munding skrev:
>>> Hej
>>>
>>> Jeg har en lille nød, som jeg håber, nogen af jer kan hjælpe mig med at
>>> få knækket...
>>>
>>> 2 tables:
>>>
>>> #1:
>>> id
>>> kategori
>>> beskrivelse
>>>
>>> #2:
>>> billed_id
>>> kategori
>>> tekst
>>> pris
>>>
>>>
>>> Jeg vil gerne lave en "teaser" med max. 3 billeder fra hver kategori.
>>> Hver kategori skal opstilles på samme række med en overordnet
>>> beskrivelse (hentes fra table #1) som skrives yderst til højre:
>>> http://tsbilpleje.dk/?side=salg
>>>
>>> Mit problem er midlertidig at jeg ikke helt har forstået løkker-i-løkker
>>> fidusen... :-/
>>> Som det fremgår af ovennævnte side, bliver hver kategori ikke udskrevet
>>> på én række, da hver kategorier opdelt således:
>>>
>>> Sort bil = kat #1
>>> Grå bil = kat #2
>>> Autocamper = kat #3
>>>
>>>
>>>
>>>
>>> Ethvert spark i den rigtige retning påskønnes.
>>>
>>
>> Uden at gå ind i html'en, så et lille spark:
>>
>> $conn = dbx_connect(DBX_MYSQL, $server, $database, $username,
>> $password, DBX_PERSISTENT)
>>
>> $res_kat=dbx_query($conn,
>> "select * from kat order by ...");
>>
>> foreach ($res_kat->data as $kat) {
>> printf("<h1>%s</h1>%s<br>",
>> $kat['kategori'],$kat['beskrivelse']);
>>
>> $res_bil=dbx_query($conn,"select * from bil where
>> kategori=".$kat['kategori']." order by random limit 3");
>> foreach($res_bil->data as $bil) {
>> printf("$s <img src='%s'>Pris: %d<br>",
>> $bil['tekst'],$bil['billede'],$bil['pris']);
>> }
>> }
>
> Mange tak for dit indspark.
> P.t. har jeg ikke mulighed for at benytte DBX - har ikke tjekket hvilke
> muligheder mit webhotel giver, men det gør jeg lige henover weekenden.

Behøver du skam heller ikek have adgang til.
du kan evt. erstatte dbx med mysql eller mysqli

>
> Umiddelbart (med tilrettelser så der bliver forbundet til db) har jeg
> ikke været i stand til at få det til at virke.
> Men jeg er sikker på, at det nok skal lykkedes ved et nærmere studie af
> dit eksempel.

Erstat din foreach løkken med
while($r = mysql_fetch_assoc($res_kat)) {

Så kan du lave en
var_dump($r);

Så kan du se hvad du har til rådighed. - Med fetch_assoc, så kan du
hente både via
$r[INDEX] og $r['RÆKKENAVN']


>
> Jeg har lige et tillægsspørgsmål...: %s - er det noget DBX-relateret??
> (synes ikke jeg har set det i denne sammenhæng før...)

Nej, det er printf (Lig mærke til F'et)

$word = 'Hello';
$num = 10;

printf("Et tal %d og et bogstaver %s", $num, $word);

Lidt det samme som
echo "Et tal " . $num . " og et par bogstaver " . $word;

Fordelen/ulempen! - Er at %s SKAL være en string, %d SKAL være et tal -
og hvis man smider noget forkert ind, så bliver det lavet om.
fx.

$num = '100'; // BEMÆRK DETTE ER EN STRENG
printf('Et tal %d', $num);
Vil virke fint nok, imens

$num = 'abcd';
printf('Et tal %d', $num);
Ikke vil virke.

printf('Et tal %1$d og det samme tal igen %2$d', 10);
Vil blive til
Et tal 10 og det samme tal igen 10

Læs meget mere på
http://www.php.net/manual/en/function.sprintf.php

Dennis Munding (18-03-2011)
Kommentar
Fra : Dennis Munding


Dato : 18-03-11 19:33

Hej Martin,
"Martin" skrev...
> On 17-03-2011 18:46, Dennis Munding wrote:
>> Mange tak for dit indspark.
>> P.t. har jeg ikke mulighed for at benytte DBX - har ikke tjekket hvilke
>> muligheder mit webhotel giver, men det gør jeg lige henover weekenden.
>
> Behøver du skam heller ikek have adgang til.
> du kan evt. erstatte dbx med mysql eller mysqli
>
>>
>> Umiddelbart (med tilrettelser så der bliver forbundet til db) har jeg
>> ikke været i stand til at få det til at virke.
>> Men jeg er sikker på, at det nok skal lykkedes ved et nærmere studie af
>> dit eksempel.
>
> Erstat din foreach løkken med
> while($r = mysql_fetch_assoc($res_kat)) {
>
> Så kan du lave en
> var_dump($r);
>
> Så kan du se hvad du har til rådighed. - Med fetch_assoc, så kan du hente
> både via
> $r[INDEX] og $r['RÆKKENAVN']
>
>> Jeg har lige et tillægsspørgsmål...: %s - er det noget DBX-relateret??
>> (synes ikke jeg har set det i denne sammenhæng før...)
>
> Nej, det er printf (Lig mærke til F'et)
>
> $word = 'Hello';
> $num = 10;
>
> printf("Et tal %d og et bogstaver %s", $num, $word);
>
> Lidt det samme som
> echo "Et tal " . $num . " og et par bogstaver " . $word;
>
> Fordelen/ulempen! - Er at %s SKAL være en string, %d SKAL være et tal - og
> hvis man smider noget forkert ind, så bliver det lavet om.
> fx.
>
> $num = '100'; // BEMÆRK DETTE ER EN STRENG
> printf('Et tal %d', $num);
> Vil virke fint nok, imens
>
> $num = 'abcd';
> printf('Et tal %d', $num);
> Ikke vil virke.
>
> printf('Et tal %1$d og det samme tal igen %2$d', 10);
> Vil blive til
> Et tal 10 og det samme tal igen 10
>
> Læs meget mere på
> http://www.php.net/manual/en/function.sprintf.php

Mange tak for indsparket og den uddybende forklaring.
Jeg kigger på det - og siden du har linket til - ved første ledige stund.


God weekend.


Med venlig hilsen
--
Dennis Munding
a.k.a. The Eye - Member of the PosseGrim Squad
http://pgsquad.com/
"When you hear the wind - you're already dead..."


Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste