PHP Random href

Mercsen schrieb:
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.

Sicher... und zur guten Verwaltbarkeit könnte man rotzfrech einen spezifischen Ordner hardcoden und diesen dann z.B. per glob() auslesen lassen. Dann hätte man z.B. ein Array aller jpegs innerhalb dieses Ordners. Über diesen Array kann man dann iterieren, zufällige Positionen aus ihm herauspicken,...
 
Ok Tabelle steht.

Jetz den Code ins Widget
PHP:
<?php
    $ergebnis = mysql_query("SELECT * FROM tabelle ORDER BY RAND() LIMIT 1");
    $ergebnis = mysql_fetch_assoc($ergebnis);
?>
 <a href="<?php echo $ergebnis['link']; ?>"><img src="<?php echo $ergebnis['pfad']; ?>"><?php echo $ergebnis['alternativtext']; ?></a>

Und es geht trotzdem nicht..
 
Code:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/customers/webs/Hwexxy/cobranetwork/wp-content/plugins/php-code-widget/execphp.php(44) : eval()'d code on [...]

es kommen keine ergebnisse zurück, mit deren fetch_assoc was anfangen könnte
führ den befehl mal in phpmyadmin aus, was als ergebnis erscheint
heißt deine tabelle auch wirklich tabelle?
 
Wenn ich den Befehl direkt in phpmyadmin eingebe bekomme ich eine zufällige Ausgabe.
PHP:
<?php
    $ergebnis = mysql_query("select * from randomimg order by rand() limit 1");
    $ergebnis = mysql_fetch_assoc($ergebnis);
?>
 <a href="<?php echo $ergebnis['link']; ?>"><img src="<?php echo $ergebnis['pfad']; ?>"><?php echo $ergebnis['alternativtext']; ?></a>
 
ok dann ist die syntax in ordnung
hast du vor der abfrage auch beim verbindungsaufbau die richtige datenbank gewählt?
 
Eigentlich schon
<?php
$verbindung = mysql_connect("localhost",
"benutzername","trololololo");
?>
 
wieso wird hier eigentlichimmer gleich scharf geschossen, was ist nur mit dem forum los *zu daaron schiel*

ich sagte extra wenn es nicht viel mehr werden kann man es ruhig so machen! bei 3 oder 4 datensätzen ist es legitim die einfach in den quellcode zu schreiben, wieso auch nicht, kann man ja auch leicht wieder ändern dann.
besser als jedesmal die DB zu nerven oder eine datei auszulesen! Das es bei größeren mengen keinen sinn macht und schwerer zu warten ist steht da auch, aber ihr sucht hier immer wieder nur nen grund durff zu hauen, so machts langsam keinen spaß.

zumal man doch sieht was für probleme ihm diese (eigentlich nicht schwere (net böse gemeint)) aufgabe bereitet!

Und das es um den lernfaktor geht schließeich aus, denn der TE hat bisher absolut keine literatur gelsen sondern lässt sich hier nur schritt für schrtt die fehler korrigieren, was spräche also gegen eine einfache hardcoeded lösung?!

mysql_select_db() ist hier aber das zauberwort
 
Zuletzt bearbeitet:
Das Widget sieht momentan so aus
PHP:
<?php
$link = mysql_connect('localhost', ' Hwexxysql10', 'XXXXX');
if (!$link) {
    die('Verbindung nicht möglich : ' . mysql_error());
}
$db_selected = mysql_select_db('Hwexxysql10', $link);
if (!$db_selected) {
    die ('Kann foo nicht benutzen : ' . mysql_error());
}

    $ergebnis = mysql_query("select * from randomimg order by rand() limit 1");
    $ergebnis = mysql_fetch_assoc($ergebnis);
?>
 <a href="<?php echo $ergebnis['link']; ?>"><img src="<?php echo $ergebnis['pfad']; ?>"><?php echo $ergebnis['alternativtext']; ?></a>
Und es geht nicht.

(übriges die randomimg liegt in der gleichen datebank wie Wordpress)
 
Zuletzt bearbeitet:
wäre nett wenn sagst was genau nicht geht.
mach doch mal ein

Code:
 $ergebnis = mysql_query("select * from randomimg order by rand() limit 1");
var_dump($ergebnis);
    $ergebnis = mysql_fetch_assoc($ergebnis);
var_dump($ergebnis);

dann siehste was du von der db bekommst.


P.S. heißt die datenbank echt foo ?
 
Mercsen schrieb:
Und das es um den lernfaktor geht schließeich aus, denn der TE hat bisher absolut keine literatur gelsen sondern lässt sich hier nur schritt für schrtt die fehler korrigieren

für Photoshop, After Effects, HTML, CSS oder sonst etwas was ich relativ gut kann habe ich Bücher gelesen. Alles learning by doing.

/E
was genau nicht geht sieht man ja auf der Website. Da steht ja der Fehlercode

und dein code geht auch nicht^^
 
Zuletzt bearbeitet:
ja aber so lernst du jetzt was du konkret falsch gemacht hast, aber nichts über die strukturen im hintergrund, hättest du dir einmal durchgelesen wie man create_table, mysql_query, mysql_fetch_assoc oder gar mysql_connect + mysql_select_db() nutzt wären viele fragen hier hinfällig gewesen.
ich will dir nicht zu nahe treten und nichts unterstellen und dir weiter helfen, aber das ist so doch recht ineffizient ;)

naja da steht ja schon das er nicht mit der datenbank verbunden ist!

Code:
Warning: mysql_connect(): Access denied for user ' Hwexxysql10'@'localhost' (using password: YES)

entweder gibt es den user nicht oder das pw ist falsch
 
Naja wenn ich es nicht lernen wollen würde, würde ich sagen Gebt mir mal den Code dafür, Danke.
Aber ich versuche ja nebenbei auch nochmal ein paar sachen.

Wenn ich wüste was nicht geht wäre es super.
Laut dem fehlercode bekomme ich keinen zugriff zur db

Code:
Warning: mysql_connect(): Access denied for user '  Hwexxysql10'@'localhost' (using password: YES) in  /var/customers/webs/Hwexxy/cobranetwork/wp-content/plugins/php-code-widget/execphp.php(44)  : eval()'d code on line 2  Call Stack:     0.0002     641400   1. {main}()

Daten sind richtig sonst würde Wordpress nicht laufen^^
 
frage mich wieso da steht das der code eval'd ist.
kenne mich da mit wp net genügend aus, sieht aber so aus als würde wp deinen code durch nen parser jagen.

guck mal in der conf datei von wp, welcher user und welches pw dort für die db eingetragen sind.

k.a. ob es daran liegt, aber in der fehlermeldung steht Access denied for user ' Hwexxysql10'@'localhost'

mit einem leerzeichen, k.a. wo das herkommt oder ob das nur nen formatierungsfehler von php ist, ansonsten versucht er mit' Hwexxysql10' einzuloggen und den user gibts wohl nicht, da er mit einem leerzeichen anfängt

edit:
ahja doch, du hast in der mysql_connect ' Hwexxysql10' stehen, ändere das mal zu 'Hwexxysql10'
 
Zuletzt bearbeitet:
siehe edit, du gibts dem usernamen ein leerzeichen zu viel mit
 
Aha ein Leerzeichen^^ Das habe ich gar nicht gesehen^^

Jetzt geht es aber da steht jetzt immer ein störender Text
resource(175) of type (mysql result) array(4) { 'Name' => string(8) "ApplyNow" 'pfad' => string(61) "http://officialtcn.com/wp-content/uploads/Bilder/applynow.jpg" 'link' => string(38) "http://officialtcn.com/partnership.htm" 'alternativtext' => string(27) "Apply now for a Partnership" }

und der Alternativ Text wird immer angezeigt

(bis jetzt ist nur das applynow Bild online)
 
Mercsen schrieb:
wieso wird hier eigentlichimmer gleich scharf geschossen, was ist nur mit dem forum los *zu daaron schiel*

ich sagte extra wenn es nicht viel mehr werden kann man es ruhig so machen! bei 3 oder 4 datensätzen ist es legitim die einfach in den quellcode zu schreiben, wieso auch nicht, kann man ja auch leicht wieder ändern dann.

Wieso? Was spricht gegen glob()? Eine solche Lösung ist leicht zu integrieren und noch viel leichter zu managen. Füttere den richtigen Ordner mit jpegs und den Rest erledigt PHP dann. Lieber lager ich alle Bilder, durch die iteriert werden soll, in einen einheitlichen Ordner, als dass ich jedes Mal a) ne Datenbank anfasse oder b) den PHP-Code umschreibe, nur um ein Bild zu ändern.
 
Wie bekomme ich den jetzt den Text weg?
Code:
resource(176) of type (mysql result) array(4) {   'Name' =>   string(20) "Director Application"   'pfad' =>   string(66) "http://officialtcn.com/wp-content/uploads/Bilder/applydirector.jpg"   'link' =>   string(35) "http://officialtcn.com/director.htm"   'alternativtext' =>   string(21) "Apply now as Director" }
 
ahh o-kai.
ich habe den text wohl zu sarkastisch interpretiert ;)
ich wäre aber auch dagegen weil mir das zu aufwendig wäre bei so wenig datensätzen den ganzen ordner zu durchsuchen, bei meheren bildern aber absolut richtig, würde ich auch so machen.

mach die var_dump befehle weg ;)

wenn der alatertiv text nicht immer angezigt werden soll, packe ihn in ein ALT tag ;)

Code:
 <a href="<?php echo $ergebnis['link']; ?>"><img src="<?php echo $ergebnis['pfad']; ?>" alt="<?php echo $ergebnis['alternativtext'];" ?> /></a>
 
Zuletzt bearbeitet:
Zurück
Oben