Foros del Web » Programando para Internet » PHP »

Haber si pueden ayudarme con esto!

Estas en el tema de Haber si pueden ayudarme con esto! en el foro de PHP en Foros del Web. Hola. mi problema es el siguiente, estoy generando un upload y necesito validar si existe antes de que carge el upload el registro correspondiente (ID) ...
  #1 (permalink)  
Antiguo 18/07/2006, 11:35
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
Haber si pueden ayudarme con esto!

Hola.
mi problema es el siguiente, estoy generando un upload y necesito validar si existe antes de que carge el upload el registro correspondiente (ID) para no perder ese tiempo en espera inserbible...

bueno la idea es validar eso antes de pasar al proximo php... como podria hacerlo¿?... les muestro mi codigo para que clarifiquen sus ideas. :D

este es el codigo del formulario.

lo particione en dos partes ya que no cupe en un solo post!


ahi va....
__________________
sEIK! -Chile-
Analista Programador.
  #2 (permalink)  
Antiguo 18/07/2006, 11:38
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
segunda parte

Código PHP:

<?php                                 
                        
                $strsql 
"SELECT num_oficio FROM oficio";
                
$result select_data($strsql, &$fil, &$col);
                
$row=mysql_fetch_array($result);
                
$consulta $row["num_oficio"];
?>
<html>
<head>
    <script language="JavaScript">
        function esDigito(sChr){
            var sCod = sChr.charCodeAt(0);
            return ((sCod > 47) && (sCod < 58));
        }

        function valSep(oTxt){
            var bOk = false;
            bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
            bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
            return bOk;
        }
        
        function finMes(oTxt){
            var nMes = parseInt(oTxt.value.substr(3, 2), 10);
            var nRes = 0;
            
            switch (nMes){
                case 1: nRes = 31; break;
                case 2: nRes = 29; break;
                case 3: nRes = 31; break;
                case 4: nRes = 30; break;
                case 5: nRes = 31; break;
                case 6: nRes = 30; break;
                case 7: nRes = 31; break;
                case 8: nRes = 31; break;
                case 9: nRes = 30; break;
                case 10: nRes = 31; break;
                case 11: nRes = 30; break;
                case 12: nRes = 31; break;
            }
            
            return nRes;
        }
        
        
        function valDia(oTxt){
            var bOk = false;
            var nDia = parseInt(oTxt.value.substr(0, 2), 10);
            bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
            return bOk;    
        }


        function valMes(oTxt){
            var bOk = false;
            var nMes = parseInt(oTxt.value.substr(3, 2), 10);
            bOk = bOk || ((nMes >= 1) && (nMes <= 12));
        return bOk;
        }
        
        function valAno(oTxt){
            var bOk = true;
            var nAno = oTxt.value.substr(6);
            bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
                if (bOk){
                    for (var i = 0; i < nAno.length; i++){
                        bOk = bOk && esDigito(nAno.charAt(i));
                    }
                }    
        
        return bOk;
        }    

        function valFecha(oTxt){
            var bOk = true;
            if (oTxt.value != ""){
            bOk = bOk && (valAno(oTxt));
            bOk = bOk && (valMes(oTxt));
            bOk = bOk && (valDia(oTxt));
            bOk = bOk && (valSep(oTxt));
                if (!bOk){
                    alert("Fecha inválida");
                    oTxt.value = "";
                    oTxt.focus();
                }
            }
        }
    </script>

    <!--valida espacios vacios-->
    <script languaje="javascript">
        function validar(form)
        {
            var error = "Por favor, antes de enviar el formulario,\ncomplete los siguientes campos:\n\n";
            var a = ""
            var plata2=document.form.num_oficio.value;
            var plata3=parseInt(plata2);
            var fecha_recepcion, fecha_oficio;
            
            if (form.num_oficio.value == "") { a += " - Nº de documento\n"; }
            if (form.nom_oficio.value == "") { a += " - Nombre de documento\n"; }
            if (form.ant_oficio.value == "") { a += " - Descrip documento ANT.\n"; }
            if (form.mat_oficio.value == "") { a += " - Descrip. documento MAT.\n"; }
            if (form.fecha_oficio.value == "") { a += " - Fecha del documento.\n"; }
            if (form.fecha_recepcion_oficio.value == "") { a += " - Fecha de Recepción.\n"; }
            if (form.selorganismo.value == "") { a += " - Organismo Regulador\n"; }
            if (form.seltipo_oficio.value == "") { a += " - Tipo documento.\n"; }
            if (form.archivo.value == "") { a += " - Adjuntar documento.\n"; }
            
            if (a != "") { alert(error + a); return true; }
            
            // VALIDACION DE FECHA MAYOR
            fecha_oficio = form.fecha_oficio.value;
            fecha_oficio = fecha_oficio.substring(6, 10) + fecha_oficio.substring(3, 5) + fecha_oficio.substring(0, 2);
            fecha_recepcion = form.fecha_recepcion_oficio.value;
            fecha_recepcion = fecha_recepcion.substring(6, 10) + fecha_recepcion.substring(3, 5) + fecha_recepcion.substring(0, 2);
            
            if (fecha_recepcion < fecha_oficio){
                alert('La fecha de recepción no puede ser mayor a la fecha de creacion del documento.');
                form.fecha_recepcion_oficio.focus();
                return;
            }
            // ***********
            
            if(isNaN(plata3)){
                alert('" Nº de Oficio " debe ser un dato númerico');
                document.form.num_oficio.focus();return;
            }
            document.form.selestado_oficio.disabled=false;                
            document.form.cmdEnviar.disabled=true;
            document.form.cmdCancelar.disabled=true;
            document.form.cmdBorrar.disabled=true;                        
            form.submit()
        }
    </script>
    
<link href="../config.inc.css" rel="stylesheet" type="text/css">
</head>
<body topmargin="0" leftmargin="0" class="ti_9_plomo">
<form method="POST" enctype="multipart/form-data" name="form" action="oficio_ag.php" ALIGN="top">
    <input type="hidden" name="evento_user" value="<?php print($_SESSION['user_sec'])?>">    
            <table width="510" border="0" cellpadding="0" cellspacing="2">
                <tr><td height="40" colspan="3" class="ti_14_blanco" style="font-size:20;" align="center" bgcolor="#333399">DETALLE NUEVO DOCUMENTO</td></tr>
                
                <tr><td height="20"></td>
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#ccffff">&nbsp;Nº de documento</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_12_negro"><input type="text" name="num_oficio" style="width:120;" class="text110"  maxlength="15"  size="10" ></td>
                </tr>
                <tr><td height="7"></td></tr>
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#ccffff">&nbsp;Nombre de documento</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_12_negro"><input type="text" name="nom_oficio" style="width:320;" size="20" class="text110"  maxlength="20" onChange="javascript:this.value=this.value.toLowerCase();"></td>
                </tr>
                <tr><td height="7"></td></tr>
                <tr>
                    <td height="25" width="180" class="ti_12_negro" valign="top" bgcolor="#ccffff">&nbsp;Descrip. documento ANT.</td>
                    <td width="10" class="ti_12_negro" align="center" valign="top">:</td>
                    <td width="320" class="ti_12_negro"><textarea name="ant_oficio" class="text110" style="width:320;" rows="3" onChange="javascript:this.value=this.value.toLowerCase();"></textarea></td>
                </tr>
                <tr><td height="7"></td></tr>
                <tr>
                    <td height="25" width="180" class="ti_12_negro" valign="top" bgcolor="#ccffff">&nbsp;Descrip. documento MAT.</td>
                    <td width="10" class="ti_12_negro" align="center" valign="top">:</td>
                    <td width="320" class="ti_12_negro"><textarea name="mat_oficio" class="text110" style="width:320;" rows="3" onChange="javascript:this.value=this.value.toLowerCase();"></textarea></td>
                </tr>
                <tr><td height="7"></td></tr>
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#ccffff">&nbsp;Fecha del documento</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_9_plomo"><input type="text" name="fecha_oficio" class="text110" maxlength="10" onblur="valFecha(this)"><font color="#C0C0C0">&nbsp;Ej: 31/12/2006</font></td>
                </tr>
                <tr><td height="7"></td></tr>
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#ccffff">&nbsp;Fecha de Recepción</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_9_plomo"><input type="text" name="fecha_recepcion_oficio" class="text110" maxlength="10" onblur="valFecha(this)"><font  color="#C0C0C0">&nbsp;Ej: 31/12/2006</font></td>
                </tr>
                <tr><td height="7"></td></tr>
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#ccffff">&nbsp;Estado documento</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_12_negro">
                        <select name="selestado_oficio" disabled>
                               <option value="Ingresado" selected>Ingresado</option> 
                           </select>
                    </td>
                </tr>                
                <tr><td height="7"></td></tr>                
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#CCFFFF">&nbsp;Organismo Regulador</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_12_negro">
                        <select name="selorganismo" >
                               <option value="sec">SEC</option> 
                               <option value="cne">CNE</option> 
                               <option value="cdec">CDEC</option> 
                        </select>
                        <input type="hidden" name="hidorganismo" value="<?php print($row["organismo"]);?>">
                        <script language="vbscript">
                            document.forms.form.selorganismo.value=document.forms.form.hidorganismo.value
                        </script>
                    </td>
                </tr>                
                <tr><td height="7"></td></tr>                
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#CCFFFF">&nbsp;Tipo Documento</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_12_negro">
                        <select name="seltipo_oficio">
                               <option value="Oficio Circular">Oficio Circular</option>
                            <option value="Resolución Exenta">Resolución Exenta</option>   
                               <option value="Cartas">Cartas</option>
                            <option value="Respuesta de Facturación">Respuesta de Facturación</option>
                        </select>
                        <input type="hidden" name="hidtipo_oficio" value="<?php print($row["tipo_oficio"]);?>">
                        <script language="vbscript">
                            document.forms.form.seltipo_oficio.value=document.forms.form.hidtipo_oficio.value
                        </script>
                    </td>
                </tr>
                <tr><td height="7"></td></tr>                        
                <tr>
                    <td height="25" width="150" class="ti_12_negro" bgcolor="#ccffff">Adjuntar documento&nbsp;</td>
                    <td width="10" class="ti_12_negro" align="center">:</td>
                    <td width="320" class="ti_12_negro"><input type="file"  name="archivo" size="20" ></td>
                </tr>                
                <tr><td height="25"></td></tr>    
                </table>
                <center>
                <input type="button" name="cmdEnviar" value="Enviar" class="button" onClick="validar(this.form)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="button" class="button" name="cmdCancelar" value="Cancelar" onclick="javascript:window.close();">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="reset" value="Borrar" class="button" name="cmdBorrar" >
                </center>
             </form>    

</center>
</body>
</html>
__________________
sEIK! -Chile-
Analista Programador.
  #3 (permalink)  
Antiguo 18/07/2006, 11:39
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
tercera parte y final...

este es el codigo donde inserto a la base datos y subo el registro.
Código PHP:
<link href="../config.inc.css" rel="stylesheet" type="text/css">


<?php 
        
// Paso 1: Recibimos el formulario: 
        
$num_oficio=$_POST["num_oficio"];

        
// Obviamente conectamos 
        
mysql_connect("localhost","root"); 
        
mysql_select_db("bd"); 

        
// Paso 2: Hacemos la consulta a la Tabla por el documento
        
$busquedamysql_query("SELECT num_oficio FROM oficio WHERE num_oficio='".$num_oficio."'"); 


        
// Paso 3: vemos si hubo coincidencias 
        
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver 
       // Inciso a:  
                  
echo "<center>
                <table> 
                        <tr>
                            <td height='100' width='30' class='ti_12_negro' ></td>
                        </tr>
                        <tr>
                            <td height='40' width='330' align='center' class='ti_14_azul' bgcolor='#CCFFFF'>Número de documneto ya existe dentro de los registros, favor ingrese nuevamente</td>
                        </tr>
                        <tr>
                            <td height='30'></td>
                        </tr>
                        <tr>
                            <td height='40' width='330' align='center'><input type='button' class='button' name='cmdsalir' value='Regresar' onclick='javascript:history.back()'></td>
                        </tr>
                </table>"
;           
                } else {
?>
   
<?php
        
// Configuración //
        ///////////////////
        // $extensiones=array("1ªext","2ªext","....");
        // Aqui debes poner las extensiones que NO admitas
        // por ejemplo si no quieres admitir .html , .exe ni .gif :
        // $extensiones=array("html","exe","gif");
        ///////////////////////////////////////
        
$extensiones=array("");
        
/////////////////
        // $path="/ruta/ta/ta";
        // Si el server rula bajo LinuX toda la ruta completa /var/etc/..
        // Si rulas bajo WindoWs C:/midirectorioroot/tal..
        // Nota: Sin el último / ej: C:/miweb NO C:/miweb/
        ////////////////
        
$path="C:/Inetpub\wwwroot\sec2\oficios";
        
$nombre=$_FILES['archivo']['name'];
        
$tamanio=$_FILES['archivo']['size'];
        
$tipo=$_FILES['archivo']['type'];
        
$var explode(".","$nombre");
        
$num count($extensiones);
        
$valor $num-1;
        
            for(
$i=0$i<=$valor$i++) {
                if(
$extensiones[$i] == $var[1]) {
                echo 
"<center><table> 
                    <tr>
                        <td height='100' width='30' class='ti_12_negro' ></td>
                    </tr>
                    <tr>
                        <td height='40' width='330' align='center' class='ti_12_negro' bgcolor='#CCFFFF'>Archivo no admitido</td>
                    </tr>
                    <tr>
                        <td height='30'></td>
                    </tr>
                    <tr>
                        <td height='40' width='330' align='center'><input type='button' class='button' name='cmdsalir' value='Salir' onclick='javascript:window.close();'></td>
                    </tr>
                    </table>"
;
                    
$verifica=1;
                    exit;
                }
            }
        
        
$nombre_archivo $_POST["num_oficio"].substr($nombrestrlen($nombre) - 44);
        
            if (
is_uploaded_file($_FILES['archivo']['tmp_name']))
                 {
                  
move_uploaded_file($_FILES['archivo']['tmp_name'], "$path/$nombre_archivo");
                  echo 
"<center>
                    <table> 
                        <tr>
                            <td height='100' width='30' class='ti_12_negro' ></td>
                        </tr>
                        <tr>
                            <td height='40' width='330' align='center' class='ti_12_negro' bgcolor='#CCFFFF'>Datos ingresados correctamente!
                            </td>
                        </tr>
                        <tr>
                            <td height='30'></td>
                        </tr>
                        <tr>
                            <td height='40' width='330' align='center'></td>
                        </tr>
                    </table>"
;
                     
                }
            else
                     { 
                 echo 
"<center>
                    <table> 
                        <tr>
                            <td height='100' width='30' class='ti_12_negro' ></td>
                        </tr>
                        <tr>
                            <td height='40' width='330' align='center' class='ti_12_negro' bgcolor='#CCFFFF'>Error al subir el archivo</td>
                        </tr>
                        <tr>
                            <td height='20'></td>
                        </tr>
                        </table>"
;
                        
$verifica=1;
                    }
?>

      
    <CENTER>
         <input type="button"  name="cmdaceptar" value="Aceptar" class="button" onclick="javascript:window.close();">
    </CENTER>
 <br> 
<?php if ($verifica==0){ ?>
<?php
                $nom_oficio
=$_POST["nom_oficio"];
                
$ant_oficio=$_POST["ant_oficio"];
                
$mat_oficio=$_POST["mat_oficio"];
                
$fecha_oficio=$_POST["fecha_oficio"];
                
$fecha_recepcion_oficio=$_POST["fecha_recepcion_oficio"];
                
$estado_oficio =$_POST["selestado_oficio"];
                
$tipo_oficio=$_POST["seltipo_oficio"];
                
$organismo=$_POST["selorganismo"];
                    
                
$link mysql_connect("localhost""root") or die("Could not connect to database!");
                
mysql_select_db("bd") or die("Could not select database!");
                
                
$query "INSERT INTO oficio (nom_oficio, num_oficio, ant_oficio";
                
$query.= ", mat_oficio, fecha_oficio, fecha_recepcion_oficio, archivo, estado_oficio, tipo_oficio, organismo) VALUES ";
                
$query.= "('".$nom_oficio."',".$num_oficio.",'".$ant_oficio."','".$mat_oficio."'";
                
$query.= ", '".$fecha_oficio."','".$fecha_recepcion_oficio."','".$nombre_archivo."','".$estado_oficio."','".$tipo_oficio."','".$organismo."')";
                
$result mysql_query($query$link);
?>
    
<?php //agregamos registron en los detalles
        
$num_oficio_evento=$num_oficio;
        
$evento_tipo "Ingreso datos";    
        
$evento_fecha $gfecha_hora_sistema;
        
$evento_user $_POST["evento_user"];
        
$query "INSERT INTO evento (num_oficio_evento, evento_tipo, evento_fecha, evento_user) VALUES";
        
$query.= "(".$num_oficio_evento.",'".$evento_tipo."','".$evento_fecha."','".$evento_user."')";
            
        
$result2 mysql_query($query$link);
    
?>
<script languaje="javascript">    
        top.opener.document.location = top.opener.document.location;
</script>
<?php } } ?>
si se dan cuenta logre validar pero al direccionar al otro php igual carga el archivo... y pierdo mucho tiempo si este es pesado.

saludos espero me ayuden
__________________
sEIK! -Chile-
Analista Programador.

Última edición por seik!; 18/07/2006 a las 11:56
  #4 (permalink)  
Antiguo 18/07/2006, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
mi problema es el siguiente, estoy generando un upload y necesito validar si existe antes de que carge el upload el registro correspondiente (ID) para no perder ese tiempo en espera inserbible...
Un detalle .. PHP no "suelta" el control de tu script hasta que sube todo el archivo al servidor (pese lo que pese y le cueste el tiempo que le lleve). Así que tendrás que esperar siempre a que tu archivo "suba" al servidor como para poder tomar su nombre u otros datos anexos y realizar tus validaciones contra tu BBDD bajo consulta SQL dada.

Especifica bao que criterio quieres ver en tu BBDD si tal dato existe o no .. (por el nombre del archivo que sube? .. o que dato? ..)

PD: (quita "IP's" y datos relevantes de conexión en tus BBDD!!!).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/07/2006, 11:59
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
oka, modificado ... no me percate :P

necesito validar el ID del registro el cual lleva ligado al archivo que subo...
intente un par de cosas como validar en el mismo formulario... lo logro pero despues nose como hacer el submit a la otra pagina... cosas como esas...
alguna ideita?
es validar un El ID relacionado en la base datos, El Id es numerico y es ingresado por el usuario.....
__________________
sEIK! -Chile-
Analista Programador.
  #6 (permalink)  
Antiguo 18/07/2006, 12:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
es validar un El ID relacionado en la base datos, El Id es numerico y es ingresado por el usuario.....
Código PHP:
$sql="SELECT ID FROM tabla WHERE ID='".$_POST['ID']."'";
$resultado=mysql_query($sql) or die (mysql_error());
if (
mysql_num_rows($resultado) != 1){
  echo 
"Ya existe tal ID";
exit;

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 18/07/2006, 12:39
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
si !

la verdad eso lo tengo si te das cuenta esta en la segunda parte... el`punto como consigo esto en la primera .. en el formulario... y despues poder mandar de igual manera los datos a la segunda pantalla... la idea es validar antes de pasar de pagina validar para evitar el almacenar el archivo antes de validar, pero igual realizar el submit al segundo php... espero entiendan nose si fui claro :S
__________________
sEIK! -Chile-
Analista Programador.
  #8 (permalink)  
Antiguo 18/07/2006, 15:40
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 11 años, 6 meses
Puntos: 6
Sonrisa aLU!

algun voluntario?
__________________
sEIK! -Chile-
Analista Programador.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:10.