rand() functie geeft teveel
Ben bezig een functie te maken waarmee mijn PHP script bij iedere refresh een willekeurig getal uit een datafeed haalt (een rij) alleen wil het nog niet echt lukken. Dit is mijn PHP:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Open het csv bestand
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
$row=0;
//START LOOP - Haalt data uit het csv bestand tussen rij 12 en 50
for($j = 0; $j < 50; $j++){
$data = fgetcsv ($fp, 1000, ",");
$num = count ($data);
//start op 3e regel, 1e twee zijn troep
$rij = rand(12,50);
if($row == $rij){
?>
// Open het csv bestand
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
$row=0;
//START LOOP - Haalt data uit het csv bestand tussen rij 12 en 50
for($j = 0; $j < 50; $j++){
$data = fgetcsv ($fp, 1000, ",");
$num = count ($data);
//start op 3e regel, 1e twee zijn troep
$rij = rand(12,50);
if($row == $rij){
?>
Wat nou het probleem is, is dat hij soms wel gewoon 1 getal pakt, maar soms pakt hij helemaal niks of dan pakt hij meerdere getallen (dus rijen) en krijg ik er zomaar 3 tegelijk. Wat doe ik precies fout? Ik wil gewoon dat hij 1 willekeurige rij tussen de 12 en de 50 pakt bij iedere refresh.
Als iemand mij kan helpen hoor ik het graag.
Alvast bedankt,
Robert
Gewijzigd op 01/01/1970 01:00:00 door Robert
Maar zoals je ziet zit je rand functie in een for-loop, dus wellicht gaat er daar iets fout. Probeer te achterhalen of er een manier is dat je script meerdere malen door de loop gaat en output post.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
// Open het csv bestand
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
$row=0;
//START LOOP - Haalt data uit het csv bestand tussen rij 12 en 50
for($j = 0; $j < 50; $j++){
$data = fgetcsv ($fp, 1000, ",");
$num = count ($data);
//start op 3e regel, 1e twee zijn troep
$rij = rand(12,50);
if($row == $rij){
<a id='hoteltoplink' href=" echo $data[0]; "></a>
<tr>
<td colspan="2" align="left" valign="top">
<span class="style13">
[code]<?php
if(strlen($data[6])>20){
$naam= substr($data[6],0,20).'...' </span>
<span class="style24">
$naam=eregi_replace(" - ", "<br \>", $data[6]);}
else {$naam=$data[6];}
echo $naam
</span></td>
</tr>
<tr>
<td align="left" valign="top"><span class="style24"> echo $data[1]; </span></td>
<td align="right" valign="top" class="style8">
<span class= "style14">va.</span> <span class="style25 style42">
[code]<?php echo "€" . " " .
$data[5]; }$row++; } ?></span></a> </td>
</tr>
<tr></tr>
</table>
// Open het csv bestand
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
$row=0;
//START LOOP - Haalt data uit het csv bestand tussen rij 12 en 50
for($j = 0; $j < 50; $j++){
$data = fgetcsv ($fp, 1000, ",");
$num = count ($data);
//start op 3e regel, 1e twee zijn troep
$rij = rand(12,50);
if($row == $rij){
<a id='hoteltoplink' href=" echo $data[0]; "></a>
<tr>
<td colspan="2" align="left" valign="top">
<span class="style13">
[code]<?php
if(strlen($data[6])>20){
$naam= substr($data[6],0,20).'...' </span>
<span class="style24">
$naam=eregi_replace(" - ", "<br \>", $data[6]);}
else {$naam=$data[6];}
echo $naam
</span></td>
</tr>
<tr>
<td align="left" valign="top"><span class="style24"> echo $data[1]; </span></td>
<td align="right" valign="top" class="style8">
<span class= "style14">va.</span> <span class="style25 style42">
[code]<?php echo "€" . " " .
$data[5]; }$row++; } ?></span></a> </td>
</tr>
<tr></tr>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$row = 1;
$rand=rand(12,50);
echo$rand.'<HR>';
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
$num = count ($data);
$row++;
for ($c=0; $c < $num; $c++) {
if($row==$rand){
print $data[$c] . "<br>\n";
}
}
}
fclose ($fp);
?>
$row = 1;
$rand=rand(12,50);
echo$rand.'<HR>';
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
$num = count ($data);
$row++;
for ($c=0; $c < $num; $c++) {
if($row==$rand){
print $data[$c] . "<br>\n";
}
}
}
fclose ($fp);
?>
verschil met jou script, de while loop.
Ik heb je functie in mn script gezet:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
// Open het csv bestand
$row = 1;
$rand=rand(12,50);
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
$num = count ($data);
$row++;
for ($c=0; $c < $num; $c++) {
if($row==$rand){
<a id='hoteltoplink' href=" echo $data[0]; "></a>
<tr>
<td colspan="2" align="left" valign="top">
<span class="style13">
[code]<?php
if(strlen($data[6])>20){
$naam= substr($data[6],0,20).'...' </span>
<span class="style24">
$naam=eregi_replace(" - ", "<br \>", $data[6]);}
else {$naam=$data[6];}
echo $naam
</span></td>
</tr>
<tr>
<td align="left" valign="top"><span class="style24"> echo $data[1]; </span></td>
<td align="right" valign="top" class="style8">
<span class= "style14">va.</span> <span class="style25 style42">
[code]<?php echo "€" . " " .
$data[5]; }$row++;}
fclose ($fp);
?>
Alleen het probleem is dat hij hem nu 8 keer laat zien en soms nog steeds niks. Maar hij laat in ieder geval wel 8 keer dezelfde data zien dus dat is een stap in de goeie richting.
Ik heb je functie op een lege PHP pagina getest en daar deed hij het inderdaad probleemloos. Nu moet ik het alleen nog zien toe te passen met de rest van mijn script waarin hij specifieke punten eruit pakt. Ik hoop dat iemand het antwoord weet.
Robert
// Open het csv bestand
$row = 1;
$rand=rand(12,50);
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
$num = count ($data);
$row++;
for ($c=0; $c < $num; $c++) {
if($row==$rand){
<a id='hoteltoplink' href=" echo $data[0]; "></a>
<tr>
<td colspan="2" align="left" valign="top">
<span class="style13">
[code]<?php
if(strlen($data[6])>20){
$naam= substr($data[6],0,20).'...' </span>
<span class="style24">
$naam=eregi_replace(" - ", "<br \>", $data[6]);}
else {$naam=$data[6];}
echo $naam
</span></td>
</tr>
<tr>
<td align="left" valign="top"><span class="style24"> echo $data[1]; </span></td>
<td align="right" valign="top" class="style8">
<span class= "style14">va.</span> <span class="style25 style42">
[code]<?php echo "€" . " " .
$data[5]; }$row++;}
fclose ($fp);
?>
Alleen het probleem is dat hij hem nu 8 keer laat zien en soms nog steeds niks. Maar hij laat in ieder geval wel 8 keer dezelfde data zien dus dat is een stap in de goeie richting.
Ik heb je functie op een lege PHP pagina getest en daar deed hij het inderdaad probleemloos. Nu moet ik het alleen nog zien toe te passen met de rest van mijn script waarin hij specifieke punten eruit pakt. Ik hoop dat iemand het antwoord weet.
Robert
Gewijzigd op 01/01/1970 01:00:00 door Robert
Je hebt een while en een for in één, weet je zeker dat dat de bedoeling is?
Geen idee :P heb ook maar de gegeven functie overgenomen
Maar die while gaat door alle rijen heen en als er dan iets gevonden is doet ie het net zo lang als dat jouw for-loopje loopt. Dit kan dus heel goed zijn waarom jouw data 8 keer getoond wordt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$row = 1;
$rand=rand(12,50);
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
$num = count ($data);
$row++;
if($row==$rand){
echo'
<div style="width:300px;border:3px solid #CCC;padding:4px;">
<h3 style="margin:0px;">'.$data[1].'</h3>
<h4 style="margin:0px;"> € '.$data[5].' p/p/p/n </h4>
<p><img src="'.$data[4].'" alt="'.$data[1].'" style="float:left;margin:0px 7px 3px 0px;text-align: justify;">
'.$data[2].'<br><br>
<a href="'.$data[0].'" title="'.$data[1].'">Meer informatie.</a>
</p>
';
}
}
fclose ($fp);
?>
$row = 1;
$rand=rand(12,50);
$fp = fopen ("http://www.m4n.nl/_df?m=public_stream_csv&sep=tab5&valq=value2&enq=enq1&dfid=5800&duid=9196","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
$num = count ($data);
$row++;
if($row==$rand){
echo'
<div style="width:300px;border:3px solid #CCC;padding:4px;">
<h3 style="margin:0px;">'.$data[1].'</h3>
<h4 style="margin:0px;"> € '.$data[5].' p/p/p/n </h4>
<p><img src="'.$data[4].'" alt="'.$data[1].'" style="float:left;margin:0px 7px 3px 0px;text-align: justify;">
'.$data[2].'<br><br>
<a href="'.$data[0].'" title="'.$data[1].'">Meer informatie.</a>
</p>
';
}
}
fclose ($fp);
?>
gelukt :D bedankt!
Waar mag de rekening naartoe?
ik betaal wel in natura o.o
okey, dan graag 3 kratten bier opsturen.