Wie am besten lösen ****?

Raptor72

Mitglied
Hi Leute,

ich bins mal wieder mit einer Frage wie ich eine Sache am besten lösen kann bzw. auch wie es geht.
Ich wollte eine Ausgabe von per PHP gelesenen Daten in einem Iframe machen, wo man allerdings nur nach rechts oder links scrollen können soll.
Dient der Übersicht und sieht auch gut aus finde ich zumindest.

Nun die Frage, in einer Zeile funktioniert das mit der Datenausgabe gut, aber wie regel ich das mit den anderen Spalten am besten ?

Code:
      <table align="center" width="3000">
      <tr>
      <td width="380">
        <h2 class="Stil5"><u>Wurst und mehr</u></h2></td>
        <td width="120"><font size="2">* = Hausgemacht</font></td>
        
      <td width="380">
        <h2 class="Stil6"><u>Aus Kartoffeln</u></h2></td>
        <td width="120"></td>
        
      <td width="380">
        <h2 class="Stil7"><u>Tellergerichte</u></h2></td>
        <td width="120"></td>
        
      <td width="380">
        <h2 class="Stil7"><u>Getr&auml;nke</u></h2></td>
        <td width="120"></td>
        
      <td width="380">
        <h2 class="Stil7"><u>Salate</u></h2></td>
        <td width="120"></td>
        
      <td width="380">
        <h2 class="Stil7"><u>Sonstiges</u></h2></td>
        <td width="120"></td>
      </tr>
      
  <?php            
	  $fleisch = mysql_query('SELECT name, kommentar, preis FROM fleisch');
	  	   
      while ($row = mysql_fetch_object($fleisch))

	     {
	       echo '<tr>';
		   echo '<td><b><font size="4"><z>' . $row->name . '</z></font></b>';
		   echo '<br><b><font size="4">' . $row->kommentar . '</font></td>';
		   echo '<td><span align="left"><b><font size="4">' . $row->preis . '</font></b></span></td>';
		   echo '</tr>';
		 }
	  
	?>


Und nun noch eine kleine andere Frage, ich habe mit css eine "Funktion" deklariert, die funktioniert bei Firefox super, allerdings mal wieder im internet Explorer nicht, wie so häufig, warum nicht ****

Code:
z:hover {
	color:#06F;
	font-family:"Monotype Corsiva";
	font-size:24px;
	}


Schon jetzt wieder danke für eure Hilfe :D
 
Ich kann dir die zweite Frage beantworten.

Der IE<=6 unterstützt den ":hover" Selektor nur auf Links (a-Elemente).
Mir ist noch nie ein "z" Element untergekommen, was machst du damit?
 
Das z ist einfach nur so von mir deklariert damit ich überhaupt ein Element habe, hat sonst keine nähere bedeutung :-D

Arbeite mit Windows 7 und benutze zu Testzwecken den IE 8 , also sollte es doch normal gehen oder nicht wenn du schreibst IE <= 6 unterstütst das nicht bzw. nur auf die a Links.
 
Zuletzt bearbeitet:
Dann liegt es wohl an dem "z", weil das nicht zum HTML Standard gehört. Ersetz mal
PHP:
<z>' . $row->name . '</z>

durch

PHP:
<span class="z">' . $row->name . '</span>

Und das css so abändern (ein Punkt vor dem z)
CSS:
.z:hover {
    color:#06F;
    font-family:"Monotype Corsiva";
    font-size:24px;
    }
 
Nein funktioniert nicht mit der Änderung, dann geht es bei Firefox auch nicht mehr.

Aber ist auch nicht ganz so tragisch wenn es bei IE net geht :-D denn wichtiger ist ja dass das angezeigt wird was wichtig ist, das css sollte nur ein kleines Schmankerl sein.
 
Habe nochmal etwas rumprobiert und eine andere Lösung soweit gefunden, wo aber auch wieder andere Probleme jetzt auftreten und ich nicht weiß warum, also immernoch bitte um Hilfe ;-)

PHP:
<?php
      $ergebnis = mysql_query('SELECT f.f_name, f.f_kommentar, f.f_preis, k.k_name, k.k_kommentar, k.k_preis, t.t_name, t.t_kommentar, t.t_preis FROM fleisch f, kartoffel k, teller t');
         $display = '';
      while ($row = mysql_fetch_object($ergebnis))


         {
           
           $display .= '<tr>';
          
           $display .= '<td>';
           $display .= $row->f_name;
           $display .= '<br>';
           $display .= $row->f_kommentar;
           $display .= '</td>';
           $display .= '<td>';
           $display .= $row->f_preis;
           $display .= '</td>';
          
           $display .= '<td>';
           $display .= $row->k_name;
           $display .= '<br>';
           $display .= $row->k_kommentar;
           $display .= '</td>';
           $display .= '<td>';
           $display .= $row->k_preis;
           $display .= '</td>';
          
           $display .= '<td>';
           $display .= $row->t_name;
           $display .= '<br>';
           $display .= $row->t_kommentar;
           $display .= '</td>';
           $display .= '<td>';
           $display .= $row->t_preis;
           $display .= '</td>';
           
           $display .= '</tr>';
         }
        echo $display;


?>

So, es funktionert jetzt mit echo $display; , allerdings wird mir jetzt von jeder "Sache" alles 4 mal angezeigt
Also jeder Datensatz (z.B. Currywurst,klein / Currywurst, groß ) der in der Tabelle steht wird mir gleich 4 mal ausgegeben.

Woran liegt das schon wieder ?
 
Das liegt an deinem Select-Statement. Da du keine Join-Bedingung angibst, wird mit allen drei Tabellen ein Kreuzprodukt erstellt.

Am besten guckst du dir die Ergebnisse deiner Queries vorher in einem externen Tool an. Oft wird phpmyadmin benutzt, aber ich empfehle HeidiSql (http://www.heidisql.com/).
 
Das liegt an deinem Select-Statement. Da du keine Join-Bedingung angibst, wird mit allen drei Tabellen ein Kreuzprodukt erstellt.

Also ich bin nach wie vor der Meinung das es mit Join nichts zu tun hat, habe es mir durchgelesen aber ich will ja keine Daten aus verschiedenen Tabellen miteinander zusammenfügen, sondern, jede Tabelle für sich auslesen und dieses einfach nur nebeneinander ausgeben, mehr nicht.

Es funktioniert ja soweit schon mit dem $display, nur eben das von jedem einzelnen Datensatz der ersten Tabelle jeder Datensatz 4 mal ausgegeben wird, von der 2ten Tabelle wird jeder Datensatz doppelt ausgegeben, und das ist es eben was mir kopfzerbrechen bereitet :(
 
@Raptor72
Deine Meinung ist falsch.

Entweder leist du jede Tabelle für sich aus ->also 3 SELECT Statements, oder du musst sie zusammenfüen mit JOIN oder WHERE. Ansonsten hast du das Kreuzprodukt.
 
Zurück