Foros del Web » Programando para Internet » PHP »

PHP OO Como validar ciclo for con PHP y MySql

Estas en el tema de Como validar ciclo for con PHP y MySql en el foro de PHP en Foros del Web. Hola que tal amigos, estoy desarrollando una webapp de gestion escolar con php y mysql y tengo problemas para validar los horarios que ingresan a ...
  #1 (permalink)  
Antiguo 13/11/2012, 13:18
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Sonrisa Como validar ciclo for con PHP y MySql

Hola que tal amigos, estoy desarrollando una webapp de gestion escolar con php y mysql y tengo problemas para validar los horarios que ingresan a la base de datos. El problema esta en que antes de guardar los registros a la bd quiero validar si se repiten o no, y si estan repetidos mandar un mensaje de error y que no se ingrese nada a la bd, pero con el codigo como lo tengo hasta ahora no me funciona para validar AYUDAAAA.

Les dejo mi codigo:

<?php

//si el formulario ha sido enviado guardamos el registro
if(isset($_POST['altaHora'])){

for($i=0;$i<$_POST['total'];$i++){

//Aqui esta el problema al comprobar si existen registros duplicados en el formulario
//si existen termina la ejecucion del script pero no me funciona porque me dice que todos estan repetidos
//y no es asi
if($_POST['hora'][$i] == $_POST['hora'][$i]){

exit ("ERROR... EXISTEN HORARIOS DUPLICADOS");
}
}

//nos conectamos a mysql
$cnx=conectar();
for($i=0;$i<$_POST['total'];$i++){

$hora = $_POST['hora'][$i];
$mat_h = $_POST['id_mat'][$i];
$grup_h = $_POST['id_grup'][$i];


$sql = "INSERT INTO horario(hora,mat_h,grup_h)
VALUES('$hora','$mat_h','$grup_h');";

$res = mysql_query($sql) or die("<h3><br /><br />HA OCURRIDO UN ERROR EN LA CONSULTA...</h3>\n<br /><b>Consulta:</b> " . $sql . "<br /><br />\n
<b>Error:</b> (" . mysql_errno() . ") " . mysql_error());
}
echo "<br /><br /><table width='500' align='center' border='0'>";
echo "<tr><td align='left'>LOS HORARIOS SE HAN INGRESADO CON EXITO!!!</td></tr>";
echo "</table>";

echo "<table width='500' align='center' border='0'>";
echo "<tr><td align='left' width='250'><a href='admin.php'><h4>Ir a inicio</h4></a></td>";
echo "<td align='right'><a href='altaHora.php'><h4>Ingresar m&aacute;s horarios</h4></a></td></tr>";
echo "</table>";

mysql_close($cnx);
exit;
}
?>
  #2 (permalink)  
Antiguo 13/11/2012, 13:23
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Como validar ciclo for con PHP y MySql

Pues esque en el for esta diciendole que si lo que llega es igual a lo que llega, cuando deberia de ser lo if($_POST['hora'][$i] == $hora)

donde $hora es un dato sacado de la base de datos.

Espero que por ahi vaya tu duda
__________________
Lo imposible solo cuesta un poco mas
  #3 (permalink)  
Antiguo 14/11/2012, 09:51
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Como validar ciclo for con PHP y MySql

Creo que no me supe explicar. Lo que quiero que haga el script es comprobar si hay registros repetidos en el for, ya que este for lee los datos enviados desde un formulario de otra pagina. Por ejemplo:

Datos del ciclo for:

0 = 9am
1 = 10am
2 = 11am
3 = 11am

En este caso mandaria un mensaje de error porque se repiten dos horarios y me sacaria de la aplicacion con un exit. Espero ahora si haberme explicado.

Gracias de antemano por tu ayuda jandrogdz
  #4 (permalink)  
Antiguo 14/11/2012, 10:40
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Como validar ciclo for con PHP y MySql

ok men para saber si estan reptidos necesitas compararlos como te digo lo que llega el $_POST['hora'] contra lo que estas guardando en la base de datos

Si en la primera iteracion
$i=0;
$_POST['hora'] = 9:00 am
se guarda la hora pero si en la segunda iteracion por ejemplo:

$i=1;
$_POS['hora'] = 9:00 am;

entonces exit();

A lo que voy supongo que necesitas hacer una consulta a la base de datos antes de hacer la insercion para saber si existe esa hora o no.

Espero que eso sea lo que buscas...

Otra cosa men como mandas la hora pork a lo mejor te esta llegando siempre lo mismo no se si la estes mandando como array?
__________________
Lo imposible solo cuesta un poco mas
  #5 (permalink)  
Antiguo 14/11/2012, 11:41
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 1 mes
Puntos: 31
Respuesta: Como validar ciclo for con PHP y MySql

Buenas tardes,

tal vez podrias probar de la siguiente forma:
Código PHP:
if(isset($_POST['total'])){
    
$array_horas = array(); //declaro array vacio que tendra todas las horas sin repetir
    
for($i=0;$i<$_POST['total'];$i++){ 
        if (
in_array($_POST['hora'][$i], $array_horas)) {//si la hora ya esta en el array, salgo
            
exit ("ERROR... EXISTEN HORARIOS DUPLICADOS");
        }
        else{
$array_horas[]=$_POST['hora'][$i];} // si la hora no esta en el array, la ingreso
    
}

De todas maneras, no creo que funcione la forma $_POST['hora'][$i]. Creo que se queda con un dato solo, que es el ultimo de los campos llamados "hora".

Saludos
__________________
Tomarse un tiempo para redactar correctamente la pregunta, utilizando los signos de puntuación adecuados, es ganar tiempo y calidad en la respuesta.
  #6 (permalink)  
Antiguo 15/11/2012, 14:46
 
Fecha de Ingreso: agosto-2012
Ubicación: Veracruz
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Como validar ciclo for con PHP y MySql

Antes de todo quiero agradecerles su tiempo para contestar.

jandrogdz No necesito hacer ninguna consulta a la base de datos, ya que los registros que quiero comparar son los que estoy enviando a travez del formulario. Como verás en el codigo se ingresan varios registros al mismo tiempo y necesito saber si están repetidos para salirme con un exit.

Javier01 Ya probe tu propuesta y no me funciona.

Aqui dejo el formulario de envío y el script que recibe los datos de ese formulario haber si me pueden ayudar:

Página del formulario. Solo pongo lo mas importante.

<html>
<head><title>Alta de horarios</title></head>
<body>

<form action="altaHora2.php" method="post">
<?php
//nos conectamos a mysql
$cnx=conectar();
//consulta mysql
$sql = "SELECT id_mat,id_grup,per_grup,nom_mat,sem_grup,id_prof,n om_prof,ap_prof,am_prof,esp_grup,letra_grup,turno_ grup,profesion FROM
grupo AS g, materia AS m, profesor AS p WHERE m.prof_mat=p.id_prof AND sem_grup=sem_mat AND esp_mat=esp_grup AND id_grup=".$_POST['id_grup'];

$res = mysql_query($sql) or die("<h3><br /><br />HA OCURRIDO UN ERROR EN LA CONSULTA...</h3>\n<br /><b>Consulta:</b> " . $sql . "<br /><br />\n
<b>Error:</b> (" . mysql_errno() . ") " . mysql_error());

if(mysql_num_rows($res) >0){

echo "<table>";

while($fila=mysql_fetch_array($res)){
echo "<tr><td width='120'><input class='inputId' type='text' id='id_mat' name='id_mat[]' value='". $fila["id_mat"] ."' readonly /></td>";
echo "<td width='400'><input class='inputGrande' type='text' id='nom_mat' name='nom_mat[]' value='".$fila['nom_mat']."' readonly /></td>";

echo "<td><input class='inputChico' type='text' id='hora' name='hora[]' value='' /></td><tr>";

echo "<tr><td><input class='inputMedio' type='hidden' id='id_grup' name='id_grup[]' value='".$fila['id_grup']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='esp_grup' name='esp_grup[]' value='".$fila['esp_grup']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='sem_grup' name='sem_grup[]' value='".$fila['sem_grup']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='turno_grup' name='turno_grup[]' value='".$fila['turno_grup']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='per_grup' name='per_grup[]' value='".$fila['per_grup']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='letra_grup' name='letra_grup[]' value='".$fila['letra_grup']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='id_prof' name='id_prof[]' value='".$fila['id_prof']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='nom_prof' name='nom_prof[]' value='".$fila['nom_prof']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='ap_prof' name='ap_prof[]' value='".$fila['ap_prof']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='am_prof' name='am_prof[]' value='".$fila['am_prof']."' /></td>";
echo "<td><input class='inputMedio' type='hidden' id='profesion' name='profesion[]' value='".$fila['profesion']."' /></td></tr>";

}
$total= mysql_num_rows($res);
echo "</table>";
echo "<br /><table class='datosAlumno' width='600' align='center' border='0' cellpadding='0' cellspacing='0'>";
echo "<tr><td><input class='inputId' type='text' value='' readonly /></td>";
echo "<td><input class='inputMedio' type='text' value='' readonly /></td>";
echo "<td><input class='inputMedio' type='text' value='' readonly /></td>";
echo "<td><input class='inputMedio' type='text' value='' readonly /></td>";
echo "<td><input class='inputChico' type='hidden' value='' readonly /></td>";

echo "<tr><td><input class='inputId' type='text' value='' readonly /></td>";
echo "<td><input class='inputMedio' type='text' value='' readonly /></td>";
echo "<td><input class='inputMedio' type='text' value='' readonly /></td>";
echo "<td class='total'><input class='inputMedio' type='text' value='Materias Totales: ' readonly /></td>";
echo "<td class='total'><input class='inputChico' type='text' id='total' name='total' value='$total' readonly /></td></tr>";
echo "</table>";

echo "</div>";
echo "<div class='botonesAlta'>";
echo "<input type='submit' name='altaHora' value='Dar de alta' />";
echo "</div>";

}else{
exit ("NO SE ENCONTRARON MATERIAS PARA ESTE GRUPO...");
}
mysql_close($cnx);
?>

</form>
</body>
</html>


Página que recibe los datos del formulario.

<?php

//si el formulario ha sido enviado editamos el registro
if(isset($_POST['altaHora'])){

//Esta es la parte que no me funciona. Comparar si los registros
//obtenidos desde el formulario se repiten.
$array_horas = array();

for($i=0;$i<$_POST['total'];$i++){

if(in_array($_POST['hora'][$i], $array_horas)){

exit ("EL REGISTRO ESTA DUPLICADO");
}

}

//nos conectamos a mysql
$cnx=conectar();
for($i=0;$i<$_POST['total'];$i++){

$hora = $_POST['hora'][$i];
$mat_h = $_POST['id_mat'][$i];
$grup_h = $_POST['id_grup'][$i];
$per_h = $_POST['per_grup'][$i];
$nom_mat = $_POST['nom_mat'][$i];
$sem_grup = $_POST['sem_grup'][$i];
$nom_prof = $_POST['nom_prof'][$i];
$ap_prof = $_POST['ap_prof'][$i];
$am_prof = $_POST['am_prof'][$i];
$esp_grup = $_POST['esp_grup'][$i];
$letra_grup = $_POST['letra_grup'][$i];
$turno_grup = $_POST['turno_grup'][$i];
$profesion = $_POST['profesion'][$i];
$prof_h = $_POST['id_prof'][$i];

$sql = "INSERT INTO horario(hora,mat_h,grup_h,per_h,nom_mat,sem_grup,n om_prof,ap_prof,am_prof,esp_grup,letra_grup,turno_ grup,profesion,prof_h)
VALUES('$hora','$mat_h','$grup_h','$per_h','$nom_m at','$sem_grup','$nom_prof','$ap_prof','$am_prof', '$esp_grup','$letra_grup','$turno_grup','$profesio n','$prof_h');";

$res = mysql_query($sql) or die("<h3><br /><br />HA OCURRIDO UN ERROR EN LA CONSULTA...</h3>\n<br /><b>Consulta:</b> " . $sql . "<br /><br />\n
<b>Error:</b> (" . mysql_errno() . ") " . mysql_error());
}
echo "<br /><br /><table width='500' align='center' border='0'>";
echo "<tr><td align='left'>LOS HORARIOS SE HAN INGRESADO CON EXITO!!!</td></tr>";
echo "</table>";

echo "<table width='500' align='center' border='0'>";
echo "<tr><td align='left' width='250'><a href='admin.php'><h4>Ir a inicio</h4></a></td>";
echo "<td align='right'><a href='altaHora.php'><h4>Ingresar m&aacute;s horarios</h4></a></td></tr>";
echo "</table>";

mysql_close($cnx);
exit;
}
?>

Etiquetas: formulario, mysql, registro, sql, ciclos
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 03:48.