Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] foreach y arreglo no toma el primer registro

Estas en el tema de foreach y arreglo no toma el primer registro en el foro de PHP en Foros del Web. Hola Quisiera saber si alguien me pudiera ayudar con mi problema, quiero comparar dos arreglos, con matriculas y si coinciden entonces que escriba el nombre ...
  #1 (permalink)  
Antiguo 29/01/2014, 12:51
Avatar de Tigerlily  
Fecha de Ingreso: diciembre-2013
Ubicación: Mexico
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta foreach y arreglo no toma el primer registro

Hola

Quisiera saber si alguien me pudiera ayudar con mi problema, quiero comparar dos arreglos, con matriculas y si coinciden entonces que escriba el nombre de la persona con esa matricula,

tengo
arreglo1 {36,41,65}
arreglo2{36,44,65}
nombrealumno{ana,juan,luis}

y tengo este codigo
Código PHP:
foreach ( $array1 as $uno 

   
$igual array_search $uno$array2 ); 
   if ( 
$igual 
   { 
      echo 
"&nbsp;&nbsp;* ".$nombrealumno[$igual]."<br/>"
   } 

este codigo solamente me lanza el nombre de luis y el nombre de ana no, por que esta en la primera posición, pero si pongo un nombre antes del numero 36, si lo hace, alguien me puede ayudar?
Se los agradecería mucho (:
  #2 (permalink)  
Antiguo 29/01/2014, 12:56
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: foreach y arreglo no toma el primer registro

Código PHP:
foreach ( $array1 as $kk=>$uno 

   
$igual array_search $uno$array2 ); 
   if ( 
$igual 
   { 
      echo 
"&nbsp;&nbsp;* ".$nombrealumno[$kk]."<br/>"
   } 

me parece que asi funcionaria
  #3 (permalink)  
Antiguo 29/01/2014, 14:07
Avatar de Tigerlily  
Fecha de Ingreso: diciembre-2013
Ubicación: Mexico
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: foreach y arreglo no toma el primer registro

que valor le darias a $kk?
en caso de que digas $kk =0; no funciona :(
  #4 (permalink)  
Antiguo 29/01/2014, 15:04
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: foreach y arreglo no toma el primer registro

Cita:
Iniciado por Tigerlily Ver Mensaje
que valor le darias a $kk?
en caso de que digas $kk =0; no funciona :(
vos tenes estos array:
{36,41,65}
{36,44,65}
{ana,juan,luis}

Si vos no el asignas indice a cada elemento, php le asigna un valor numerico autoincremental. Osea que vos tenes esto segun php:

A = {0=>36, 1=>41, 2=>65}
B = {0=>36, 1=>44, 2=>65}
C = {0=>ana, 1=>juan, 2=>luis}

Vos recores A y cada elemento los buscas en B. Si esta lo que haces es imprimir el elemento de C que tenga el mismo indice que A.
  #5 (permalink)  
Antiguo 29/01/2014, 15:31
Avatar de Tigerlily  
Fecha de Ingreso: diciembre-2013
Ubicación: Mexico
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: foreach y arreglo no toma el primer registro

si, tienes razon gracias, una preguntita mas que ahorita mi cerebro esta super ciclado si me puedes dar alguna idea,

mis arreglos: arreglo1, arreglo2, contienen datos de una consulta de una base de datos en mysql.
que es esta

Código PHP:
while ($row=mysql_fetch_row($result))
{
         
$arreglo1[] =$row[$i];
              

while (
$row=mysql_fetch_row($result1))
{
             
$arreglo2[]= $row[$i2];
             
$nombrealumno[] =$row[$i3]; 
}


despues uso el foreach para compararlos y luego mostrarlo en un combobox.


tu como harias para asignar los indices ha este tipo de arreglos que toma valores desde una consulta? que ya me quede un poco sin ideas.

Gracias
  #6 (permalink)  
Antiguo 29/01/2014, 15:39
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: foreach y arreglo no toma el primer registro

Cita:
Iniciado por Tigerlily Ver Mensaje
si, tienes razon gracias, una preguntita mas que ahorita mi cerebro esta super ciclado si me puedes dar alguna idea,

mis arreglos: arreglo1, arreglo2, contienen datos de una consulta de una base de datos en mysql.
que es esta

Código PHP:
while ($row=mysql_fetch_row($result))
{
         
$arreglo1[] =$row[$i];
              

while (
$row=mysql_fetch_row($result1))
{
             
$arreglo2[]= $row[$i2];
             
$nombrealumno[] =$row[$i3]; 
}


despues uso el foreach para compararlos y luego mostrarlo en un combobox.


tu como harias para asignar los indices ha este tipo de arreglos que toma valores desde una consulta? que ya me quede un poco sin ideas.

Gracias
tenes un ejemplo de los datos que te trae las consulta y cual es el campo de comparacion.

El hecho que uses en ambos while la variables $row no te da problemas?
  #7 (permalink)  
Antiguo 29/01/2014, 15:50
Avatar de Tigerlily  
Fecha de Ingreso: diciembre-2013
Ubicación: Mexico
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: foreach y arreglo no toma el primer registro

Este es mi codigo
Código PHP:
  if (isset ($_POST ['aceptar'])) {    
  $mats = $_POST["materia"];
        $link = mysql_connect("localhost","root","");
mysql_select_db("escuela_radiologia",$link); 
$sql="SELECT id_alumno FROM alumno_materia WHERE nombre_mat='".$mats."'";
$result=mysql_query($sql);
$i=0;                
$grupo1=$_POST["grupo"];
$grado1=$_POST["grado"];
$turno1=$_POST["turno"];
$sqll = "SELECT * FROM alumno  where grupo = '$grupo' and grado = '$grado' and turno = '$turno'";
$result1=mysql_query($sqll);
$i2=0;
$i3=1;
while ($row=mysql_fetch_row($result))
{
         $arreglo1[] =$row[$i];
           
while ($row=mysql_fetch_row($result1))
{
             $tarreglo2[]= $row[$i2];
             $nombrealumno[] =$row[$i3]; 
}

}
?>
      Alumnos:
          <label for="alumno"></label>
          <select name="alumno" size="1" class="edit" id="alumno"> 
          <?php    
          $iguales 
= array();   
foreach ( 
$arreglo1 as $array1

   
$igual array_search $array1$arreglo2 ); 
   if ( 
$igual 
   { 
?>
<option value="<?php  print $nombrealumno[$igual]; ?>" selected="selected"><?php  print $nombrealumno[$igual];?></option>    
    <?php

  
}}
Se supone que tengo 2 tablas: tabla alumno_materia donde tengo id_alumno, y tabla alumno, donde tambien tengo id_alumno y nombre_alumno. lo que quiero hacer es que todos los alumnos que esten en alumno_materia sean comparados con los de la otra tabla que van en el mismo grupo. Ejemplo:
tabla Alumno
id_alumno:1 id_alumno:2 id_alumno:3
nombre:ana nombre:Luis nombre:juan

tabla alumno_materia
id_alumno:1
id_alumno:3

entonces cuando este compara, me lanza a ANA Y JUAN. pero como ana esta en el indice 0, no me lo manda y solo a Juan, porque no les doy un indice al arreglo pero estoy un poco perdida en como hacerlo junto con la consulta
  #8 (permalink)  
Antiguo 29/01/2014, 16:03
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: foreach y arreglo no toma el primer registro

Me parece que es mejor que traigas los datos desde la BD

Código PHP:

$sql 
"SELECT * FROM alumno  AS AL 
INNER JOIN alumno_materia AS AM ON AL.id_alumno=AM.id_alumno 
WHERE grupo = '$grupo' and grado = '$grado' and turno = '$turno'"


# otra opcion

$sqll "SELECT * FROM alumno  where grupo = '$grupo' and grado = '$grado' and turno = '$turno' AND id_alumno IN( SELECT id_alumno FROM alumno_materia WHERE nombre_mat='".$mats."' )"
  #9 (permalink)  
Antiguo 29/01/2014, 16:10
Avatar de Tigerlily  
Fecha de Ingreso: diciembre-2013
Ubicación: Mexico
Mensajes: 7
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: foreach y arreglo no toma el primer registro

Muchisimas gracias!!!! me sirvio al 100% haha eres lo mejor.

Que tengas buen dia :D

Etiquetas: Ninguno
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:08.