|Nemo|
Ich habe mir ein Script installiert, das zufällige Werte ausgeben soll, wenn man einen HTML-Code einbindet.
Aber jetzt kommt an der Stelle, an der der HTML-Code eingefügt wurde:
Zitat: |
Warning: shuffle() expects parameter 1 to be array, null given in /usr/export/www/vhosts/funnetwork/hosting/wiegehtdas/bannertausch/inc/showb
anner/getbanner.inc on line 13 |
In Zeile 13 steht:
Woran liegt dieser Fehler?
|Nemo|
Erstmal danke!
Mit PHP kenne ich mich leider nicht so gut aus, deshalb kann ich damit jetzt nicht allzu viel anfangen.
Also gibt es ja demnach für $bid nur einen Wert, also kann auch nichts "geschuffelt" werden, richtig?
Radiation
Ich würde tippen das $bid kein Array ist und Shuffle funktioniert nur im Array.
|Nemo|
Das Scrip heißt Banex.
In der Datenbank sind ja drei Werte für verschiedene Banner, dann ist es doch ein Array, oder? Er soll ja einen zufällig ausgewählten davon anzeigen.
[kamui]
Also, enwteder du hängst die Zeilen an, wo $bid & shuffle drin sind, oder du hängst einfach mal die gesamte Datei an
Wenn dus nicht in den Thread stellen willst, kannste mich auch im ICQ anschreiben
|Nemo|
OK, dann hänge ich's mal an:
[kamui]
Puh, also sieht eigentlich richtig aus soweit. Allerdings kenne ich die Funktion "shuffle()" erst, seit du hier dein Problem schilderst. Hast du es schon einmal mit rand probiert?
|Nemo|
Nein, bisher noch nicht.
Sollte das dann so aussehen?
php: |
1:
2:
3:
4:
5:
6:
7:
|
srand ((float)microtime()*1000000);
rand ($bid);
srand ((float)microtime()*1000000);
rand ($bid);
$id = "$bid[0]";
$id2 = "$bid[1]"; |
|
lycoos
Wie wäre es mit array_rand?
php: |
1:
2:
3:
4:
5:
6:
|
<?php
srand((float) microtime() * 10000000);
$Banner = array("Banner1", "Banner2", "Banner3", "Banner4", "Banner5");
$rand = array_rand($Banner, 1);
echo $Banner[$rand[0]] . "\n";
?> |
|
[kamui]
Nemo, bevor du eine Funktion anwendest, solltest du immer lesen, wie man das tut
Hier empfehle ich dir
www.php.net 
Wenn du nicht erst auf die Page gehen willst, kannst du es auch so machen: php.net/FUNKTION (z.B.
www.php.net/rand)
|Nemo|
@Kamui: Hatte ich eigentlich auch. Aber ich wusste nicht, wie ich den Code genau verändern sollte.
@lycoos:
Etwa dann in meinem Fall so?
----------------
Statt:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
srand ((float)microtime()*1000000);
shuffle ($bid);
srand ((float)microtime()*1000000);
shuffle ($bid);
$id = "$bid[0]";
$id2 = "$bid[1]";
$checkban = "$banner[lastbannerid]";
If ($id == "$checkban"){
$id = "$bid[1]";
}
ElseIf ($id == ""){
$id = "$bid[1]";
}
ElseIf ($id != "$checkban" || $id != ""){} |
|
Das hier:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
$id = "$bid[0]";
$id2 = "$bid[1]";
$checkban = "$banner[lastbannerid]";
If ($id == "$checkban"){
$id = "$bid[1]";
}
ElseIf ($id == ""){
$id = "$bid[1]";
}
ElseIf ($id != "$checkban" || $id != ""){} |
|
Dann habe ich aber das hier nicht drin:
php: |
1:
|
$Banner = array("Banner1", "Banner2", "Banner3", "Banner4", "Banner5"); |
|
Könnte man das denn irgendwie so machen?
php: |
1:
2:
|
$Banner = array{
SELECT * FROM database_table}; |
|
Ich weiß, Syntax ist zu 100% falsch!
##################
Edit:
Mit diesem Code hier
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
|
$result_get_banner = mysql_query("SELECT user_login FROM users WHERE imp_left > 0 AND act='1' AND numban > 0");
while ($banner = mysql_fetch_array($result_get_banner)){
$bid[] = "$banner[user_login]";
}
$ip = getenv ("REMOTE_ADDR");
$bid[] = array("$banner[user_login]");
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
$id = "$bid[0]";
$id2 = "$bid[1]"; |
|
bekomme ich wenigstens keine Fehlermeldung mehr, aber auch keinen Banner:
http://hooklines.ho.funpic.de/
[kamui]
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
$result_get_banner = mysql_query("SELECT user_login FROM users WHERE imp_left > 0 AND act='1' AND numban > 0");
while ($banner = mysql_fetch_array($result_get_banner)){
$bid[] = "$banner[user_login]";
}
$ip = getenv("REMOTE_ADDR");
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
$id = "$bid[0]";
$id2 = "$bid[1]"; |
|
Probiers mal so. (Wieso machst du eigtl. ein array_rand rein, wenn du am Ende $id und $id2 sowieso feste Werte zuweist ?)
|Nemo|
Mit deinem Code kommt folgendes:
Zitat: |
Warning: array_rand() [function.array-rand]: First argument has to be an array in /usr/export/www/vhosts/funnetwork/hosting/wiegehtdas/bannertausch/inc/showb
anner/getbanner.inc on line 15 |
Da ist ja auch vor "rand" kein Array...
Was ist denn an meinem Code noch falsch? Denn eine Fehlermeldung kommt ja nicht mehr:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
|
$result_get_banner = mysql_query("SELECT user_login FROM users WHERE imp_left > 0 AND act='1' AND numban > 0");
while ($banner = mysql_fetch_array($result_get_banner)){
$bid[] = "$banner[user_login]";
}
$ip = getenv ("REMOTE_ADDR");
$bid[] = array("$banner[user_login]");
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1);
$id = "$bid[0]";
$id2 = "$bid[1]"; |
|
[kamui]
Also zu deinem Code:
- Du hast zweimal:
code: |
1:
2:
|
srand ((float)microtime()*1000000);
$rand = array_rand($bid, 1); |
|
drin, was unnötig ist, da es hintereinander ist, und die Variable $rand überschrieben wird.
- In Zeile 7 weist du dem Array $bid noch einen weiteren Wert zu, der selber ein Array ist, aber keinen Inhalt hat (denn es ist außerhalb der while()-Schleife, in der $banner gilt)
|Nemo|
Danke!
Ich habe jetzt hier schon viel gelernt und werde mich weiter damit beschäftigen und viele Seiten im Internet lesen, bis ich es rauskriege!
Das bringt glaube ich mehr, als wenn mir einer direkt den richtigen Code postet.
[kamui]
Das wird das beste sein. Denn "Learning by Doing" ist immernoch am besten, meiner Meinung nach