Primero que todo gracias por la respuesta estimado caricatos, pero creo que no me explique bien. En el primer post que hice trataba de anidar dos forms, esto porque originalmente mi form es el siguiente:
Código:
<form action="new_add.php" method="post" enctype="multipart/form-data">
Titulo:<br />
<input name="title" type="text" class="adminNewAddInput" /><br /><br />
Adjuntos:<br />
<div id="inputFile"></div><input type="hidden" id="nInputs" name="nInputs" value="0" /><a href="#" onClick="addInputFile()">Adjuntar Archivo</a><br /><br />
<p align="center"><input type="submit" name="submit" value="Agregar" /></p>
</form>
y la función addInputFile()
Código:
function addInputFile() {
var nInputs = document.getElementById('nInputs').value
// Obtener la instancia del objeto XMLHttpRequest
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
ajax = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // Internet Explorer
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
ajax.open("GET", "includes/addInputFile.php?id="+nInputs,true);
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) {
document.getElementById('inputFile').innerHTML = document.getElementById('inputFile').innerHTML + ajax.responseText
}
}
ajax.send(null)
document.getElementById('nInputs').value = ++nInputs;
}
y finalmente addInputFile.php
Código:
<?php
if(isset($_GET["id"]))
{
$id = $_GET["id"];
?>
<div id="formUpload<?= $id ?>">
<form method="post" enctype="multipart/form-data" action="new_add_attachment.php" target="iframeUpload<?= $id ?>">
<input type="hidden" name="id" value="<?= $id ?>" /><input name="file<?= $id ?>" type="file" id="file<?= $id ?>" size="50" class="adminNewAddFile" onChange="javascript: submit();" /><br />
<iframe name="iframeUpload<?= $id ?>" style="display:none"></iframe>
</form>
</div>
<?php
}
?>
Luego al hacer click en agregar adjunto trataria de insertar el form del addInputFile.php en el form original algo asi:
Código:
<form action="new_add.php" method="post" enctype="multipart/form-data">
Titulo:<br />
<input name="title" type="text" class="adminNewAddInput" /><br /><br />
Adjuntos:<br />
<div id="inputFile">
<div id="formUpload<?= $id ?>">
<form method="post" enctype="multipart/form-data" action="new_add_attachment.php" target="iframeUpload<?= $id ?>">
<input type="hidden" name="id" value="<?= $id ?>" /><input name="file<?= $id ?>" type="file" id="file<?= $id ?>" size="50" class="adminNewAddFile" onChange="javascript: submit();" /><br />
<iframe name="iframeUpload<?= $id ?>" style="display:none"></iframe>
</form>
</div>
</div>
<input type="hidden" id="nInputs" name="nInputs" value="0" /><a href="#" onClick="addInputFile()">Adjuntar Archivo</a><br /><br />
<p align="center"><input type="submit" name="submit" value="Agregar" /></p>
</form>
Y ahi es donde se produce el problema de forms anidados.
Ahora en el segundo post se me habia ocurrido modificar un poco el codigo de addInputFile.php
Código:
<?php
if(isset($_GET["id"]))
{
$id = $_GET["id"];
?>
<div id="formUpload<?= $id ?>">
<input type="hidden" name="id" value="<?= $id ?>" /><input name="file<?= $id ?>" type="file" id="file<?= $id ?>" size="50" class="adminNewAddFile" onChange="javascript: sendFile(this,<?= $id ?>);" /><br />
<iframe name="iframeUpload<?= $id ?>" style="display:none"></iframe>
</div>
<?php
}
?>
y en vez de enviar el form que contenia al input file hacer una llamada ajax para que subiera el archivo por detras, es por esto que se me ocurrio el codigo del segundo post
Código:
function sendFile(file,id) {
// Obtener la instancia del objeto XMLHttpRequest
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
ajax = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // Internet Explorer
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
ajax.open('POST','new_add_attachment.php',true);
var query = 'id=' + id + '&file=' + file.value;
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(query);
}
Pero el problema de esto es que a new_add_attachment.php llega el nombre del archivo pero con \\ en vez de \ (C:\\Carpeta\\archivo.jpg) y no se como solucionar eso pues trato de hacerle un str_replace con php pero cuando hago str_replace("\\","\", $file) me tira conflictos con \" asique ya no se como hacerlo.
Pero bueno seguire probando aver si me funciona. En todo caso la forma de agregar inputs que sale en la pagina de javierB es mejor. adoptare esa forma.
Saludos