[PHP] Random script geeft onjuist aantal

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
Beste mede Tweakers,

Ik heb hier een script dat wordt gebruikt om random tutorials van een Photoshop site te laten zien.

We hebben momenteel 36 tutorials wat dus een gelijk aantal is maar toch gaat het fout. Het probleem is namelijk dat er soms 4, soms 5, soms 3 en zelfs soms maar 2 tutorials worden getoond. Heel willekeurig. Soms dan geeft ie netjes een aantal keer achter elkaar 5 tutorials aan maar dan ineens 4, 3 en de volgende pagina 2.

Dit ondanks dat het aantal op 5 staat. Zie ook de regel $aantal = 5;.

De regel $image[] = "http://domein.ext/images/1.jpg"; staat er dus 36 keer in.

Script:
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
$image = array();

$image[] = "http://domein.ext/images/1.jpg";

$gehad = array();

$aantal = 5;

while(sizeof($gehad) < min(sizeof($image), $aantal))

{

  $rand = rand(0, sizeof($image)-1);

  if(!in_array($rand, $gehad))

  {

    $gehad[] = $rand;

  }

}

$i = 0;

foreach($gehad as $v)

{

  $id = $v+1;

  echo "<a href=\"link.php?id=".$id."\">[img]\"".$image[$v]."\"[/img]</a>";

  $i++;

  if($i == 2) {

    echo "";

    $i = 0;

  }

}


Wat kan hier nu fout gaan? Ik heb ook al geprobeerd om 4 of 3 neer te zetten op de plek van $aantal = 5; maar dan nog blijft het probleem zich voort doen. Iemand enig idee hoe ik dit kan oplossen? Heel erg bedankt alvast.

[ Voor 48% gewijzigd door TommyGun op 29-04-2006 21:34 ]

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • intoxicated
  • Registratie: Januari 2001
  • Niet online

intoxicated

Haaaai :w | ALT-S

Weet je zeker dat je die array goed opbouwt in de regels die je nu weg laat? Want met je code is zotezien niks mis.

"Anyone who does not agree with me is mentally sick, and should be shot I'm afraid to say."
- Pastor Richards @ VCPR


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
intoxicated schreef op zaterdag 29 april 2006 @ 21:42:
Weet je zeker dat je die array goed opbouwt in de regels die je nu weg laat? Want met je code is zotezien niks mis.

Mij lijkt dat dit moet kloppen;

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
$image[] = "images/tutorials/random/100_brush_text.png";

$image[] = "images/tutorials/random/100_bubble_text.png";

$image[] = "images/tutorials/random/100_button.png";

$image[] = "images/tutorials/random/100_button2.png";

$image[] = "images/tutorials/random/100_censoring.png";

$image[] = "images/tutorials/random/100_coloring.png";

$image[] = "images/tutorials/random/100_eye_ball.png";

$image[] = "images/tutorials/random/100_eye_color.png";

$image[] = "images/tutorials/random/100_fire_ball.png";

$image[] = "images/tutorials/random/100_gameboy_classic.png";

$image[] = "images/tutorials/random/100_hot_keys.png";

$image[] = "images/tutorials/random/100_image_text.png";

$image[] = "images/tutorials/random/100_ipod.png";

$image[] = "images/tutorials/random/100_mix_effect.png";

$image[] = "images/tutorials/random/100_nav_bar.png";

$image[] = "images/tutorials/random/100_neon_stick.png";

$image[] = "images/tutorials/random/100_nose_correction.png";

$image[] = "images/tutorials/random/100_orb.png";

$image[] = "images/tutorials/random/100_outcoming_text.png";

$image[] = "images/tutorials/random/100_pattren_diagonal.png";

$image[] = "images/tutorials/random/100_pattren_scanline.png";

$image[] = "images/tutorials/random/100_pattren_squares.png";

$image[] = "images/tutorials/random/100_photo_fuse.png";

$image[] = "images/tutorials/random/100_photo_touch_up.png";

$image[] = "images/tutorials/random/100_photo_poloroid.png";

$image[] = "images/tutorials/random/100_reflection.png";

$image[] = "images/tutorials/random/100_photo_screen.png";

$image[] = "images/tutorials/random/100_signature_border.png";

$image[] = "images/tutorials/random/100_skin_color.png";

$image[] = "images/tutorials/random/100_slice.png";

$image[] = "images/tutorials/random/100_style_flower.png";

$image[] = "images/tutorials/random/100_tattoo.png";

$image[] = "images/tutorials/random/100_teeth_whitner.png";

$image[] = "images/tutorials/random/100_tentacels.png";

$image[] = "images/tutorials/random/100_wires.png";

[ Voor 20% gewijzigd door TommyGun op 29-04-2006 21:45 ]

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
offtopic:
aargh verkeerde knop

[ Voor 200% gewijzigd door BasieP op 29-04-2006 21:48 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Is het niet makkelijker om deze functie te gebruiken:

http://php.nederland.net/array_rand

Dat scheelt je in ieder geval een hoop regels code. Wellicht dat het ook je probleem oplost.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik heb het hier even getest, en er lijkt niets mee mis te zijn. Weet je zeker dat er geen andere code in de weg zit? Anders lijkt me dit een hele vreemde bug. Probeer $gehad eens te dumpen nadat je hem hebt opgebouwd. Gewoon alles dumpen, dan weet je snel waar het mis gaat.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
Michali schreef op zondag 30 april 2006 @ 15:51:
Ik heb het hier even getest, en er lijkt niets mee mis te zijn. Weet je zeker dat er geen andere code in de weg zit? Anders lijkt me dit een hele vreemde bug. Probeer $gehad eens te dumpen nadat je hem hebt opgebouwd. Gewoon alles dumpen, dan weet je snel waar het mis gaat.
Bedankt voor het testen. Ik zal hem morgen eens apart includen ipv gewoon in de index te gooien.

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Keep in mind, dat er ook tutorials bij (kunnen) komen. Als dat het geval is, dan zou je je script telkens weer aan moeten passen.

Kan je dan niet beter de image (filename) opslaan in de database?
Dan kan je middels SQL je array met gemak uitbreiden... :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$query = "SELECT COUNT(*) as number FROM `tutorials`";
$result = mysql_query($query);
if(!$result)
{
    echo mysql_error();
}
else
{
    while($row = mysql_fetch_assoc($result))
    {
        $number = $row['number'];
    }
}

$random = rand(1, $number);
$plaatje = "pad/naar/plaatje/". $random .".ext";
Of denk ik nu verkeerd? :?

[ Voor 11% gewijzigd door CH4OS op 30-04-2006 22:25 ]


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Je idee is op zich goed GJ-tje, maar zitten wel wat dingetjes in die niet al te praktisch zijn :P
Als de query failed bijvoorbeeld, zal $number niet bestaan op line 15.
Een count op * kan in een grote db ook nog wel 'ns voor performanceproblemen zorgen...

Hoe dan ook lijkt het mij ook verstandiger om het gewoon in een database op te slaan, waarschijnlijk gebeurt dat nu toch ook met de URL e.d.?

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Als je het al in een DB opslaat dan zou ik gewoon zoiets doen:
SQL:
1
SELECT id, image_url FROM tutorials ORDER BY RAND() LIMIT 5

;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

blizt schreef op zondag 30 april 2006 @ 23:58:
Je idee is op zich goed GJ-tje, maar zitten wel wat dingetjes in die niet al te praktisch zijn :P
Als de query failed bijvoorbeeld, zal $number niet bestaan op line 15.
Een count op * kan in een grote db ook nog wel 'ns voor performanceproblemen zorgen...
Ik heb de code ook even snel geschreven... ;)
Volgens mij word $number ook gemaakt, alleen heeft die geen waarde (null dus) en daar is een extra check natuurlijk zo op gemaakt... :)

[ Voor 7% gewijzigd door CH4OS op 01-05-2006 00:29 ]


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
De URL's naar de tutorials worden idd nog in de database gezet. Telkens het script aanpassen is niet zo'n probleem. Even met FTP progsel naar de host en het is zo gebeurd. Maar ik snap niet waarom het niet werkt. Zojuist even geinclude en gekeken of er andere scriptjes zouden draaien die zouden kunnen storen maar dat is niet het geval.

Ben zelf totaal geen held op PHP / MySQL gebied en heb dit script dan ook voor gedeeltes afgekeken en met een vriend gemaakt maar toch bedankt voor de hulp. Ik ga eens kijken voor een andere oplossing.

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Geef de volledige code eens waarmee het op jouw server fout gaat. (Wel graag strippen tot een zo minimale vorm, maar die moet je zelf dan ook even testen of het nog steeds fout gaat) Dan kunnen we zien of daar is vreemds mee aan de hand is.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
Michali schreef op maandag 01 mei 2006 @ 14:18:
Geef de volledige code eens waarmee het op jouw server fout gaat. (Wel graag strippen tot een zo minimale vorm, maar die moet je zelf dan ook even testen of het nog steeds fout gaat) Dan kunnen we zien of daar is vreemds mee aan de hand is.
Heb even de index in een zip gegooid; http://www.gamergun.com/files/1/index.zip

Bedankt :)

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Sorry, maar daar heb ik niet zo veel aan. De betreffende code van hierboven staat daar ook niet eens in. Ik bedoel, maak een zo klein mogelijk scriptje waarin de fout nog steeds voorkomt, en post die even.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
Michali schreef op maandag 01 mei 2006 @ 14:43:
Sorry, maar daar heb ik niet zo veel aan. De betreffende code van hierboven staat daar ook niet eens in. Ik bedoel, maak een zo klein mogelijk scriptje waarin de fout nog steeds voorkomt, en post die even.
Die staat geinclude ja als random.php. Maar strippen zal niet gaan gezien alles essenstieel is. Anders had ik het er net zo goed niet in kunnen coden he ;) Maar goed heb de helft er uit gegooid behalve de includes en nog werkt het niet, zie;

http://www.gamergun.com/files/1/index2.zip

En de random.php dan ook maar; http://www.gamergun.com/files/1/random.zip

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Als je random.php alleen draait, dan krijg je dus niet altijd 5 links? Hier wel namelijk.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
Michali schreef op maandag 01 mei 2006 @ 14:55:
Als je random.php alleen draait, dan krijg je dus niet altijd 5 links? Hier wel namelijk.
Jawel dat werkt perfect. Het is echter de bedoeling dat het gewoon op de site werkt want anders heb ik er nog niet veel aan. Ik vind het maar vreemd. Hij zou alleen met de andere includes kunnen storen maar die kan ik niet weg halen.

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 20-09 13:36

TommyGun

Stik er maar in!

Topicstarter
Oke het werkt :D Er stonden wat links in die niet werktte maar gefixed en het werkt :D

Allemaal heel erg bedankt!

“In a world without walls and fences, who needs Windows and Gates".

Pagina: 1