Foros del Web » Programando para Internet » PHP »

Error en consulta

Estas en el tema de Error en consulta en el foro de PHP en Foros del Web. Holas, Les saludo y recurro para su ayuda, les cuento estoy creando un roster para un clan de juegos tacticos militares, entonces cada soldado (player), ...
  #1 (permalink)  
Antiguo 12/04/2007, 23:39
Avatar de Jona_than  
Fecha de Ingreso: noviembre-2005
Ubicación: Chile
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 0
Exclamación Error en consulta

Holas,

Les saludo y recurro para su ayuda, les cuento estoy creando un roster para un clan de juegos tacticos militares, entonces cada soldado (player), tiene asignada un rango y insignia.

Hasta ahora todo esto lo hago manualmente

http://www.clancl.org/divisiones/gr/roster/

Entonces ahora, ando automatizando el sistema en php y guardando la información via mysql, el tema es que genere el sistema atraves de consultas, y todo iba bien, los players se asignaban segun su rango, haciendo lo siguiente en la tabla soldados, hay un campo llamado rango y esta llama a la tabla rangos, y cuando coinciden rango (tabla soldados) y id (tabla rangos), la clasifica y todo iba re bien, el problema se genero que cuando dos soldados (players), tienen el mismo rango solamente me muestra el primer soldado agregado, entonces hasta ahi qudaron mis capacidades y quede pillo...Les dejare la parte del codigo, haber si me ayudan.

Código PHP:
<?php
;
$sql mysql_query("SELECT * FROM `rangos` ORDER BY `id` ASC");
while (
$campo mysql_fetch_array($sql)) { 
$sql2 mysql_query("SELECT * FROM `soldados` WHERE `rango`=$campo[id] LIMIT 10");
$campo2 mysql_fetch_array($sql2);
?>

<table>
<tr>
<td class="td_rango">
<?=$campo["nombre"];?><br />
</td>
<td class="td_rango">
<img src="http://www.clancl.org/<?=$campo["imagen"];?>" alt="Rango <?=$campo["nombre"];?>"><br />
</td>
<td class="td_soldado"><?=$campo2["nombre"];?><br /></td>
<td class="td_responsabilidad"></td>

</tr>
</table>
<?php
}
mysql_close($link); //cierra la conexion
?>
http://www.clancl.org/divisiones/gr/roster/roster.php Ahi estoy haciendo el tema automatizado.

Saludos y desde ya gracias.

pda: disculpen la precariedad de mi programacion :$
__________________
- Fasecreativa
- Twitter @jonyram

Última edición por Jona_than; 13/04/2007 a las 16:06
  #2 (permalink)  
Antiguo 13/04/2007, 00:03
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Error en consulta

mmmmmm deberia ir pero no se como ocupas tu las comillas esos parecen acentos :/ y tu $campo[id] deberia ir '$campo[id]' y las tablas sin las `` que en realidad que yo sepa no se usan solo se usan comillas dobles y simples esta ' y esta " mmmmmmm y para tus tablas no necesitas niun tipo de comillas aunque no se a que punto influye... :/ mmmmm solo eso le veo de raro por ahora

por cierto no seria mejor que <?=$campo["nombre"];?> usaras <?php echo "$campo[nombre]";?>

aunque en realidad no tiene na que ver :P es solo cosa de gusto

aps quita el mysql_close puede que te haga solo un bucle luego cierre la consulta prueba eso :)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 13/04/2007, 10:43
Avatar de Jona_than  
Fecha de Ingreso: noviembre-2005
Ubicación: Chile
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Error en consulta

Segui tus consejos, pero al parecer no resulta el tema. Incluso saque el mysql_close, pensando que podria estar generando como tu dices un bucle, pero no permitia ejecutar el resto, pero no sucede nada.

¿Alguien que me pueda ayudar, y sepa mas o menos que sucede?

Saludos.
  #4 (permalink)  
Antiguo 13/04/2007, 12:10
Avatar de Jona_than  
Fecha de Ingreso: noviembre-2005
Ubicación: Chile
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Error en consulta

Código PHP:
$sql mysql_query("SELECT * FROM rangos ORDER BY id DESC") or die (mysql_error());
$campo mysql_fetch_array($sql);
$ide $campo["id"];
$sql2 mysql_query("SELECT * FROM soldados WHERE rango='$ide'") or die (mysql_error());
while(
$campo2 mysql_fetch_array($sql2)){ 
Si hago la consulta al revez, pasa lo siguiente solamente sale un rango y segun el ORDER que le doy a variable $sql, se ordena, pero ahora solamente muestra un "rango". En la consulta anteriormente mostraba todas los rangos, pero mostraba solamente un "soldado" por rango, y a veces ciertos soldados comparten el mismo rango.

¿alguien puede decirme como arreglar esto?

Saludos.
  #5 (permalink)  
Antiguo 13/04/2007, 15:41
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Error en consulta

del código original prueba utilizando esto
Código PHP:
$sql2 mysql_query("SELECT * FROM soldados WHERE rango=".$campo['id']." LIMIT 10"); 
o bien, puedes checar esto
Código PHP:
<?php
//con esto ya puedes reutilizar la funcion
function Conectarse($host,$user,$pass,$base)
{
    
$link=mysql_connect($host,$user,$pass) or die("Error conectando a la base de datos.");
    
mysql_select_db($base,$link) or die("Error seleccionando la base de datos.");
    return 
$link;
}

$link=Conectarse("localhost","webpage","jona159than357","web");
//puedes o no utilizar el apostrofe(`) mysql lo reconoce
//si embargo yo nunca los uso y no he tenido problemas
//no se como esta tu tabla y no se que version de mysql usas asi que
//usare un poco de imaginacion, jeje
//suponiendo que el tipo de rango lo guardas en un campo llamado tipoRango
//con esto traeremos todos los rangos que existen sin repetir
//se quito el * para evitar datos innecesarios
$sql mysql_query("SELECT nombre, imagen FROM rangos GROUP BY tipoRango");
//mientras se recorre el arreglo traido de la consulta
//buscamos a los soldados que le pertenecen a cada division.
while ($campo mysql_fetch_array($sql))
    { 
        
//se quito el LIMIT 10 para evitar que solo muestre diez registros
        //esto con la finalidad de que en el caso de que hayan mas 
        
$sql2 mysql_query("SELECT nombre FROM soldados WHERE tipoRango=".$campo['tipoRango']);
?>

<table>
<tr>
<td class="td_rango">
<?=$campo["nombre"];?><br />
</td>
<td class="td_rango">
<img src="http://www.clancl.org/<?=$campo["imagen"];?>" alt="Rango <?=$campo["nombre"];?>"><br />
</td>
<td class="td_soldado"><?
//con esto mostramos todos los nombre
//que se encuentren en la segunda consulta
while($campo2 mysql_fetch_array($sql2))
    {
        echo 
$campo2["nombre"];
    }
?><br /></td>
<td class="td_responsabilidad"></td>

</tr>
</table>
<?php
}
mysql_close($link); //cierra la conexion
?>
espero que por lo menos te de una idea, saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 13/04/2007 a las 15:58
  #6 (permalink)  
Antiguo 13/04/2007, 17:11
Avatar de Jona_than  
Fecha de Ingreso: noviembre-2005
Ubicación: Chile
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Error en consulta

Resolví el problema, había un dilema con los { y } si lo cerraba antes, me pescaba algo bastante tonto, de todas maneras aprendí nuevas cosas.

Saludos.
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 02:26.