echo mouseover Fehler

geht leider wieder nicht.
Quelltext:
HTML:
<img alt="" class="aktuelles_bild" onmouseover="wechsel('News Text!','veröffentlicht am 04. September 2010 in Allgemein','<img src="image/zumartikel.png" />');" src="bilder/aktuell1.png">

Anzeige: ');" src="bilder/aktuell1.png">News Text!
veröffentlicht am 04. September 2010 in Allgemein

Das Bild wird also nicht angezeigt.
 
Ach, nochmal sorry, habe mich wieder vertan.
Probier mal folgendes (ohne Garantie ;))
PHP:
echo "<img alt=\"\" class=\"aktuelles_bild\" onmouseover=\"wechsel('".$row['titel']."','veröffentlicht am ".$row['tag'].". ".$row['monat']." ".$row['jahr']." in ".$row['kategorie']."','<img src=\'image/zumartikel.png\' />');\" src=\"bilder/".$row['small_bild']."\">";
 
der mouseover funktioniert schonmal wieder. Jedoch wird anstatt dem Bild folgendes angezeigt: <img src='image/zumartikel.png' />

Quelltext:
HTML:
<img alt="" class="aktuelles_bild" onmouseover="wechsel('News Text!','veröffentlicht am 04. September 2010 in Allgemein','<img src=\'image/zumartikel.png\' />');" src="bilder/aktuell1.png">
 
In dem Fall lohnt es sich mal mit sprintf() zu arbeiten udn die Variablen im Nachhinein hineinformatieren
PHP:
<?php
$row = array(
            'title' => 'myTitle',
            'tag' => 17,
            'monat' => 9,
            'jahr' => 2010,
            'kategorie' => 'test',
            'small_bild' => 'small.jpg');

$tag = <<<EOT
<img 
    alt="" 
    class="aktuelles_bild" 
    onmouseover="wechsel('%s','veröffentlicht am %d. %d %d in %s','<img src='image/zumartikel.png' />');\" 
    src="bilder/%s" />
EOT;
$html = sprintf($tag, $row['titel'], $row['tag'], $row['monat'], $row['jahr'], $row['kategorie'], $row['small_bild']);
echo $html;
?>

Ausgabe:
HTML:
<img 
    alt="" 
    class="aktuelles_bild" 
    onmouseover="wechsel('','veröffentlicht am 17. 9 2010 in test','<img src='image/zumartikel.png' />');\" 
    src="bilder/small.jpg" />

Mit <<< kann man ebenfalls einen Text einleiten. Darin musst du ' und " nicht escapen.heredoc heisst diese String-Zuordnung.
Man kann auch dort direkt Variablen einfügen. jedoch finde ich es bei einem so komplexen String mit ' und " drin einfacher die Variablen mit dem Platzhalter zu lesen und sie später mit sprintf() einzufügen.

Nachtrag:
mit vsprint() kannst du gleich $row als Argument übergeben. Du musst nur das $ im String für die Argumentreihenfloge escapen
PHP:
<?php
$row = array(
            'title' => 'myTitle',
            'small_bild' => 'small.jpg',
            'kategorie' => 'test',
            'tag' => 17,
            'monat' => 9,
            'jahr' => 2010);

$tag = <<<EOT
<img 
    alt="" 
    class="aktuelles_bild" 
    onmouseover="wechsel('%1\$s','veröffentlicht am %4\$d. %5\$d %6\$d in %3\$s','<img src='image/zumartikel.png' />');\" 
    src="bilder/%2\$s" />
EOT;
$html = vsprintf($tag, $row);
echo $html;
?>
 
Zuletzt bearbeitet:
Danke schonmal für die ganze Mühe, die du dir machst. Aber ich komme damit noch nicht ganz klar. Die Inhaltsdaten bekomme ich immer aus einer MySQL Datenbank. Meine Abfrage habe ich seither immer mit
PHP:
$sql = " SELECT * FROM aktuelles ORDER BY id DESC LIMIT 5";
            $result = mysql_query($sql);
            while($row = mysql_fetch_assoc($result)) { 
....
;}
gemacht.
Wie baue ich diese jetzt ein?
 
Also meine ganzen Inhalte sind in einer Tabelle in einer MySQL Datenbank gespeichert.

So sah meine Abfrage aus:
PHP:
 <?php include_once("db.php"); 
            
            $sql = " SELECT * FROM aktuelles ORDER BY id DESC LIMIT 5";
            $result = mysql_query($sql);
            while($row = mysql_fetch_assoc($result)) { 
               echo "<img alt=\"\" class=\"aktuelles_bild\" onmouseover=\"wechsel('".$row['titel']."','veröffentlicht am ".$row['tag'].". ".$row['monat']." ".$row['jahr']." in ".$row['kategorie']."','<img src=\'image/zumartikel.png\' />');\" src=\"bilder/".$row['small_bild']."\">";} ?>
            <?php
            $abfrage = " SELECT * FROM aktuelles ORDER BY id DESC LIMIT 1";
            $ergebnis = mysql_query($abfrage);
            while($row = mysql_fetch_assoc($ergebnis)) { 
               echo '<div id="aktuelles_text">'.$row['titel'].'</div><div id="aktuelles_sub">veröffentlicht am '.$row['tag'].'. '.$row['monat'].' '.$row['jahr'].' in '.$row['kategorie'].'</div><div id="aktuelles_artikel">l</div>';}
            ?>

Die Datenbankverbindung etc. ist in dem Code von yaslaw ja nicht eingebaut. Es werden immer die neusten 5 Einträge angezeigt. Es werden also 5 Vorschaubilder angezeigt und wenn man eines per mouseover auswählt, erscheint jeweils der dazugehörige Text. Und diese Abfrage muss in den Code ja noch eingebaut werden.

Gruß
 
Zurück