// conditional compilation
var input=document.createElement('"input name="datei" type="file" ...')
Wow, das war der Bringer... Habe zum ersten Mal von cc gehört und mit createElement('<input name="datei"...>') hats dann geklappt!
Jetzt sendet der IE, der FF tuts immer noch, alles ist wunderbar!
:-)
zu dem Thema findet man unzählige Threads hier im Archiv.
Gruß plan_B
Habe viel gefunden, mit den richtigen Suchwörtern erleichtert man sich einiges...
Dennoch, ohne Dich hätte ich die ganze Woche mit diesem Problem verbringen müssen. Tausendundeinfacher Dank!
Gruß,
elvirus
Falls es jemanden interessiert, mein funktionierender Code (getestet unter IE7 und FF2, nicht optimiert):
<script type="text/javascript">
function setRows(id,bilder) {
var picString = '';
var objektId = id;
var anzahlbilder = bilder;
var insert = document.getElementById("insert");
// Beginn der Schleife
// ab hier werden 'anzahlbilder-1'-viele einzeilige Tabellen erzeugt, jedes ist Kind eines Formulars
for (i=2;i<=anzahlbilder;i++) {
if (i<10) picString = "0"+i;
else picString = ""+i;
// <table width="620" bgcolor="#414F72" border="0" cellspacing="4" cellpadding="0" align="center">
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var newtable = document.createElement('<table width="620" bgcolor="#414F72" border="0" cellspacing="4" cellpadding="0" align="center">');
@else @*/
var newtable = document.createElement('table');
newtable.width = '620';
newtable.bgcolor = '#414F72';
newtable.border = '0';
newtable.cellspacing = '4';
newtable.cellpadding = '0';
newtable.align = 'center';
/*@end @*/
// <tr>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var row = document.createElement('<tr align="center" valign="middle">');
@else @*/
var row = document.createElement('tr');
row.align = 'center';
row.valign = 'middle';
/*@end @*/
// <form>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var formaction = '';
if (i<10) formaction = 'objekt_neu_bilder_upload.php?id='+objektId+'&name=objekt'+objektId+'gr0'+i+'&zahl='+i+'¶m=gross';
else formaction = 'objekt_neu_bilder_upload.php?id='+objektId+'&name=objekt'+objektId+'gr'+i+'&zahl='+i+'¶m=gross';
var formular = document.createElement('<form name="bild'+i+'gross" onSubmit="window.open('','ftp','width=250,height=125')" action="'+formaction+'" method="post" target="ftp" enctype="multipart/form-data">');
@else @*/
var formular = document.createElement('form');
formular.name = 'bild'+i+'gross';
formular.onsubmit = function() {
window.open("","ftp","width=250,height=125");
}
if (i<10) formular.action = 'objekt_neu_bilder_upload.php?id='+objektId+'&name=objekt'+objektId+'gr0'+i+'&zahl='+i+'¶m=gross';
else formular.action = 'objekt_neu_bilder_upload.php?id='+objektId+'&name=objekt'+objektId+'gr'+i+'&zahl='+i+'¶m=gross';
formular.method = 'post';
formular.target = 'ftp';
formular.enctype = 'multipart/form-data';
/*@end @*/
// 1st <td>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var cell_1 = document.createElement('<td class="cmsMedium" width="120" height="20">');
var hidden = document.createElement('<input type="hidden" name="MAX_FILE_SIZE" value="3000000">');
@else @*/
var cell_1 = document.createElement('td');
cell_1.className = "cmsMedium";
cell_1.width = '120';
cell_1.height = '20';
var hidden = document.createElement('input');
hidden.type = 'hidden';
hidden.name = 'MAX_FILE_SIZE';
hidden.value = '3000000';
/*@end @*/
// 2nd <td>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var cell_2 = document.createElement('<td class="cmsFormBildObjekte" width="40" height="20">');
var pic = document.createElement('<img src="../images_objekte/objekt'+objektId+'gr'+picString+'.jpg" name="Bild'+i+'gross" alt="Für einwandfreie Darstellung bitte Auflösung beachten!" width="40" height="30">');
@else @*/
var cell_2 = document.createElement('td');
cell_2.className = "cmsFormBildObjekte";
cell_2.width = '40';
cell_2.height = '20';
var pic = document.createElement('img');
pic.src = '../images_objekte/objekt'+objektId+'gr'+picString+'.jpg';
pic.name = 'Bild'+i+'gross';
pic.alt = 'Für einwandfreie Darstellung bitte Auflösung beachten!';
pic.width = '40';
pic.height = '30';
/*@end @*/
// 3rd <td>
// <td height="20" align="left"><input name="datei" type="file" class="cmsFormBildObjekte" size="42" maxlength="255"></td>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var cell_3 = document.createElement('<td height="20" align="left">');
var input = document.createElement('<input name="datei" type="file" class="cmsFormBildObjekte" size="42" maxlength="255">');
@else @*/
var cell_3 = document.createElement('td');
cell_3.height = '20';
cell_3.align = 'left';
var input = document.createElement('input');
input.className = "cmsFormBildObjekte";
input.name = 'datei';
input.type = 'file';
input.size = '42';
input.maxLength = '255';
/*@end @*/
// 4th <td>
// <td height="20"><input name="bildgrossUp" type="submit" class="cmsFormButton" id="bildgrossUp" value="hochladen"></td>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var cell_4 = document.createElement('<td height="20">');
var button = document.createElement('<input class="cmsFormButton" name="bildgrossUp" type="submit" value="hochladen">');
@else @*/
var cell_4 = document.createElement('td');
cell_4.height = '20';
var button = document.createElement('input');
button.className = "cmsFormButton";
button.name = 'bildgrossUp';
button.type = 'submit';
button.value = 'hochladen';
/*@end @*/
// 5th <td>
// <td height="20" align="left"></td>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var cell_5 = document.createElement('<td height="20" align="left">');
@else @*/
var cell_5 = document.createElement('td');
cell_5.height = '20';
cell_5.align = 'left';
/*@end @*/
// <tbody für IE>
// conditional compilation
/*@cc_on
/*@if (@_jscript)
var newtbody = document.createElement('<tbody id="tbody'+i+'">');
@else @*/
newtbody = document.createElement('tbody');
newtbody.id = 'tbody'+i;
/*@end @*/
// erzeugte Komponenten anhängen
cell_1.appendChild(hidden);
cell_2.appendChild(pic);
cell_3.appendChild(input);
cell_4.appendChild(button);
row.appendChild(cell_1);
row.appendChild(cell_2);
row.appendChild(cell_3);
row.appendChild(cell_4);
row.appendChild(cell_5);
newtbody.appendChild(row);
newtable.appendChild(newtbody);
formular.appendChild(newtable);
insert.appendChild(formular);
}
}
</script>
Die Funktion setRows(id, anzahlbilder) wird im body der Seite aufgerufen und hängt anzahlbilder-viele Formulare an eine mit der id"insert" gekennzeichnete Stelle im Dokument.
Die übergebene id kennzeichnet das Datenbankobjekt, zu dem man auf dieser Seite hochgeladene Bilder ändern kann.
Da ein Objekt laut Konvention unterschiedlich viele Bilder besitzen kann, werden also entsprechend viele Tabellen generiert, für jedes Bild eine, in denen eine verkleinerte Vorschau der entsprechenden Bilder zu sehen ist.
Durch diesen Codeschnipsel funktioniert das Modul nun endlich. Es ist Teil eines CMS für den Relaunch einer bestehenden Seite eines Bau- und Planungsunternehmens. Nun arbeiten flash-mySQL-php-html-javaScript endlich perfekt zusammen und meine Arbeit an der Datenbank-Filesystem-Konsistenz ist endlich beendet!
Klasse Forum,
Liebe Grüße,
elvirus