PHP Random href

som3

Lieutenant
Registriert
Jan. 2010
Beiträge
992
Hallo Cbler.
Ich arbeite gerade an einem Wordpress Blog.
(http://officialtcn.com/)
Oben Recht seht ihr bestimmt das Bild Apply Now.
Ich möchte gerne das Random mäßig auch andere Bilder aus dem Ordner angezeigt werden.
Ich habe schon dafür gesorgt das im dem Text Widget von Wordpress PHP läuft.
Ein Random img ausgeben wäre auch kein Problem.
Allerdings soll ein Random a href ausgegeben werden.
Vielleicht könnte man die Codes in TXT Dateien schreiben
codebild1.txt codebild2.txt usw und das dann Random mäßig ausgeben lassen.

Nur Bilder könnte man ja so ausgeben:
PHP:
<?php
$Bilder = array("Bild1-gif","Bild2-gif","Bild3-gif");
$anzahl = count($Bilder);
$Bild = rand(1,$anzahl);
echo '<img src="'.$Bilder[$Bild].'" Border="0">';
?>
Das ganze für den Random code:

PHP:
<?php
$codes = array("http://officialtcn.com/wp-content/uploads/Bilder/01.txt","http://officialtcn.com/wp-content/uploads/Bilder/02.txt","http://officialtcn.com/wp-content/uploads/Bilder/03.txt");
$anzahl = count($codes);
$code = rand(1,$anzahl);
echo '$codes[$code]'';
?>
Beim echo bin ich mir aber nicht ganz sicher ob es Funktioniert.
Des wie man auf der Seite sieht, tut es das momentan nichts.
 
Zuletzt bearbeitet:
Hallo.

Probier mal

PHP:
echo $codes[$code];
oder
echo "{$codes[$code]}";

mfg Barton
 
Hey,
Hat das Problem leider nichts gelöst.
Gibts immer noch eine PHP Fehlermeldung

PHP:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,  expecting ',' or ';' in BLABLABLA
 
Hallo.

Also diese Codes

PHP:
    <?php
    $codes = array("http://officialtcn.com/wp-content/uploads/Bilder/01.txt","http://officialtcn.com/wp-content/uploads/Bilder/02.txt","http://officialtcn.com/wp-content/uploads/Bilder/03.txt");
    $anzahl = count($codes);
    $code = rand(0,$anzahl-1);
    echo $codes[$code];
    ?>

und

PHP:
    <?php
    $Bilder = array("Bild1-gif","Bild2-gif","Bild3-gif");
    $anzahl = count($Bilder);
    $Bild = rand(0,$anzahl-1);
    echo '<img src="'.$Bilder[$Bild].'" Border="0">';
    ?>
funktionieren hier fehlerfrei.

Der Fehler muss wohl irgendwo anders liegen.

(Arrays beginnen bei 0, deshalb habe ich rand() angepasst...)

mfg Barton
 
Okay, jetzt geht es, fast.
Er gibt nicht den Inhalt der txt aus sondern den Link den ich eingetragen habe.
 
Moin Som3!
Natürlich gibt er den link aus, was anderes steht im array ja auch nicht drinne!
Du musst verstehen das "http://officialtcn.com/wp-content/uploads/Bilder/01.txt" für php nichts weiter als eine zeichnkette ist, ohne sinn, ohne bedeutung ohne zu wissen was damit gemacht werden soll.

wenn du jetzt den inhalt lesen willst musst die datei per hand öffnen (fopen) und auslesen (fgets), auswerten und ausgeben!

hier mal das erste gogle ergebniss: http://www.webmaster-eye.de/Dateien-mit-PHP-einlesen.181.artikel.html

wenn die txt datein auch noch auf einer anderen url liegen kann es aber sein das php diese datein nicht lädt wenn die php.ini fremde datein verbietet.
 
wenn es mehrere bilder sind, warum machst du dir nicht eine tabelle in der datenbank mit
- bildid
- pfad zum bild
- alternativtext
- link (href)

und machst ne randomfunktion und lädst dir dann einfach ganz variabel die benötigten informationen aus der tabelle
 
Das mit der TXT war ja nur mal eine Idee von mir.
Es gibt doch bestimmt noch einfachere Möglichkeiten oder?
Ergänzung ()

Datenbank könnte ich anlegen.
Wie würde denn dann der PHP code dafür aussehen?
 
oh ist das lange her
Code:
$ergebnis = mysql_query("select * from TABELLE order by rand() limit 1"); 
$ergebnis = mysql_fetch_assoc($ergebnis);

und dann einfach
Code:
<a href='<?php echo $ergebnis("link"); ?>'><img src='<?php echo $ergebnis("pfad"); ?>'><?php echo $ergebnis("alternativtext"); ?></a>
 
Zuletzt bearbeitet von einem Moderator:
Code:
$ergebnis = mysql_query("select * from TABELLE order by rand() limit 1");

wird so nicht funktionieren.
Die RAND() methode von mysql erzeugt nämlich einen float wert von 0.0 - 1.0,
also muss man die von php nehmen!

Code:
$ergebnis = mysql_query('select * from TABELLE order by ' . rand(0,2) .' limit 1');

aber auchso gehts net, man kann nur ein feld angeben nachdem sortiert weden soll

Code:
$ergebnis = mysql_query('select * from TABELLE order by id limit 1');

um jetzt zufall zu haben

Code:
$ergebnis = mysql_query('select * from TABELLE where id = ' . rand(0,2) .');


die 0,2 muss man halt anpassen, an die anzahl der einträge, das ist aber wirklich die quickest und dirtyest methode ;)

eie und auch die ausgabe wird so net funktionieren, $ergebniss ist doch keine funktion ;)

Code:
<a href="<?php echo $ergebnis['link']; ?>"><img src="<?php echo $ergebnis['pfad']; ?>"><?php echo $ergebnis['alternativtext']; ?></a>

in der annahme das es in der tabelle die felder, link, pfad und alternatovtext gibt.

P.S.
nimm dir doch am besten mal 30 minuten zeit und lese dich in die basics ein, wie und was ist ein query etc, dann hast das ganz schnell gelöst und dauert wirklich nicht lange
 
Zuletzt bearbeitet:
Der Quick&Dirty - Hack wäre eher:
SELECT * FROM tabelle ORDER BY RAND() LIMIT 1

Bei großen Tabellen ein Monster an Overhead, bei kleinen Tabellen aber echt schnurzegal. Du wirst ja wohl kaum 100.000 Bilder drin haben.
 
oh man order by rand() geht ja tatscählich, ich ziehe alles von oben zurück

bei so wenig daten würde ich das ganze aber eifach hardcoded im code schreiben, unsinn bei 3 datensätzen eine datenbank zu benutzen, es sei dennn es ist absehbar das es später viel mehr werden wird.
 
Ich versuche es mal mit der Datenbank^^ Dann ist es einfacher Bilder zu Tauschen oder hinzuzufügen
Allerdings bekomme ich immer einen error. mein SQL code:
Code:
CREATE TABLE randomimg
(
'Name' char(100) NOT NULL,
'pfad' char(100) NOT NULL,
'link' char(100) NOT NULL,
'alternativtext' char(100) NOT NULL,
) TYPE=MyISAM;

INSERT INTO bilder VALUES
('bild01', 'http://officialtcn.com/wp-content/uploads/Bilder/applynow.jpg', 'http://officialtcn.com/partnership.htm', 'Apply now for a Partnership');
('bild02', 'http://officialtcn.com/wp-content/uploads/Bilder/visitforum.jpg', 'http://forum.officialtcn.com/', 'Visit our Forum');
('bild03', 'http://officialtcn.com/wp-content/uploads/Bilder/applydirector.jpg', 'http://officialtcn.com/director.htm','Apply now as Director');
 
denek es müsste engine und nicht typ heißen

Code:
CREATE TABLE  `randomimg` (
`name` VARCHAR( 100 ) NOT NULL ,
`pfad` VARCHAR( 100 ) NOT NULL ,
`link` VARCHAR( 100 ) NOT NULL ,
`text` VARCHAR( 100 ) NOT NULL
) ENGINE = MYISAM

habs aber mit phpmyadmin erstellen lassen :p


das dein insert nicht klappt weil du in die tabelle bilder schreiben willst, die eben erstellte aber randomimg heiß muss ich dir net sagen, oder? ;)
 
Zuletzt bearbeitet:
Ups^^
Naja geht trotzdem nicht -_-
Code:
#1064 - You have an error in your SQL syntax; check the manual  that corresponds to your MySQL server version for the right syntax to  use near ''Name' char(100) NOT NULL,
'pfad' char(100) NOT NULL,
'link' char(100) NOT NUL' at line 3
 
lass mal die hochkommata weg! und nimm ` (shift und die taste neben backspace) (kann aber auch weggelassen werden, sql brauch nur bei einem insert von einem string hochkommata

oder erstell die table direkt mit phpmyadmin ;)
wer macht das schon per hand? :D
 
Ich mache es ja im phpmyadmin. als SQL Befehl
Wenn ich einfach so eine Tabelle erzeuge kann ich nur die Values bearbeiten
Allerdings nicht oben die Reiter.
BZW ich weiß nicht wie es geht.
Und durch Google bin ich halt auf den sql Befehl gekommen.
 
du öffnest phpma.
wählst links eine datenbank aus, wenn nicht schon eine automatisch ausgewähöt wird.

dann scrollst im rechten fenster nach ganz unten und dort steht dann:

erzeuge neue Tabelle in Datenbank XYZ:
[name] [felder]

name = randomimg, felder = 4 und dann kannst du ganz einfach deine tabelle erstellen.

Über den Reiter "Strucktur" kannst du dir die tabe angucken und ändern, bei ansicht siehtst du die inhalte und bei einfügen kannst du inhalte einfügen.

Inhalte sind hier jetzt die konkreten werte wie bild1.gif, bild2.gif. etc.

wenn meinen gepostetn code kopierst geht der zu 100%, ersetze die `halt nicht durch ' !
 
Ne ich kann die Values bearbeiten.
Allerdings nicht die oberen spalten.
# Name Typ Kollation Attribute Null Standard Extra Aktion
 
ja das sind die Spalten namen!
Nix mit values

Name = bild
typ = varchar

name= link
yp = varchar

etc.

nachdem das erledigt hast kannst du über "einfügen" werte einfügen,
ich gehe jetzt zum sport, wenn ich wieder da bin und du kämpfst noch mache ich dir nen video :p

hab vertrauen in jemanden der seit 10 jahren damit arbeitet ;)
 
Zurück
Oben