[php] Foreach

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
De volgende code heb ik werkent maar ik wil eigenlijk ook nog een 2e veldje uit het database mee nemen hoe kan ik dat doen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$plaatje = array();
$query = mysql_query("SELECT plaatje FROM viewme_img order by id DESC LIMIT 0,10"); 
while($res = mysql_fetch_array($query) ) {
    $plaatje[] = $res['plaatje'];
}

$i = 0;
echo "<table border=1><tr>";
foreach ($plaatje as $writeplaatje) {
    if ($i == 5) { echo "</tr><tr>\n"; }
    print "<td align=center height=\"150px\" width=\"150px\>$writeplaatje</td>\n";
    $i = $i + 1;
}
echo "</tr></table>";


Ik had dit al geprobeerd maar dan krijgt je alles 10 maal op beeld
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$plaatje1 = array();
$user_id = array();
$query1 = mysql_query("SELECT plaatje,user_id FROM viewme_img order by id DESC LIMIT 0,10"); 
while($res1 = mysql_fetch_array($query1) ) {
    $plaatje1[] = $res1['plaatje'];
    $user_id[] = $res1['user_id'];
}

$i = 0;
echo "<table border=1><tr>";
foreach ($plaatje1 as $writeplaatje1) {
    foreach ($user_id as $id) {
        if ($i1 == 5) { echo "</tr><tr>\n"; }
        print "<td align=center height=\"150px\" width=\"150px\>$writeplaatje1<br>$id</td>\n";
        $i1 = $i1 + 1;
    }
}
echo "</tr></table>";


Ik hoop dat jullie mij hier mee kunnen helpen??

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Logisch toch dat je 10 records op het scherm krijgt als je 10 records gaat gaan ophalen?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja dat klopt Ik haal 10 plaatjes uit het database
dat werkt nou wil ik van elk plaatje ook nog het user_id hebben dat is de gene die het plaatje heeft geupload.
Zou ik dat zo op moeten lossen of kan ik dat beter op een andere manier doen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
:?
Je hebt nu toch van ieder plaatje het userid? Ik zie het probleem niet in.

https://fgheysels.github.io/


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

PHP:
1
$query = mysql_query("SELECT plaatje FROM viewme_img order by id DESC LIMIT 0,10");

Die "LIMIT 0,10" betekend dat je de eerste 10 ophaald; 10,10 betekend de 2e tien; 0,20 betekend de eerste 20.

"SELECT plaatje" betekend selecteer het veld plaatje uit de database; "SELECT plaatje, veld2" betekend haal plaatje en veld2 uit de database. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • bartware
  • Registratie: Juni 2001
  • Laatst online: 25-03-2023

bartware

@jabber.org

Ik zou het zo doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$query1 = mysql_query("SELECT plaatje,user_id FROM viewme_img order by id DESC LIMIT 0,10"); 

echo "<table border=1><tr>";
$i = 0;
while($res1 = mysql_fetch_array($query1) ) {
    $plaatje = $res1['plaatje'];
    $user_id = $res1['user_id'];

    if ($i == 5) { echo "</tr><tr>\n"; }
    print "<td align=center height=\"150px\" width=\"150px\>$plaatje<br>$user_id</td>\n";
    $i = $i + 1;

}

echo "</tr></table>";


succes!

[ Voor 23% gewijzigd door bartware op 11-12-2003 15:46 ]

Heb ik me begrepen?
Cycle Vision 2020: 17-20 juli Sportpark Sloten & Wheelerplanet Spaarnwoude


Verwijderd

Topicstarter
Ja idd zo kan het ook :p
Dan doe ik het zo wel dankje ;)
bartware schreef op 11 december 2003 @ 15:44:
Ik zou het zo doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$query1 = mysql_query("SELECT plaatje,user_id FROM viewme_img order by id DESC LIMIT 0,10"); 

echo "<table border=1><tr>";
$i = 0;
while($res1 = mysql_fetch_array($query1) ) {
    $plaatje = $res1['plaatje'];
    $user_id = $res1['user_id'];

    if ($i == 5) { echo "</tr><tr>\n"; }
    print "<td align=center height=\"150px\" width=\"150px\>$plaatje<br>$user_id</td>\n";
    $i = $i + 1;

}

echo "</tr></table>";


succes!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 11 december 2003 @ 15:35:
code:
1
2
foreach ($plaatje1 as $writeplaatje1) {
    foreach ($user_id as $id) {
duh, dat gaat natuurlijk niet goed. Je doorloopt de 10 plaatjes, en voor elk plaatje doorloop je de 10 users. Dat moet je natuurlijk ook wel tegelijk doen. En dat kan niet met foreach.

Het is sowieso een slechte aanpak om de 2 dingen, die bij elkaar horen, in verschillende arrays op te slaan. Wat is er mis met $res1 zoals ie wordt teruggegeven uit mysql_fetch_array ()? Toch prima zo, alle waarden die je bij elkaar hebt in dezelfde variabele als associatieve array?

Ik zou het zo aanpakken:
PHP:
1
2
3
4
5
$plaatjes = array ();
$r = mysql_query (/* ... */);
while ($row = mysql_fetch_array ($r))
    $plaatjes[] = $row;
mysql_free_result ($r);


en dan kun je gewoon door je $plaatjes array heen met foreach

PHP:
1
2
3
4
5
foreach ($plaatjes as $p)
{
    echo "plaatje: " . $p["plaatje"] . "<br>";
    echo "user_id: " . $p["user_id"] . "<br>";
}

[ Voor 4% gewijzigd door .oisyn op 11-12-2003 16:06 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

ter aanvulling: soms is het wel handig om, wanneer het om 2 velden gaat, de 1 direct met de ander te koppelen in de array:

PHP:
1
2
3
4
5
6
7
8
9
10
$result = mysql_query ( "SELECT ..." );

$images = array ();
while ( $row = mysql_fetch_assoc ( $result ) ) {
   $images [ $row [ 'user_id' ] ] = $row [ 'image' ];
}
// nog wat zut.
foreach ( $images as $user_id => $image ) {
   printf ( '<a href="user.php?id=%d"><img src="%s" /></a>', $user_id, $image );
}
iets van die strekking. 't Is maar wat je handig vindt.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1