PHP und Javascript
Bags
- php
Hallo zusammen,
frage mit PHP und MySql Daten in einer While Schleife ab und lasse mir diese als Tabelle ausgeben (soweit Standard und funzt auch).
Fährt man mit der Maus über eine Zeile der Tabelle verändert sich die Zeilenfarbe (JS onmouseover, auch ok).
Jetzt kommts aber:
Zustäzlich soll beim überfahren eines Feldes noch der User der den Datensatz angelegt hat und der User der den Datensatz geändert hat ausgegeben werden. Folgendes habe ich gemacht: Die PHP Variablen die die Userdaten enthalten an Javascript übergeben.
Problem:
Fährt man mit der Maus über eins der Felder, wird immer nur der User der ersten Zelle ausgegeben. Eigentlich sollt immer der user da stehen der den Datensatz erstellt hat und der, der Ihn geändert hat.
hier mal Code:
$abschlag = mysql_query("SELECT * FROM abschlag WHERE adressen_id = $adressen_id ORDER BY datum desc");
$rows = mysql_num_rows($abschlag);
if (!$rows)
{
echo "<center>Keine Abschläge gefunden für Systempartner $name<br><br>";
print("<target='__self'><div align='center'><table width='50%' border='0' cellspacing='2' cellpadding='2'><span class='Stil2'></span>");
echo "<tr bgcolor="#D4D0C8" onmouseover="this.className='hilight'" onmouseout="this.className=''">";
echo "<td colspan='0' onmouseover="this.className='schrift'" onmouseout="this.className=''" align='center' width='' bgcolor='' scope='row'><a href="abschlag_neu.php?adressen_id=$adressen_id&name=$name" target="_self">Neuer Abschlag</a></td></tr>";
exit;
}
print("<target='__self'><div align='center'><table width='50%' border='0' cellspacing='2' cellpadding='2'><span class='Stil2'></span>");
echo "<tr bgcolor="#D4D0C8" onmouseover="this.className='hilight'" onmouseout="this.className=''">";
echo "<td colspan='0' onmouseover="this.className='schrift'" onmouseout="this.className=''" align='center' width='' bgcolor='' scope='row'><a href="abschlag_neu.php?adressen_id=$adressen_id&name=$name" target="_self">Neuer Abschlag</a></td></tr>";
echo "</table>";
print("<target='__self'><div align='center' style='z-index:1'><table width='100%' border='0' cellspacing='2' cellpadding='2'><span class='Stil2'></span>");
//echo "<TD onMouseOver="show(this)" onMouseOut="hide()">1. Eintrag</TD>";
echo "<th bgcolor='#FF8080'>Erfasst am</th>";
echo "<th bgcolor='#FF8080'>Betrag</th>";
echo "<th bgcolor='#FF8080'>Grund/Info</th>";
while ($abschlag_row = mysql_fetch_array($abschlag))
{
$id = $abschlag_row['id'];
$monat = $abschlag_row['monat'];
$jahr = $abschlag_row['jahr'];
$datum = $abschlag_row['datum'];
$wert = $abschlag_row['wert'];
$wert = number_format($wert,2,',','.');
$grund = $abschlag_row['grund'];
$eingefuegt_von = $abschlag_row['eingefuegt_von'];
$eingefuegt_am = $abschlag_row['eingefuegt_am'];
$geandert_von = $abschlag_row['geandert_von'];
$geandert_am = $abschlag_row['geandert_am'];
echo "<tr bgcolor="#D4D0C8" onclick="MM_goToURL('this','abschlag_bearbeiten.php?id=$id');return document.MM_returnValue" onmouseover="this.className='hilight'" onmouseout="this.className=''">";
echo "<td colspan='0' onmouseover="this.className='schrift';show(this)" onmouseout="this.className='';hide()" align='center' width='' bgcolor='' scope='row'>$datum</td>";
echo "<td colspan='0' onmouseover="this.className='schrift';show(this)" onmouseout="this.className='';hide()" align='center' width='' bgcolor='' scope='row'>$wert</td>";
echo "<td colspan='0' onmouseover="this.className='schrift';show(this)" onmouseout="this.className='';hide()" align='center' width='' bgcolor='' scope='row'>$grund</td></tr>";
?>
<script language="JavaScript">
<?php printf("geandert_von = '%s';\n", addslashes($geandert_von));
printf("geandert_am = '%s';\n", addslashes($geandert_am));
printf("eingefuegt_von = '%s';\n", addslashes($eingefuegt_von));
printf("eingefuegt_am = '%s';\n", addslashes($eingefuegt_am)); ?>
</script>
<SCRIPT language="javascript" type="text/javascript">
function show(cell)
{
var info = document.getElementById('info');
info.innerText = 'Erstellt am ' + eingefuegt_am + ' von ' + eingefuegt_von + ' // Geändert am ' + geandert_am + ' von ' + geandert_von;
info.style.top = event.clientY;
info.style.left = event.clientX;
info.style.zIndex = 2;
info.style.visibility = 'visible';
}
function hide(cell)
{
var info = document.getElementById('info');
info.style.visibility = 'hidden';
info.style.zIndex = 0;
}
</SCRIPT>
<?
}
echo "</table>";
echo "<DIV id='info'></DIV>";
echo "<br>";
//echo "<p class='Stil1'>Erstellt am $eingefuegt_am von $eingefuegt_von // Geändert am $geandert_am von $geandert_von</p>";
}
?>
hi,
Fährt man mit der Maus über eins der Felder, wird immer nur der User der ersten Zelle ausgegeben. Eigentlich sollt immer der user da stehen der den Datensatz erstellt hat und der, der Ihn geändert hat.
hier mal Code:
vorerst uninteressant.
erst mal interessiert uns, welcher code beim client ankommt (bitte nur relevante teile), und ob dieser "richtig" ist, d.h. das enthält, was du erwartest und was zur umsetzung deiner anforderung nötig ist.
gruß,
wahsaga
erst mal interessiert uns, welcher code beim client ankommt (bitte nur relevante teile), und ob dieser "richtig" ist, d.h. das enthält, was du erwartest und was zur umsetzung deiner anforderung nötig ist.
gruß,
wahsaga
»»
Die While Schleife schreibt eine Tabelle, aus den abgefragten Variablen, in der alle vorhandenen Daten korrekt enthalten sind. Ersteller+Datum und Veränderer+Datum lasse ich nicht in der ausgegebenen Tabelle anzeigen, da diese beim überfahren mit der Maus angezeigt werden sollen.
Ich hatte schon die Idee die benötigten Daten in ein "HiddenField" zu packen, weiß aber nicht wie ich ein HiddenField mit JS anzeigen lassen kann. Kenne bis jetzt nur "innerTEXT"! Aber dann wird der Inhalt der Zelle wiedergegeben.
Bin PHP/MySql Programierer und habe mit JS zu wenig Erfahrung. Oder ist vielleicht doch der Fehler im JS?
Das kommt am Client an:
<?php
......
while (....)
{
echo "<tr bgcolor="#D4D0C8" onclick="MM_goToURL('this','abschlag_bearbeiten.php?id=$id');return document.MM_returnValue" onmouseover="this.className='hilight'" onmouseout="this.className=''">";
echo "<td colspan='0' onmouseover="this.className='schrift';show(this)" onmouseout="this.className='';hide()" align='center' width='' bgcolor='' scope='row'>$datum</td>";
echo "<td colspan='0' onmouseover="this.className='schrift';show(this)" onmouseout="this.className='';hide()" align='center' width='' bgcolor='' scope='row'>$wert</td>";
echo "<td colspan='0' onmouseover="this.className='schrift';show(this)" onmouseout="this.className='';hide()" align='center' width='' bgcolor='' scope='row'>$grund</td></tr>";
}
?>
<script language="JavaScript">
<?php printf("geandert_von = '%s';\n", addslashes($geandert_von));
printf("geandert_am = '%s';\n", addslashes($geandert_am));
printf("eingefuegt_von = '%s';\n", addslashes($eingefuegt_von));
printf("eingefuegt_am = '%s';\n", addslashes($eingefuegt_am)); ?>
</script>
<SCRIPT language="javascript" type="text/javascript">
function show(cell)
{
var info = document.getElementById('info');
info.innerText = 'Erstellt am ' + eingefuegt_am + ' von ' + eingefuegt_von + ' // Geändert am ' + geandert_am + ' von ' + geandert_von;
...
}
function hide(cell)
{
...
}
</SCRIPT>