Datensatzauswahl aus Tabelle und übertrag per JS

Hallo Forum,

ich habe ein Formular über das ich ein Popup öffne.
Dieses Popup enthält ein weiteres Formular, welches datensätze aus meiner MySQL-DB anzeigt.

Ich möchte nun aus dem popup einen Datensatz per Mausklick markieren (nur markieren) und möchte den markierten Datensatz per Javascript auf das Hauptformular übertragen. Die Felder dafür sind im Hauptformular selbstverständlich vorgesehen.

Soweit so gut!

Zu meinem Problem:

Markiere ich irgendeinen Datensatz aus dem popUp, wird aber immer nur der letzte angezeigte Datensatz auf das Hauptformular übertragen. Der Grund dafür ist mir leider noch nicht aufgefallen.

Hier der Code:

Einzelmahnung erstellen
td {
font-size: small;
}

.tr_font {
font-size: medium;
font-weight: bold;
color: #ffffff;
}

var oldRow = null;

function doIt( evt )
{
var selectedRow = ( evt.target || evt.srcElement );
while ( selectedRow.tagName != „TR“)
selectedRow = selectedRow.parentNode;

if ( oldRow )
{
oldRow.style.backgroundColor = „“;
if ( oldRow == selectedRow )
{
oldRow = null;
return true;
}
};

selectedRow.style.backgroundColor = „orange“;
oldRow = selectedRow;

}

function beenden () {
var antwort = confirm(‚Moechten Sie das Fenster wirklich schliessen?‘);
if(antwort != true) {
return false;
exit;
}
else {
window.close(this);
}
}
//–>

<?php echo ''; ?\> Sachbearbeiter: **<?php include("../../includes/connected.php"); ?>** <?php $datum=date("j.n.Y"); echo "Datum: $datum "; ?\> <?php $zeit=date("H:i"); echo "Bearbeitungszeit: $zeit " ?\> <?php $extras = "SELECT * FROM rechnung WHERE zahlungsstatus='offen'";
$ergebnis = mysql\_query( $extras ) or die("Fehler 5: " . mysql\_error()); $count = "SELECT count(\*) FROM rechnung WHERE zahlungsstatus='offen'"; $ergebnis2 = mysql\_query( $count ) or die ("Fehler 6: " . mysql\_error()); $zaehler1 = mysql\_result($ergebnis2,0); echo $zaehler1; global $zaehler1; //$datensatz = mysql\_fetch\_array($ergebnis); ?\>RechnungsnummerMahnempfängerZahlungsstatus<?php while ($mahnnr = mysql_fetch_array( $ergebnis ))
{ $color = ($i % 2) ? "#84c1de" : "#FFFFFF"; ?\><?php $ids = htmlspecialchars(@$mahnnr['id']);
$idsNeu = "nr\_".$ids; $nr = htmlspecialchars(@$mahnnr['Rechnungsnummer']); $auftraggeb = htmlspecialchars(@$mahnnr['Mahnempfaenger']); $name = htmlspecialchars(@$mahnnr['Name']); $vers = htmlspecialchars(@$mahnnr['Versicherung']); $brutto = htmlspecialchars(@$mahnnr['Bruttobetrag']); $zziel = htmlspecialchars(@$mahnnr['Zahlungsziel']); $zstatus = htmlspecialchars(@$mahnnr['zahlungsstatus']); echo '|'; echo "".$nr; echo 'function copyIt(){ var ids="'.$idsNeu.'"; var auftraggeb="'.$auftraggeb.'"; var name="'.$name.'"; var vers="'.$vers.'"; var zziel="'.$zziel.'"; var zziel="'.$zziel.'"; var brutto="'.$brutto.'"; ids = "'.$nr.'"; self.opener.document.einzelmahnung.x\_auftragsnr.value = ids; self.opener.document.einzelmahnung.x\_mahnempf.value = auftraggeb; self.opener.document.einzelmahnung.x\_name.value = name; self.opener.document.einzelmahnung.x\_vers.value = vers; self.opener.document.einzelmahnung.x\_zstat.value = zziel; self.opener.document.einzelmahnung.x\_brutto.value = brutto;}'; //echo 'function copyIt(){ self.opener.document.einzelmahnung.x\_auftragsnr.value = this.document.mahnnr.getElementById("'.$idNeu.'").x\_auftragsnr.value }'; echo "".htmlspecialchars(@$mahnnr['Mahnempfaenger']).""; echo "".htmlspecialchars(@$mahnnr['zahlungsstatus']).""; echo ""; $i++; } mysql\_close(); ?\> PREHTML\> Kann mir bitte jemand einen Tip geben, wo genau in Javascript der Fehler steckt? Besten Dank und viele Grüße aus Köln

1function copyIt(){ var ids=„nr_1“; var auftraggeb=„anders“; var name=„thomas“; var vers=""; var zziel=""; var zziel=""; var brutto=""; ids = „1“; self.opener.document.einzelmahnung.x_auftragsnr.value = ids; self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb; self.opener.document.einzelmahnung.x_name.value = name; self.opener.document.einzelmahnung.x_vers.value = vers; self.opener.document.einzelmahnung.x_zstat.value = zziel; self.opener.document.einzelmahnung.x_brutto.value = brutto;}2function copyIt(){ var ids=„nr_2“; var auftraggeb=„aaadeer“; var name=„thomaaaa“; var vers=""; var zziel=""; var zziel=""; var brutto=""; ids = „2“; self.opener.document.einzelmahnung.x_auftragsnr.value = ids; self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb; self.opener.document.einzelmahnung.x_name.value = name; self.opener.document.einzelmahnung.x_vers.value = vers; self.opener.document.einzelmahnung.x_zstat.value = zziel; self.opener.document.einzelmahnung.x_brutto.value = brutto;}

oha das ja man ein lustiges script gewusel.
wer hat sich sowas ausgedacht lol.

also das da oben ist was HTML ausgabe angeht , bei 2 Datensätzen,

da fällt einem doch auf das was ganz komisches gemacht wurde,
es wurde 2 mal dieselbe funktion defeniert

copyIt()

ergo wird auch nur das letzte copyIt verwendet, weil es gibt keine 2 funktionen gleichen namens, die werden einfach überschrieben.

richtig wäre es wenn man das script vorher defeniert, und nur die variablen werte setzt, bzw ich würd sie gleich als parameter mit angeben.

also diese zeile

echo ‚function copyIt(){ var ids="‘.$idsNeu.’"; var auftraggeb="’.$auftraggeb.’"; var name="’.$name.’"; var vers="’.$vers.’"; var zziel="’.$zziel.’"; var zziel="’.$zziel.’"; var brutto="’.$brutto.’"; ids = „’.$nr.’“; self.opener.document.einzelmahnung.x_auftragsnr.value = ids; self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb; self.opener.document.einzelmahnung.x_name.value = name; self.opener.document.einzelmahnung.x_vers.value = vers; self.opener.document.einzelmahnung.x_zstat.value = zziel; self.opener.document.einzelmahnung.x_brutto.value = brutto;}’;

anders machen in der while schleife ändern,

echo ‚ids="‘.$idsNeu.’"; auftraggeb="’.$auftraggeb.’"; name="’.$name.’"; vers="’.$vers.’"; zziel="’.$zziel.’"; zziel="’.$zziel.’"; brutto="’.$brutto.’"; ids = „’.$nr.’“; copyIt();}’;

und vorher (vor der while schleife )einfach leere werte definieren und die funktion.

echo ‚var ids=""; var auftraggeb=""; var name=""; var vers=""; var zziel=""; var brutto=""; ids = „“;
function copyIt(){self.opener.document.einzelmahnung.x_auftragsnr.value = ids; self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb; self.opener.document.einzelmahnung.x_name.value = name; self.opener.document.einzelmahnung.x_vers.value = vers; self.opener.document.einzelmahnung.x_zstat.value = zziel; self.opener.document.einzelmahnung.x_brutto.value = brutto;}‘;

sollte gehen

Hi!

Vielen Dank für Deine Antwort.
Der Code sieht jetzt so aus:

function copyIt(){
var ids="";
var auftraggeb="";
var name="";
var vers="";
var zziel="";
var ids="";

self.opener.document.einzelmahnung.x_auftragsnr.value = ids;
self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb;
self.opener.document.einzelmahnung.x_name.value = name;
self.opener.document.einzelmahnung.x_vers.value = vers;
self.opener.document.einzelmahnung.x_zstat.value = zziel;
self.opener.document.einzelmahnung.x_brutto.value = brutto;
}
RechnungsnummerMahnempfängerZahlungsstatus<?php while ($mahnnr = mysql_fetch_array( $ergebnis ))
{
$color = ($i % 2) ? „#84c1de“ : „#FFFFFF“;
?><?php $ids = htmlspecialchars(@$mahnnr[‚id‘]);
$idsNeu = „nr_“.$ids;
$nr = htmlspecialchars(@$mahnnr[‚Rechnungsnummer‘]);
$auftraggeb = htmlspecialchars(@$mahnnr[‚Mahnempfaenger‘]);
$name = htmlspecialchars(@$mahnnr[‚Name‘]);
$vers = htmlspecialchars(@$mahnnr[‚Versicherung‘]);
$brutto = htmlspecialchars(@$mahnnr[‚Bruttobetrag‘]);
$zziel = htmlspecialchars(@$mahnnr[‚Zahlungsziel‘]);
$zstatus = htmlspecialchars(@$mahnnr[‚zahlungsstatus‘]);

echo ‚|‘;
echo „“.$nr."";
echo „“.htmlspecialchars(@$mahnnr[‚Mahnempfaenger‘])."";
echo „“.htmlspecialchars(@$mahnnr[‚zahlungsstatus‘])."";
echo „“;
$i++;
}

mysql_close();
?>

So werden aber leider auch keine Werte übertragen.
Hab ich was falsch gemacht? Habe versucht dein Posting genauso umzusetzen. War etwas schwammig zu verstehen :wink: .

Hast Du noch ne Idee oder siehst Du den Fehler?

Besten Dank im Voraus!

Viele Grüße aus Köln!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

// variablen global einrichten
var ids="";
var auftraggeb="";
var name="";
var vers="";
var zziel="";
var brutto="";
// Hier erst die funktion
function copyIt(){
self.opener.document.einzelmahnung.x_auftragsnr.value = ids;
self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb;
self.opener.document.einzelmahnung.x_name.value = name;
self.opener.document.einzelmahnung.x_vers.value = vers;
self.opener.document.einzelmahnung.x_zstat.value = zziel;
self.opener.document.einzelmahnung.x_brutto.value = brutto;
}

Hi!

Leider funktioniert auch das nicht. Ich habe das Script auch mal in den Header gelegt und die Funktion in das TR-Tag hinter der anderen Funktion aufgerufen, da dort ein onClick- EventHandler ist.

Leider funktioniert alles nichts. In all diesen Fällen werden die Daten leider nicht übertragen. Die Firefox Fehlerkonsole zeigt aber auch KEINE Fehler an.

Vielleicht sollte man den gesamten Aufruf zur Variablen im PopUp deklarieren. Also mit self.opener.forms.meinFormular…blabla.

Das probiere ich mal. Vielleicht klappt das ja.

Wenn Du noch eine Idee haben solltest, wäre ich Dir sehr dankbar.

Viele Grüße aus Köln.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich hoffe du brauchst nich noch mehr von dem zeug, der fehler hätte dir selber auffallen können .

Hier die Lösung.

Einzelmahnung erstellen
td {
font-size: small;
}
.tr_font {
font-size: medium;
font-weight: bold;
color: #ffffff;
}

// variablen global einrichten
var ids="";
var auftraggeb="";
var name="";
var vers="";
var zziel="";
var brutto="";
// Hier erst die funktion
function copyIt(){
self.opener.document.einzelmahnung.x_auftragsnr.value = ids;
self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb;
self.opener.document.einzelmahnung.x_name.value = name;
self.opener.document.einzelmahnung.x_vers.value = vers;
self.opener.document.einzelmahnung.x_zstat.value = zziel;
self.opener.document.einzelmahnung.x_brutto.value = brutto;
}
var oldRow = null;
function doIt( evt )
{
var selectedRow = ( evt.target || evt.srcElement );
while ( selectedRow.tagName != „TR“)
selectedRow = selectedRow.parentNode;
if ( oldRow )
{
oldRow.style.backgroundColor = „“;
if ( oldRow == selectedRow )
{
oldRow = null;
return true;
}
};
selectedRow.style.backgroundColor = „orange“;
oldRow = selectedRow;
}

function beenden () {
var antwort = confirm(‚Moechten Sie das Fenster wirklich schliessen?‘);
if(antwort != true) {
return false;
exit;
}
else {
window.close(this);
}
}
//–>

Sachbearbeiter:

<?php include("connected.php"); ?> <?php $datum=date("j.n.Y"); echo "Datum: $datum "; ?> <?php $zeit=date("H:i"); echo "Bearbeitungszeit: $zeit " ?> <?php $extras = "SELECT * FROM patienten ";
$ergebnis = mysql\_query( $extras ) or die("Fehler 5: " . mysql\_error()); $count = "SELECT count(\*) FROM patienten "; $ergebnis2 = mysql\_query( $count ) or die ("Fehler 6: " . mysql\_error()); $zaehler1 = mysql\_result($ergebnis2,0); echo $zaehler1; global $zaehler1; ?\>RechnungsnummerMahnempfängerZahlungsstatus<?php while ($mahnnr = mysql_fetch_array( $ergebnis ))
{ $color = ($i % 2) ? "#84c1de" : "#FFFFFF"; $ids = htmlspecialchars(@$mahnnr['idx']); $idsNeu = "nr\_".$ids; $nr = htmlspecialchars(@$mahnnr['idx']); $auftraggeb = htmlspecialchars(@$mahnnr['vorname']); $name = htmlspecialchars(@$mahnnr['name']); $vers = htmlspecialchars(@$mahnnr['Versicherung']); $brutto = htmlspecialchars(@$mahnnr['Bruttobetrag']); $zziel = htmlspecialchars(@$mahnnr['Zahlungsziel']); $zstatus = htmlspecialchars(@$mahnnr['zahlungsstatus']); echo '|'; echo "".$nr; echo 'function setIt'.$ids.'(){ auftraggeb="'.$auftraggeb.'"; name="'.$name.'"; vers="'.$vers.'"; '; echo 'zziel="'.$zziel.'"; zziel="'.$zziel.'"; brutto="'.$brutto.'"; ids = "'.$nr.'"; copyIt();}'; echo "".htmlspecialchars(@$mahnnr['Mahnempfaenger']).""; echo "".htmlspecialchars(@$mahnnr['zahlungsstatus']).""; echo ""; $i++; } mysql\_close(); ?\>

HTML Quellcode ausgabe beispiel von oben.

Einzelmahnung erstellen
td {
font-size: small;
}

.tr_font {
font-size: medium;
font-weight: bold;
color: #ffffff;
}

// variablen global einrichten
var ids="";
var auftraggeb="";
var name="";
var vers="";
var zziel="";
var brutto="";
// Hier erst die funktion
function copyIt(){
self.opener.document.einzelmahnung.x_auftragsnr.value = ids;
self.opener.document.einzelmahnung.x_mahnempf.value = auftraggeb;
self.opener.document.einzelmahnung.x_name.value = name;
self.opener.document.einzelmahnung.x_vers.value = vers;
self.opener.document.einzelmahnung.x_zstat.value = zziel;
self.opener.document.einzelmahnung.x_brutto.value = brutto;
}
var oldRow = null;

function doIt( evt )
{
var selectedRow = ( evt.target || evt.srcElement );
while ( selectedRow.tagName != „TR“)
selectedRow = selectedRow.parentNode;

if ( oldRow )
{
oldRow.style.backgroundColor = „“;
if ( oldRow == selectedRow )
{
oldRow = null;
return true;
}
};

selectedRow.style.backgroundColor = „orange“;
oldRow = selectedRow;

}

function beenden () {
var antwort = confirm(‚Moechten Sie das Fenster wirklich schliessen?‘);
if(antwort != true) {
return false;
exit;
}
else {
window.close(this);
}
}
//–>

Sachbearbeiter:

Datum: 3.7.2008

Bearbeitungszeit: 18:41

2RechnungsnummerMahnempfängerZahlungsstatus1function setIt1(){ ids=„nr_1“; auftraggeb=„anders“; name=„thomas“; vers=""; zziel=""; zziel=""; brutto=""; ids = „1“; copyIt();}2function setIt2(){ ids=„nr_2“; auftraggeb=„aaadeer“; name=„thomaaaa“; vers=""; zziel=""; zziel=""; brutto=""; ids = „2“; copyIt();}

Rattenscharf kann ich da nur sagen!

HERZLICHEN DANK!!!

Ich hätte also der Funktion die ID zuweisen müssen, damit innerhalb der While-Schleife auch jeder Datensatz als eigener Datensatz erkannt wird.

Ich hab ne Menge daraus gelernt. Besten Dank!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Rattenscharf kann ich da nur sagen!

HERZLICHEN DANK!!!

Ich hätte also der Funktion die ID zuweisen müssen, damit
innerhalb der While-Schleife auch jeder Datensatz als eigener
Datensatz erkannt wird.

du hättest eben nicht nur copyIt(verschiedneinhalte)
sondern gleich verschiedene funktionen machen sollen

also copyIt1() und dann auch selbige aufrufen.

jetzt haben wir aber die funktion copyIt ausgelagert, da es ja immerwieder das gleiche ist was genutzt wird.

-)

Ich kann das Skript an vielen Stellen meiner Web-Anwendung, die faßt fertig ist, verwenden.
Ist besser als dauernd mit GET und POST zu arbeiten, auch wenn es javascript ist. :smile:

Ich find Javascript sehr wichtig und echt super.

Vielen Dank nochmals für Deine Hilfe!

Viele Grüße aus Köln und schönes WE!

Bis zum nächsten Mal! :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]