drombusch: mouseover und neues fenster in php

Hi,

ich lasse durch meinen Quellcode eine Tabelle aus MYSQL auslesen und diese wird bereits mit 2 versch. Hintergrundfarben (abwechselnd pro row) dargestellt. Ich möchte nun jedoch noch einen mouse over effekt bewirken, so dass die jeweilige Reihe eine spezielle Hintergrundfarbe kriegt über der die Maus gerade ist.
Der zweite Punkt ist, dass dieser Datensatz bei einem Klick in einem zweiten Fenster zum bearbeiten geöffnet werden soll.
Hänge an den beiden Punkten fest. Ein Denkanstoß bzw Lösungsansatz wäre super.

Hier meine bisherige Ausgabe:

  
  
<head>  
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
	<title></title>  
	<link rel="stylesheet" type="text/css" href="style.css" />	  
	<script src="armec.js" type="text/javascript"></script>  
</head>  
  
<body>  
	<?php  
	  
	//Verbindung  
	require_once('mysql.inc.php');  
	$verbindung=mysql_connect($dbHost, $dbUser, $dbPass);  
	if(!$verbindung) die ('Verbindung fehlgeschlagen'.mysql_error());  
	mysql_select_db($dbName) or die ('Datenbank konnte nicht verbunden werden.'.mysql_error());  
	  
	//Daten auslesen  
	$result=mysql_query("SELECT * FROM auftraege order by AuftragsNR");  
	if(!$result) die ('Fehler beim Lesen der Datenbank'.mysql_error());  
	  
	?>  
  
    <table class="liste">  
    <tr class="tabOben"><td>AuftragsNR</td><td>Mitarbeiter</td><td>Kunde</td><td>Auftragssumme</td></tr>  
  
	<?  
	$farbenindex=0;  
	while($row = mysql_fetch_array($result))  
	{  
	  
	?>  
    	<? echo '<tr class="row_'.$farbenindex%2,'">'; ?>  
        	  
            <td><? echo $row['AuftragsNR']; ?></td>  
            <td><? echo $row['Mitarbeiter']; ?></td>  
            <td><? echo $row['Kunde']; ?></td>  
            <td><? echo $row['AuftragSUMME']; ?></td>  
		</tr>  
    <?  
		$farbenindex++;  
	}  
	  
	echo "</table>";  
	  
    mysql_close($verbindung); 		  
	  
	?>  
	  
    <form>  
    	<input type="button" name="" value="Zurueck" onclick="fenster_schliessen()" />  
     </form>  
  
</body>  
</html>  
  

  1. <? echo '<tr class="row_'.$farbenindex%2,'">'; ?>

    <? echo '<tr onmouseover="setzeFrabe('markieren')" onmouseout="setzeFrabe('entmarkieren')" onclick="openThis()" class="row_'.$farbenindex%2,'">'; ?>
    Das sind die Event-Handler die du suchst.
    Jetzt musst du nur noch die Funktionen dazu basteln, in JavaScript

  2. Mahlzeit drombusch,

    Ich möchte nun jedoch noch einen mouse over effekt bewirken, so dass die jeweilige Reihe eine spezielle Hintergrundfarbe kriegt über der die Maus gerade ist.

    Dafür gibt's (in vernünftigen Browsern) die CSS-Pseudoklasse http://de.selfhtml.org/css/eigenschaften/pseudoformate.htm#link_visited_focus_hover_active@title=:hover. Das hat aber mit PHP nichts zu tun.

    Der zweite Punkt ist, dass dieser Datensatz bei einem Klick in einem zweiten Fenster zum bearbeiten geöffnet werden soll.

    Dann solltest Du <http://de.selfhtml.org/html/verweise/definieren.htm#beispiele@title=ein geeignetes HTML-Element> in die Zeile einbauen, dass eine entsprechende Ressource (z.B. ein PHP-Skript) verlinkt, das wiederum anhand der übergebenen ID den gewünschten Datensatz aus der Datenbank hervorkramen und anzeigen kann.

    Hänge an den beiden Punkten fest.

    "Festhängen" impliziert, dass Du bereits Verschiedenes versucht hast. Wie sehen diese Versuche aus? Was genau funktioniert(e) daran nicht? Was hast Du versucht, um den Fehler zu finden?

    Ein Denkanstoß bzw Lösungsansatz wäre super.

    s.o.

    <head>

    Es fehlt sowohl die Angabe eines http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Dokumenttyps als auch das öffnende <html>-Tag ... um welchen SGML-Dialekt handelt es sich in Deinem Fall?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi,

      also dass Highlight Problem hab ich nun mit

        
      <style type="text/css">  
       tr:hover {background-color:#DED085}  
      </style>
      

      gelöst.

        
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
      <html xmlns="http://www.w3.org/1999/xhtml">  
      <head>  
      	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
      	<title></title>  
      	<link rel="stylesheet" type="text/css" href="style.css" />	  
      	<script src="armec.js" type="text/javascript"></script>  
        
      	<style type="text/css">  
      		tr:hover {background-color:#DED085}  
      	</style>  
        
          <script type="text/javascript">  
      		function zeige_datensatz() {  
      		  
      		window.open("abctest.php","width=500, height= 300, scrollbars=yes");  
      		return;  
      		  
      		}  
      	</script>  
        
      </head>  
        
      <body>  
      	<?php  
      	  
      	//Verbindung  
      	require_once('mysql.inc.php');  
      	$verbindung=mysql_connect($dbHost, $dbUser, $dbPass);  
      	if(!$verbindung) die ('Verbindung fehlgeschlagen'.mysql_error());  
      	mysql_select_db($dbName) or die ('Datenbank konnte nicht verbunden werden.'.mysql_error());  
      	  
      	//Daten auslesen  
      	$result=mysql_query("SELECT * FROM auftraege order by AuftragsNR");  
      	if(!$result) die ('Fehler beim Lesen der Datenbank'.mysql_error());  
      	  
      	?>  
        
          <table class="liste">  
          <tr class="tabOben"><td>AuftragsNR</td><td>Mitarbeiter</td><td>Kunde</td><td>Auftragssumme</td></tr>  
        
      	<?  
      	$farbenindex=0;  
      	while($row = mysql_fetch_array($result))  
      	{  
      	  
      	?>  
          	<? echo '<tr class="row_'.$farbenindex%2,'" onclick="zeige_datensatz()">'; ?>  
              	  
                  <td><? echo $row['AuftragsNR']; ?></td>  
                  <td><? echo $row['Mitarbeiter']; ?></td>  
                  <td><? echo $row['Kunde']; ?></td>  
                  <td><? echo $row['AuftragSUMME']; ?></td>  
      		</tr>  
          <?  
      		$farbenindex++;  
      	}  
      	  
      	echo "</table>";  
      	  
          mysql_close($verbindung); 		  
      	  
      	?>  
      	  
          <form>  
          	<input type="button" name="" value="Zurueck" onclick="fenster_schliessen()" />  
           </form>  
        
      </body>  
      </html>  
      
      

      Das ist der komplette aktuelle Code der Datei. Lese ich mir den Datensatz dann im neuen Fenster erneut aus der Datenbank? (Also, dass ich der Funktion die ID mit übergebe ?) oder kann ich direkt die bereits ausgelesenen Daten mit übergeben, dass diese dann direkt zum bearbeiten bereitstehen ?

      Gruss
      Matthias

      1. Moin!

        Lese ich mir den Datensatz dann im neuen Fenster erneut aus der Datenbank?

        Ja.

        oder kann ich direkt die bereits ausgelesenen Daten mit übergeben, dass diese dann direkt zum bearbeiten bereitstehen ?

        Das bringt dir kaum was: Die Daten müssten zurück zum Server (im Link mitgesendet, oder als POST-Formular), um dann in Formularfelder eingebaut wieder im Browser zu landen. Der Weg über die ID und eine erneute DB-Abfrage ist deutlich einfacher.

        Außerdem kommst du dann nicht in die Situation, dass du einem manipulierten Link folgen kannst, der falsche Daten in dein Bearbeitungsformular einspielt, wenn du immer direkt die Datenbank befragst.

        - Sven Rautenberg

        1. So nochmal danke für die schnellen Antworten.

          Ich habe das Problem nun so gelöst:

            
          <script type="text/javascript">  
          		function zeige_datensatz(uebergabe) {  
          		var nummer;  
          		window.open("abctest.php?id="+uebergabe,"fenster","width=500, height= 300, scrollbars=yes");  
          		return;  
          		  
          		}  
          	</script>  
          
          
            
          <?  
          		$sende=$row['AuftragsID'];  
          		echo "<tr onclick='zeige_datensatz($sende)' />";  
          		?>  
          
          

          danach hole ich mir in der neuen datei die id mit $_GET['id']

          Ist das nun so eine gute Lösung ?? Oder gibt es da eine besserer Alternative ?

          Gruss
          Matthias

          1. Hi,

            Ist das nun so eine gute Lösung ??

            Nur, wenn es dir egal ist, dass sie ohne JavaScript keinerlei Funktion hat.

            Oder gibt es da eine besserer Alternative ?

            Ja - einen normalen Link. Und JavaScript nur als optionales Extra, wenn es verfügbar ist.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.