compañeros tengo el siguiente problema.
Necesito subir varias imagenes al mismo tiempo a un servidor cuando se registre un paciente en una bd. hasta ahi me funciona. Pero tambien que cuando yo voy a actualizar ese paciente pueda agregar mas imagenes de el. Ese es el problema para registrar funciona pero para actualizar no.
Si alguien me puede ayudar se lo agradeceria enormente por q la verdad no se donde esta la falla
si les parece muy largo el post solo vean los dos primeros formularios a ver si me pueden decir por q en uno si llega la info de los files y en el otro no.
Estos son los scripts que utilizo.
Este formulario para registrar y subir multiples imagenes:
Código HTML:
<center>
<h1>Registre aqui su Paciente</h1>
<form action='<?php $mivar = "paciente";
$url = $_SERVER['SCRIPT_NAME'] . "?evento=$mivar";
echo $url;?>'method="post" enctype="multipart/form-data" name="form1">
<table border="1" width="328" bgcolor="#FFFFCC">
<tr>
<td width="126">Cedula:</td>
<td width="186"><input type="text" name="cedula" width="100" /></td></tr>
<tr><td>Nombre: </td><td><input type="text" name="nombre" width="100"/></td></tr>
<tr><td>Fecha Nacimiento:</td><td>
<input type="text" name="fecha_nacimiento"id="fecha" readonly="readonly" width="100"/><input name="popcal" onClick="if(this.blur)this.blur();var fm=this.form1;if(self.gfPop)gfPop.fPopCalendar(document.form1.fecha);" value="..." type="button"></td></tr>
<tr><td>Telefono: </td><td><input type="text" name="telefono" maxlength="10"/>
</td></tr>
<tr><td>Subir Imagenes:</td><td> <a href="#" onclick="addField()" accesskey="5">Añadir Imagen</a></td>
<tr><td colspan="2"><div id="files"></div></td></tr><tr><td colspan="2" align="center"><input type="submit" name="bot_Registrar_Paciente" value="Enviar" /></td></tr></table></form></center>
<iframe name="gToday:normal:agenda.js" id="gToday:normal:agenda.js" src="calendar/ipopeng.htm" style="visibility: visible; z-index: 999; position: absolute; top: -500px; left: -500px;" frameborder="0" height="189" scrolling="no" width="174"></iframe>
Este me funciona perfectamente y me llegan los valores asociados en el vector $_Files['archivos'] y este de abajo es casi el mismo formulario pero con php
y no me funciona para agragar mas imagenes.
Código PHP:
public function Mostrar_Para_Actualizar($cedula){
$mostrar="";
$sql="SELECT * From Paciente where Paciente_Cedula=".$cedula.";";
$sql2="SELECT Paciente_Imagenes_Id, Paciente_Imagenes_Paciente, Paciente_Imagenes_Nombre
FROM paciente_imagenes
WHERE Paciente_Imagenes_Paciente =".$cedula."";
$this->conexion=new Mysql_conection();
$this->conexion->conectar();
$rst=$this->conexion->ejecutar_sql($sql);
$rst2=$this->conexion->ejecutar_sql($sql2);
$num=mysql_num_rows($rst2);
if(mysql_num_rows($rst)>0){
$row=mysql_fetch_array($rst);
$edad=$this->Calcular_Edad($row['Paciente_Fecha_Nacimiento']);
$mostrar.="<center>
<table border='1' width='328' bgcolor='#FFFFCC'>
<form action=$_SERVER[SCRIPT_NAME] method='post' enctype='multipart/form-data' name='form_ac' >
<tr><td>ID:</td><td>".$row['Paciente_Id']."</td></tr>
<tr><td width='116'>Nombre:</td>
<td><input type='text' name='nombre' width='100' value='".$row['Paciente_Nombre']."' /></td></tr>
<tr><td>Cedula: </td><td><input type='text' name='cedula' width='100' value='".$row['Paciente_Cedula']."' /></td></tr>
<tr><td>Fecha Naci:</td><td><input type='text' name='fecha_nacimiento' id='fecha' readonly='readonly' value='".$row['Paciente_Fecha_Nacimiento']."' width='100'/><input name='popcal' onClick='if(this.blur)this.blur();var fm=this.form_ac;if(self.gfPop)gfPop.fPopCalendar(document.form_ac.fecha);' value='edit' type='button'></td></tr>
<tr><td>Edad:</td><td>".$edad."</td></tr>
<tr><td>Telefono: </td><td><input type='text' name='telefono' width='100' value='".$row['Paciente_Telefono']."' maxlength='10' /></td></tr>
<tr><td colspan='2'>Imagenes</td></tr>";
if($num>0){
while($row2=mysql_fetch_array($rst2)){
$mostrar.="<tr><td><a href='imgpacientes/".$row2['Paciente_Imagenes_Nombre']."' > ver ".$row2['Paciente_Imagenes_Nombre']." </a></td>
<td><a href='?evento=bpaciente&value=".$row2['Paciente_Imagenes_Id']."&accion=deleteimg' ><img title='Eliminar' src='icon/delete2.png' height='25' width='25' onclick=\"return confirm('Realmente Desea Eliminar?')\" /> </a></td></tr>";}
}
$mostrar.='<tr><td>Subir Imagenes:</td><td> <a href="#" onclick="addField()" accesskey="5">Añadir Imagen</a></td>
<tr><td colspan="2"> <dd><div id="files"></div></dd></td></tr>';
$mostrar.="<tr><td><input name='bot_update' type='submit' value='update' height='10' width='10' ></td><td><input name='bot_delete' type='submit' value='delete' onclick=\"return confirm('Realmente Desea Eliminar?')\" height='10' width='10' ></td></tr><input type='hidden' name='id' value='".$row['Paciente_Id']."' /></form></table>
</center><br> <iframe name='gToday:normal:agenda.js' id='gToday:normal:agenda.js' src='calendar/ipopeng.htm' style='visibility: visible; z-index: 999; position: absolute; top: -500px; left: -500px;' frameborder='0' height='189' scrolling='no' width='174'></iframe>";
}
else{
$mostrar="Su busqueda no encontro resultados";
}
$this->conexion->desconectar($rst);
return $mostrar;
}
este es el forumlario que me arroja desde la base de datos para actualizar la parte <div id="files"> me crea los campos tipo files cada vez que le doy al enlace añadir imagenes. Enviando desde este formulario no se llena el vector $_Files['archivos'] el cual tiene las imagenes a subir
Les agradeceria enormente su ayuda pues me parece q estan iguales y uno el de actualizar no me funciona.
Este es el script js para crear los files dinamicamente
Cita: // JavaScript Document
var numero = 1;
// Funciones comunes
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}
addField = function () {
container = d('files');
span = c('SPAN');
span.className = 'File';
span.id = 'File' + (++numero);
field = c('INPUT');
field.name = 'archivos[]';
field.type = 'File';
a = c('A');
a.name = span.id;
a.href = '#';
a.onclick = removeField;
a.innerHTML = 'Quitar';
span.appendChild(field);
span.appendChild(a);
container.appendChild(span);
}
removeField = function (evt) {
lnk = f(e(evt));
span = d(lnk.name);
span.parentNode.removeChild(span);
}
Y esta es la pagina principar que procesa todo
Código PHP:
if(isset($_GET['evento']) and $_GET['evento']=="fregistrar_paciente"){
ob_start();
require_once( "Form_Registrar_Paciente.html" );
$mostrar .= ob_get_clean();
$mostrar.="<br>";
}
if(isset($_POST['bot_Registrar_Paciente'])){
echo "entra registrar";
$p=new Class_Paciente();
$p->set_Cedula($_POST['cedula']);
$p->set_nombre($_POST['nombre']);
$p->set_Fecha_Nacimiento($_POST['fecha_nacimiento']);
$p->set_Telefono($_POST['telefono']);
if($p->Existe_Id(1)){
$id=$p->obtener_Id_Mayor();
$id++;
$p->set_Id($id);
}
else{
$p->set_Id(1);
}
if (isset ($_FILES['archivos'])) {//if files
$anombres=array();
foreach ($_FILES["archivos"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
echo "<h1>entra<br>";
//$anombres[]=$_FILES["archivos"]["name"][$key];
$tmp_name = $_FILES["archivos"]["tmp_name"][$key];
//$name = $_FILES["archivos"]["name"][$key];
$ruta='imgpacientes/p.jpg';
//$name = uniqid('bc') . '_' . $name;
$ext = strstr($_FILES['archivos']['name'][$key],'.');
$name=$_POST['cedula']."_".$key.$ext;
$anombres[]=$name;
move_uploaded_file($tmp_name, "imgpacientes/$name");
// $p->Upload_Basico($_FILES['archivos'],$ruta);
}
}
$p->set_Imagenes($anombres);
}//end if files
$p->Registrar_Paciente();
}
if(isset($_POST['bot_update'])){
echo "entra act";
$p=new Class_Paciente();
$p->set_Cedula($_POST['cedula']);
$p->set_nombre($_POST['nombre']);
$p->set_Fecha_Nacimiento($_POST['fecha_nacimiento']);
$p->set_Telefono($_POST['telefono']);
echo "<br>aqui salta";
if (isset ($_FILES['archivos'])) {//if files
$anombres=array();
echo "<h1>archivos</h1>";
foreach ($_FILES["archivos"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
echo "<h1>entra<br>";
//$anombres[]=$_FILES["archivos"]["name"][$key];
$tmp_name = $_FILES["archivos"]["tmp_name"][$key];
//$name = $_FILES["archivos"]["name"][$key];
// $ruta='imgpacientes/p.jpg';
//$name = uniqid('bc') . '_' . $name;
$ext = strstr($_FILES['archivos']['name'][$key],'.');
$name=$_POST['cedula']."_".$key.$ext;
$anombres[]=$name;
move_uploaded_file($tmp_name, "imgpacientes/$name");
// $p->Upload_Basico($_FILES['archivos'],$ruta);
}
}
$p->set_Imagenes($anombres);
}//end if files
$p->Update_Paciente($_POST['id']);
}
require_once('Administrador.html');