Ver Mensaje Individual
  #15 (permalink)  
Antiguo 09/01/2014, 17:20
Avatar de Briss
Briss
 
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Ajustar codigo

Cita:
Iniciado por Alexis88 Ver Mensaje
Eso sucede porque primero quieres averiguar cuántos registros te da la consulta y DESPUÉS la ejecutas. ¿No debería ser al revés?.

Por otro lado, esto no tiene sentido:

Código PHP:
Ver original
  1. foreach($clases as $clase){
  2. $q_clase = quoted($clase);
  3. $q_clase = array();
  4.  
  5. {
  6.  
  7. $listaMaterias="('".implode("','",$q_clase)."')";
  8. $consulta = mysql_query($conexion, "SELECT requisito FROM materias WHERE materia in $q_clase and (requisito IS NOT NULL and requisito NOT IN $q_clase)");
  9.  
  10. }

Primero, asignas un valor a $q_clase pero luego lo conviertes en array ¿?, luego, no sé de dónde vendrán esas llaves de apertura y cerrado que, al menos en lo que muestras de código, no van. Además, con quoted, colocas el dato entrecomillas, pero luego le vuelves a poner comillas en el implode.

Debería ser así:

Código PHP:
Ver original
  1. $listaMaterias="('".implode("','", $clases)."')";
  2. $consulta = mysqli_query($conexion, "SELECT requisito FROM materias WHERE materia in $listaMaterias and (requisito IS NOT NULL and requisito NOT IN $listaMaterias)");

Y con eso nos olvidamos de los bucles, que pueden ser muy útiles, pero como dije, no son eficientes (utilización de recursos).

Saludos

Gracias por lo que indicas...
tengo mi código así
Código PHP:
<?php
    
include 'globals.php';
    
    
session_start();
    
    
$id_alumno $_SESSION['owner_session_id'];
    
$q_id_alumno quoted($id_alumno);
    
    if(!isset(
$_POST['clases'])){
        
header("Location: show_oferta_academica.php");
    }
    
    
$clases $_POST['clases'];
    
    
encabezado("Comprobar carga");
    
navegacion();
    
    
$conexion solicitarConexion();
    
    
$errores = array();
    
$creditos_totales 0;
    
$horas_teoria_totales 0;
    
$horas_practica_totales 0;
    
    echo 
"<table>
            <tr>
                <td>Clave</td>
                <td>Profesor<br>Materia</td>
                <td>Grupo</td>
                <td>Horas Teoria</td>
                <td>Horas Practica</td>
                <td>Créditos</td>
            </tr>"
;

    foreach(
$clases as $clase){
        
$q_clase quoted($clase);
        
$listaMaterias="('".implode("','"$clases)."')";
$consulta =  "SELECT requisito FROM materia WHERE id_materia in $listaMaterias and (requisito IS NOT NULL and requisito NOT IN $listaMaterias)";
        
$resultado = @mysql_query($consulta$conexion) or die(mysql_error());
        
                if (
mysql_num_rows($resultado)) {
            
$resultado mysql_fetch_array($consulta);
            
$requisitos[] = $resultado["requisito"];
            
mysql_free_result($resultado);
        }        
    }
     
    
    for (
$i 0$limite count($listaMaterias); $i $limite$i++) {
    
$clave array_search($listaMaterias[$i], $requisitos)
    if (
$clave !== FALSE
        echo 
$requisitos[$clave] . " es un curso requisito de " $materias_elegidas[$i];
}
    
    
#Fin de tabla
    
echo "</table>";
    
    
piePagina();
?>


pero me arroja el siguiente error
Parse error: syntax error, unexpected T_IF

que es en este if
if ($clave !== FALSE)
echo $requisitos[$clave] . " es un curso requisito de " . $materias_elegidas[$i];
}