Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con varios while y for

Estas en el tema de Problema con varios while y for en el foro de PHP en Foros del Web. Hola os comento un poco, tengo tres tablas, en una almaceno los equipos, en otra almaceno los encuentros y en otra almaceno los pronosticos que ...
  #1 (permalink)  
Antiguo 13/09/2011, 17:24
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 9 meses
Puntos: 0
Problema con varios while y for

Hola os comento un poco, tengo tres tablas, en una almaceno los equipos, en otra almaceno los encuentros y en otra almaceno los pronosticos que hacen los usuarios.

Quiero mostrar la usuario el pronóstico que ha hecho él, pero tengo una duda que no se resolver.



Código PHP:
<?php

/**
 * @author Skirlappa
 * @copyright 2011
 */
 //Conectamos con la bases de datos
$connect=mysql_connect("localhost","","");
$selectDb=mysql_select_db("test",$connect);
//Hacemos una consulta con tablas relacionadas
$query=mysql_query("SELECT * FROM partidos");
//Sacamos los cruces de los partidos
//Sesion id
$session="1";//Simulo una sesion de usuario
//Sacamos los resultados para imprimirlos relacionados con el id de la session
    
$consulta=mysql_query("SELECT * FROM resultados WHERE iduser='$session'");

while(
$row2=mysql_fetch_array($consulta))
      {
//Hacemos un for para numerar y asi poder imprimir mas tardes los resultados correctamente
          
for($i=1;$i<11;$i++)
   {
//AQui estan los resultados separados, que no se meter dentro de la tabla
              
$par=str_split($row2['par'.$i]);
             echo 
"AQUI: ".$par[0]."<br>";
             
$par=str_split($row2['par'.$i]);
             echo 
"AQUI: ".$par[1]."<br>";
   }
     }
 
?><center>
  <table width="400" border="0"  cellspacing="0">
 
<?
while($row=mysql_fetch_array($query))
{
        
//Relacionamos los id de los cruces con los clubs
        
$cuenta=mysql_num_fields($query);
        for(
$i=1;$i<$cuenta;$i++)
        {
        
$query1=mysql_query("SELECT * FROM equipos WHERE id='".$row[$i]."'");
        while(
$row1=mysql_fetch_array($query1))
        {
            
//Si es par mostramo los equipos que juegan fuera
            
if($i%2==0)
            {
                
?>
               <td align="center"><label>
           </td>
            <td align="left"><?echo $par[1?></td>
          <td><img src="<?echo $row1['escudo'];?>" width="21" height="24" alt=""><?echo $row1['equipo'];?></td>
      
        <?
        
}
            else 
//Mostramos los equipos que juegan en casa
            
{
               
?>
                <tr bgcolor="#f4f6f9">
            <td align="right"><?echo $row1['equipo'];?><img src="<?echo $row1['escudo'];?>" width="21" height="24" alt=""></td>
            </td><td align="right"><?echo $par[0?></td><td>-</td>
               <?
            
}
            }
    
    }
    }
?>  
 
       </table>
          <p>
  </p> 
       </center>
El problema es que no se como meter otra vez los bucles para que las variables $par[0] y $par[1] (que serán los resultados de los encuentros $par[0] el que juega en casa y $par[1] el que juega fuera dentro de la tabla en que muestro los partidos que se van a disputar.

Disculpad mi ignorancia, estoy empezando y cuando ya tengo que hacer muchas consultas me pierdo.
  #2 (permalink)  
Antiguo 14/09/2011, 01:18
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con varios while y for

Hola skirlappa, no se entiende la pregunta. Parece bastante simple y creo que se puede resolver en una sola select o en dos selects. Postea las tablas a ver si se puede mejorar la consulta, salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 14/09/2011, 05:13
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Problema con varios while y for

Os pongo las tres bases de datos:

BASE DE DATOS DE LOS EQUIPOS
Código:
--
-- Base de datos: `test`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `equipos`
--

CREATE TABLE IF NOT EXISTS `equipos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `equipo` varchar(255) NOT NULL,
  `escudo` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;

--
-- Volcar la base de datos para la tabla `equipos`
--

INSERT INTO `equipos` (`id`, `equipo`, `escudo`) VALUES
(1, 'At. Biblao', '/curso/ejercicios post/equi/1.png'),
(2, 'At. Madrid', '/curso/ejercicios post/equi/2.png'),
(3, 'Barcelona', '../equi/3.png'),
(4, 'Betis', '../equi/4.png'),
(5, 'Español', '../equi/8.png'),
(6, 'Real Madrid', '../equi/13.png'),
(7, 'Real Sociedad', ''),
(8, 'Valencia', ''),
(9, 'Zaragoza', ''),
(10, 'Mallorca', ''),
(11, 'Villareal', ''),
(12, 'Racing', ''),
(13, 'Rayo', ''),
(14, 'Malaga', ''),
(15, 'Sevila', ''),
(16, 'Osasuna', ''),
(17, 'Getafe', ''),
(18, 'Levante', ''),
(19, 'Sporting', ''),
(20, 'Granada', '');
BASE DE DATOS DE LOS PARTIDOS (CRUCES DE EQUIPOS)

Código:
--
-- Base de datos: `test`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `partidos`
--

CREATE TABLE IF NOT EXISTS `partidos` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `a1a` varchar(2) NOT NULL,
  `a1b` varchar(2) NOT NULL,
  `a2a` varchar(2) NOT NULL,
  `a2b` varchar(2) NOT NULL,
  `a3a` varchar(2) NOT NULL,
  `a3b` varchar(2) NOT NULL,
  `a4a` varchar(2) NOT NULL,
  `a4b` varchar(2) NOT NULL,
  `a5a` varchar(2) NOT NULL,
  `a5b` varchar(2) NOT NULL,
  `a6a` varchar(2) NOT NULL,
  `a6b` varchar(2) NOT NULL,
  `a7a` varchar(2) NOT NULL,
  `a7b` varchar(2) NOT NULL,
  `a8a` varchar(2) NOT NULL,
  `a8b` varchar(2) NOT NULL,
  `a9a` varchar(2) NOT NULL,
  `a9b` varchar(2) NOT NULL,
  `a10a` varchar(2) NOT NULL,
  `a10b` varchar(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Volcar la base de datos para la tabla `partidos`
--

INSERT INTO `partidos` (`id`, `a1a`, `a1b`, `a2a`, `a2b`, `a3a`, `a3b`, `a4a`, `a4b`, `a5a`, `a5b`, `a6a`, `a6b`, `a7a`, `a7b`, `a8a`, `a8b`, `a9a`, `a9b`, `a10a`, `a10b`) VALUES
(4, '20', '19', '18', '17', '16', '15', '14', '13', '12', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1');

BASE DE DATOS DE LOS PRONOSTICOS DE LOS USUARIOS


Código:
--
-- Base de datos: `test`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `resultados`
--

CREATE TABLE IF NOT EXISTS `resultados` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `iduser` int(10) NOT NULL,
  `par1` varchar(2) NOT NULL,
  `par2` varchar(2) NOT NULL,
  `par3` varchar(2) NOT NULL,
  `par4` varchar(2) NOT NULL,
  `par5` varchar(2) NOT NULL,
  `par6` varchar(2) NOT NULL,
  `par7` varchar(2) NOT NULL,
  `par8` varchar(2) NOT NULL,
  `par9` varchar(2) NOT NULL,
  `par10` varchar(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Volcar la base de datos para la tabla `resultados`
--

INSERT INTO `resultados` (`id`, `iduser`, `par1`, `par2`, `par3`, `par4`, `par5`, `par6`, `par7`, `par8`, `par9`, `par10`) VALUES
(3, 1, '12', '22', '23', '44', '56', '66', '67', '75', '42', '22');
  #4 (permalink)  
Antiguo 14/09/2011, 06:40
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Problema con varios while y for

Para que se quede mas claro imprimo en pantalla lo que me sale:




http://s3.subirimagenes.com:81/otros...1sin-ttulo.jpg

(Puedes que tengas problemas al ver la imágen, recarga el link pulsando enter si tienes problemas, asi verás la imágen.

Lo que nose se es como enlazar los while y los for para obtener el resultado deseado.

Última edición por skirlappa; 14/09/2011 a las 06:46
  #5 (permalink)  
Antiguo 14/09/2011, 08:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: Problema con varios while y for

Hola skirlappa, no puedo ver la imagen, ni aunque recargue el link.

No tengo muy claro lo que pretendes. A ver si cuando vea la foto me aclaro.

También tengo duda de lo que almacenas en la tabla "partidos". Viendo el registro que tienes almacenado no sé a que se refiere cada campo porque tienes almacenado para ese registro los números del 20 al 1 y no sé que indica eso.

Intenta mostrar la imagen a ver si me aclaro.
  #6 (permalink)  
Antiguo 14/09/2011, 08:14
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Problema con varios while y for

Vuelvo a dejar otro enlace a la imagen desde otro servidor.

http://imageshack.us/photo/my-images...nttulorzz.jpg/

En la tabla partidos se guarda el id de los equipos para luego imprimirlos emparejados siendo a1a a1b los que se van a cruzar otro partido sería a2a a2b. Esta tabla solo tendrá una fila.
  #7 (permalink)  
Antiguo 14/09/2011, 09:21
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Problema con varios while y for

Bueno despues de toooodo un día di con la solución gracias a todos los que lo habéis intentado os pongo el código por si a alguien le sirve

Código PHP:
Ver original
  1. <?php
  2.  
  3. /**
  4.  * @author skirlappa
  5.  * @copyright 2011
  6.  * código libre- 73 líneas.
  7.  */
  8.  //Conectamos con la bases de datos
  9. $connect=mysql_connect("localhost","","");
  10. $selectDb=mysql_select_db("test",$connect);
  11. //Sacamos los cruces de los partidos
  12. //Simulando session de usuario
  13. $session="1";
  14. ?><center>
  15.   <table width="400" border="0"  cellspacing="0">
  16.  
  17. <?
  18. //Hacemos una consulta con tablas relacionadas
  19. $query=mysql_query("SELECT * FROM partidos LEFT JOIN resultados ON resultados.iduser='$session'") or die (mysql_error());
  20. while($row=mysql_fetch_array($query))
  21. {
  22.         //Dividimos los resultados en dos string para imprimirlo en pantalla
  23.         $par[1]=str_split($row['par1']);
  24.         $par[2]=str_split($row['par2']);
  25.         $par[3]=str_split($row['par3']);
  26.         $par[4]=str_split($row['par4']);
  27.         $par[5]=str_split($row['par5']);
  28.         $par[6]=str_split($row['par6']);
  29.         $par[7]=str_split($row['par7']);
  30.         $par[8]=str_split($row['par8']);
  31.         $par[9]=str_split($row['par9']);
  32.         $par[10]=str_split($row['par10']);
  33.  
  34.         //Relacionamos los id de los cruces con los clubs
  35.         for($i=1;$i<21;$i++)
  36.         {
  37.         $query1=mysql_query("SELECT * FROM equipos WHERE id='".$row[$i]."'");
  38.         while($row1=mysql_fetch_array($query1))
  39.         {
  40.             //Si es par mostramo un br si es impar mostramos -
  41.             if($i%2==0)
  42.             {
  43.                 //Creamos un contador exclusivo para el if
  44.             @$v++;
  45.                 ?>
  46.                <td align="center"><label>
  47.            </td>
  48.             <td align="left"><?echo $par[$v][1] ?></td>
  49.           <td><img src="<?echo $row1['escudo'];?>" width="21" height="24" alt=""><?echo $row1['equipo'];?></td>
  50.      
  51.         <?
  52.         }
  53.             else
  54.             {
  55.                  //Creamos un contador exclusivo para el else
  56.                 @$x++;
  57.                ?>
  58.                 <tr bgcolor="#f4f6f9">
  59.             <td align="right"><?echo $row1['equipo'];?><img src="<?echo $row1['escudo'];?>" width="21" height="24" alt=""></td>
  60.             </td><td align="right"><?echo $par[$x][0] ?></td><td>-</td>
  61.                <?
  62.             }
  63.             }
  64.    
  65.     }
  66.     }
  67. ?>  
  68.  
  69.        </table>
  70.           <p>
  71.   </p>
  72.        </center>

Etiquetas: sql, tabla, variables, usuarios
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 21:27.