Foros del Web » Programando para Internet » PHP »

en consulta solo me busca el primarykey

Estas en el tema de en consulta solo me busca el primarykey en el foro de PHP en Foros del Web. hola Implementé una consulta a una base de datos en php, y solo puedo consultar registros que sean primary keys (campos claves) y necesito que ...
  #1 (permalink)  
Antiguo 03/09/2003, 09:30
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
en consulta solo me busca el primarykey

hola

Implementé una consulta a una base de datos en php, y solo puedo consultar registros que sean primary keys (campos claves) y necesito que me busque cualquier registro y me imprima una lista de este registro, la parte del codigo donde hago la consulta es la siguiente:

<?php

mysql_connect("localhost","oscar","Practica1");

$result=mysql_db_query("ims","select * from consecutivos Where consecutivo = '$codigo$' ");

if ($row=mysql_fetch_array($result))
{
?>

<table border="1" align="center">
<tr>

de aqui en adelante imprimo la tabla.

Por favor demen una mano que le he echado cabeza y no he podido...Gracias
__________________
J-.-`.::
  #2 (permalink)  
Antiguo 03/09/2003, 11:05
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Código PHP:
while ($row=mysql_fetch_array($result))
    {
        echo 
"<td>".$row['campo']."</td>"
    

dentro de las llaves vas poniedo los campos configurando la tabla

un saludo
  #3 (permalink)  
Antiguo 03/09/2003, 11:16
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
gracias por responder

supongo que esa si es la solucion pero no se donde ponerlo, te voy a mandar el codigo por acá y por favor me dices donde ponerlo no mas, lo que necesito es ponerlo para que imprima varios registros del result2 que está abajo. La primera consulta está bien

<HTML>
<HEAD>
<TITLE>Leyendo una Base de Datos</TITLE>
</HEAD>
<BODY>
<h1><div align="center">Consulta de la tabla Consecutivos</div></h1>
<hr>

<?php

// Abre la Conexion con la base de datos
mysql_connect("....,"....",".....");

// Ejecutamos la sentencia SQL
// Con la instrucción mysql_db_query realizamos la consulta a la base de datos
$result=mysql_db_query("....","select * from consecutivos Where consecutivo = '$codigo$' ");


// Mostramos los registros
/* Con la instrucción mysql_fetch_array extraemos los datos de la consulta a un
array o tabla */
if ($row=mysql_fetch_array($result))
{
?>

<table border="1" align="center">
<tr>
<td><center>CLIENTE</center></td>
<td><center>NIT</center></td>
<td><center>TELEFONO</center></td>
<td><center>MAQUINA</center></td>
<td><center>MARCA</center></td>
<td><center>SERIAL</center></td>
<td><center>PROVEEDOR</center></td>
<td><center>PROCESADOR</center></td>
<td><center>MEMORIA</center></td>
<td><center>DISCO</center></td>
<td><center>CD</center></td>
<td><center>MOUSE</center></td>
<td><center>FAX</center></td>
<td><center>TARJETA RED</center></td>
<td><center>TECLADO</center></td>
<td><center>SISTEMA OP.</center></td>


</tr>
<tr>

<td><center><? echo $row["cliente"] ?></center></td>
<td><center><? echo $row["nit"] ?></center></td>
<td><center><? echo $row["telefono"] ?></center></td>
<td><center><? echo $row["maquina"] ?></center></td>
<td><center><? echo $row["marca"] ?></center></td>
<td><center><? echo $row["serial"] ?></center></td>
<td><center><? echo $row["proveedor"] ?></center></td>
<td><center><? echo $row["procesador"] ?></center></td>
<td><center><? echo $row["memoria"] ?></center></td>
<td><center><? echo $row["disco"] ?></center></td>
<td><center><? echo $row["cd"] ?></center></td>
<td><center><? echo $row["mouse"] ?></center></td>
<td><center><? echo $row["fax"] ?></center></td>
<td><center><? echo $row["tarjeta_red"] ?></center></td>
<td><center><? echo $row["teclado"] ?></center></td>
<td><center><? echo $row["sistema_op"] ?></center></td>


</tr>
</table>

<?

}
else
{
echo "No se ha encontrado ningún registro";
}

// Mostramos los registros
/* Con la instrucción mysql_fetch_array extraemos los datos de la consulta a un
array o tabla */

$result2=mysql_db_query("ims","select * from reporte Where consecutivo = '$codigo' ");

if ($row=mysql_fetch_array($result2))
{
?>

<table border="1" align="center">
<tr>
<td><center>DIA</center></td>
<td><center>MES</center></td>
<td><center>AÑO</center></td>
<td><center>MOTIVO</center></td>
<td><center>SOLUCION</center></td>
<td><center>RECOMENDACION</center></td>
<td><center>HORA LLEGADA</center></td>
<td><center>HORA SALIDA</center></td>
<td><center>DURACION SERVICIO</center></td>
<td><center>TECNICO</center></td>
<td><center>ATENDIDO POR</center></td>


</tr>
<tr>

while ($row=mysql_fetch_array($result2))...... aqui lo pongo y me saca error, donde es???
{
<td><center><? echo $row["dia"] ?></center></td>
<td><center><? echo $row["mes"] ?></center></td>
<td><center><? echo $row["año"] ?></center></td>
<td><center><? echo $row["motivo"] ?></center></td>
<td><center><? echo $row["solucion"] ?></center></td>
<td><center><? echo $row["recomendacion"] ?></center></td>
<td><center><? echo $row["hora_ll"] ?></center></td>
<td><center><? echo $row["hora_s"] ?></center></td>
<td><center><? echo $row["duracion_serv"] ?></center></td>
<td><center><? echo $row["tecnico"] ?></center></td>
<td><center><? echo $row["atendio"] ?></center></td>
}
</tr>
</table>

<?
}

else
{
echo "No se ha encontrado ningún registro de reporte";
}


?>

</BODY>
</HTML>
__________________
J-.-`.::
  #4 (permalink)  
Antiguo 03/09/2003, 11:34
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
ya lo solucioné el problema ahora es que no me imprime el primero, todos los otros si
__________________
J-.-`.::
  #5 (permalink)  
Antiguo 03/09/2003, 12:09
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Código PHP:
<?
while ($row=mysql_fetch_array($result2))...... aqui lo pongo y me saca errordonde es???
{
?>
<td><center><? echo $row["dia"?></center></td>
<td><center><? echo $row["mes"?></center></td>
<td><center><? echo $row["año"?></center></td>
<td><center><? echo $row["motivo"?></center></td>
<td><center><? echo $row["solucion"?></center></td>
<td><center><? echo $row["recomendacion"?></center></td>
<td><center><? echo $row["hora_ll"?></center></td>
<td><center><? echo $row["hora_s"?></center></td>
<td><center><? echo $row["duracion_serv"?></center></td>
<td><center><? echo $row["tecnico"?></center></td>
<td><center><? echo $row["atendio"?></center></td>
?>
}
?>
</tr>
</table>

<?
ell wile y las llaves lo tienes de encerrar en tags php


Lo mejor a mi modesta manera de ver es que cuando tengas mucho codigo php escribirlo todo entre taga php

y el html sacandolo con echos

MAS O MNOS ASI
Código PHP:
if ($row=mysql_fetch_array($result))
{

echo 
"
<table border='1' align='center'>
<tr>
<td><center>CLIENTE</center></td>
<td><center>NIT</center></td>
<td><center>TELEFONO</center></td>
<td><center>MAQUINA</center></td>
<td><center>MARCA</center></td>
<td><center>SERIAL</center></td>
<td><center>PROVEEDOR</center></td>
<td><center>PROCESADOR</center></td>
<td><center>MEMORIA</center></td>
<td><center>DISCO</center></td>
<td><center>CD</center></td>
<td><center>MOUSE</center></td>
<td><center>FAX</center></td>
<td><center>TARJETA RED</center></td>
<td><center>TECLADO</center></td>
<td><center>SISTEMA OP.</center></td>


</tr>
<tr>

<td><center>"
.$row['cliente']."</center></td>
<td><center>"
$row['nit'"</center></td>
<td><center>"
.$row['telefono']."</center></td>
<td><center>"
.echo $row['maquina']."</center></td>
<td><center>"
.echo $row['marca']."</center></td>
<td><center>"
.echo $row['serial']."</center></td>
<td><center>"
.echo $row['proveedor']."</center></td>
<td><center>"
.echo $row['procesador']."</center></td>
<td><center>"
.echo $row['memoria']."</center></td>
<td><center>"
.echo $row['disco']."</center></td>
<td><center>"
.echo $row['cd']."</center></td>
<td><center>"
.echo $row['mouse']."</center></td>
<td><center>"
.echo $row['fax']."</center></td>
<td><center>"
.echo $row['tarjeta_red']."</center></td>
<td><center>"
.echo $row['teclado']."</center></td>
<td><center>"
.echo $row['sistema_op']."</center></td>
</tr>
</table>"

tambien puedes sacar las variables asi:
Código PHP:
<?
while ($row=mysql_fetch_array($result2))...... aqui lo pongo y me saca errordonde es???
{
echo <<<EOT
<td><center>{$row['dia']}</center></td>
<td><center>
{$row['mes']}</center></td>
<td><center>
{$row['año']}</center></td>
<td><center>
{$row['motivo']}</center></td>
<td><center>
{$row['solucion']}</center></td>
<td><center>
{$row['recomendacion']}</center></td>
<td><center>
{$row['hora_ll']}</center></td>
<td><center>
{$row['hora_s']}</center></td>
<td><center>
{$row['duracion_serv']}</center></td>
<td><center>
{$row['tecnico']}</center></td>
<td><center>
{$row['atendio']}</center></td>
EOT;//vigilando que despues de este punto y coma no haya ningun espacio o caracter
}
echo "</tr></table>";

<?
}

else 
{
echo "No se ha encontrado ningún registro de reporte";



?>
espero que te sirva

un saludo
  #6 (permalink)  
Antiguo 03/09/2003, 12:11
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
ek tag tenia de ir asi, perdon

<td><center><? echo $row["atendio"] ?></center></td>
<?
}
?>
</tr>
</table>

<?
  #7 (permalink)  
Antiguo 03/09/2003, 13:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

La razon de que no te muestre el primero es porque lo has leido en el if que usas para ver si ha devuelto resultados:
Código PHP:
// Mostramos los registros
/* Con la instrucción mysql_fetch_array extraemos los datos de la consulta a un
array o tabla */

$result2=mysql_db_query("ims","select * from reporte Where consecutivo = '$codigo' ");

if (
$row=mysql_fetch_array($result2))

¿Lo ves? Ahi lees el primer registro. Y antes de imprimirlo, lees el segundo en el while:
Código PHP:
while ($row=mysql_fetch_array($result2)) //...... aqui lo pongo y me saca error, donde es???

con lo que has pisado el valor de $row con el segundo registro.

Para solucionarlo tienes 2 opciones:

1.- Cambiar el if y usar la funcion mysql_num_rows() para saber si ha devuelto registros:
Código PHP:
// Mostramos los registros
/* Con la instrucción mysql_fetch_array extraemos los datos de la consulta a un
array o tabla */

$result2=mysql_db_query("ims","select * from reporte Where consecutivo = '$codigo' ");

if (
0<=mysql_num_rows($result2))

2.- O cambias el while por un do...while. El do...while el semejante al while, se diferencian en que el do...while evalua la condicion al final de la iteracion:
Código PHP:
do {

// aqui tus echos o como lo hagas

} while ($row=mysql_fetch_array($result2)); 
Elige una de las 2 soluciones, con la que te quede mas claro.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 03/09/2003, 14:46
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
Gracias por tu ayuda he solucionado todos los incoveniente, solo me pasa una cosita mas..... cuando me consulta ya me consulta todos, pero me repite los datos de informacion cada vez que muestra una consulta, algo asi:

cliente
12
cliente
13
cliente
14

mi intension es la siguiente

cliente
12
13
14

yo se que esto pasa por el while donde esta ubicado que repite todo, pero trato de ponerlo en la mitad como me dijiste pero se alborota tod.......un saludo......gracias

el codigo donde esto pasa es el siguiente;
:

$result2=mysql_db_query("ims","select * from reporte Where consecutivo = '$codigo' ");

if (0<=mysql_num_rows($result2))
{
while ($row=mysql_fetch_array($result2))
{

?>
<h1><div align="center">Reportes efectuados a el anterior Consecutivo</div></h1>
<table border="1" align="center">
<tr>
<td><center>DIA</center></td> todo esto es lo que repite....
<td><center>MES</center></td>
<td><center>AÑO</center></td>
<td><center>MOTIVO</center></td>
<td><center>SOLUCION</center></td>
<td><center>RECOMENDACION</center></td>
<td><center>HORA LLEGADA</center></td>
<td><center>HORA SALIDA</center></td>
<td><center>DURACION SERVICIO</center></td>
<td><center>TECNICO</center></td>
<td><center>ATENDIDO POR</center></td>


</tr>

<tr>

<td><center><? echo $row["dia"] ?></center></td>
<td><center><? echo $row["mes"] ?></center></td>
<td><center><? echo $row["año"] ?></center></td>
<td><center><? echo $row["motivo"] ?></center></td>
<td><center><? echo $row["solucion"] ?></center></td>
<td><center><? echo $row["recomendacion"] ?></center></td>
<td><center><? echo $row["hora_ll"] ?></center></td>
<td><center><? echo $row["hora_s"] ?></center></td>
<td><center><? echo $row["duracion_serv"] ?></center></td>
<td><center><? echo $row["tecnico"] ?></center></td>
<td><center><? echo $row["atendio"] ?></center></td>



</tr>
</table>

<?
}
}
else
{
echo "No se ha encontrado ningún registro de reporte";
}
?>

</BODY>
</HTML>
__________________
J-.-`.::
  #9 (permalink)  
Antiguo 03/09/2003, 15:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Tienes que sacar fuera del while el comienzo y el final de la tabla, y tambien la primera fila. Quedaria algo asi:
Código PHP:
<?php
$result2
=mysql_db_query("ims","select * from reporte Where consecutivo = '$codigo' ");

if (
0<=mysql_num_rows($result2))
{
?>
<h1><div align="center">Reportes efectuados a el anterior Consecutivo</div></h1>
<table border="1" align="center">
<tr>
<td><center>DIA</center></td> todo esto es lo que repite....
<td><center>MES</center></td>
<td><center>AÑO</center></td>
<td><center>MOTIVO</center></td>
<td><center>SOLUCION</center></td>
<td><center>RECOMENDACION</center></td>
<td><center>HORA LLEGADA</center></td>
<td><center>HORA SALIDA</center></td>
<td><center>DURACION SERVICIO</center></td>
<td><center>TECNICO</center></td>
<td><center>ATENDIDO POR</center></td>


</tr>
<?php
while ($row=mysql_fetch_array($result2))
{

?>

<tr>

<td><center><? echo $row["dia"?></center></td>
<td><center><? echo $row["mes"?></center></td>
<td><center><? echo $row["año"?></center></td>
<td><center><? echo $row["motivo"?></center></td>
<td><center><? echo $row["solucion"?></center></td>
<td><center><? echo $row["recomendacion"?></center></td>
<td><center><? echo $row["hora_ll"?></center></td>
<td><center><? echo $row["hora_s"?></center></td>
<td><center><? echo $row["duracion_serv"?></center></td>
<td><center><? echo $row["tecnico"?></center></td>
<td><center><? echo $row["atendio"?></center></td>



</tr>
<?php
// del while
?>
</table>

<?
}// del if
else
{
echo 
"No se ha encontrado ningún registro de reporte";
}
?>

</BODY>
</HTML>
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 03/09/2003 a las 15:15
  #10 (permalink)  
Antiguo 03/09/2003, 16:06
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
cordial saludo

no se que pasa que de un momento a otro dejo de insertar en la base de datos...... estoy desesperado

que podria ser.....no he cambiado nada de codigo y las consultas me las hace bien, pero no me inserta datos en la base de datos
__________________
J-.-`.::
  #11 (permalink)  
Antiguo 04/09/2003, 06:50
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
ya solucioné el problema, es que estoy un poco estresado, gracias
__________________
J-.-`.::
  #12 (permalink)  
Antiguo 04/09/2003, 08:31
 
Fecha de Ingreso: septiembre-2003
Ubicación: colombia
Mensajes: 374
Antigüedad: 20 años, 7 meses
Puntos: 0
hola de nuevo yo!!!!!

Hasta el momento he solucionado todos los problemas gracias a tu ayuda, solo me queda una aprte del programa por hacer, cuando abro el formulario de ingreso de datos necesito necesito averiguar primero si el campo consecutivo que voy a colocar ya existe, si este existe que me llene los espacios del formulario.

el codigo de dicho formulario es el siguiente:

<html>
<head>
<title>Reporte Tecnico</title>
</head>
<body>


<center><H3>IMS Consultoria de Sistemas</H3></center>
<center><H3>INGRESO DE CONSECUTIVO</H3></center>


La primera parte del reporte utilicela solo para guardar o actualizar el consecutivo,
si este ya existe, pase a la parte de abajo y llene el reporte tecnico para su posterior
envio, gracias.
<FORM ACTION="insertar.phtml">
<TABLE>
<TR>
<TD>Consecutivo:</TD>
<TD><INPUT TYPE="text" NAME="consecutivo" SIZE="10" MAXLENGTH="10"></TD>
<TD>Cliente:</TD>
<TD><INPUT TYPE="text" NAME="cliente" SIZE="20" MAXLENGTH="30"></TD>
<TD>Nit:</TD>
<TD><INPUT TYPE="text" NAME="nit" SIZE="10" MAXLENGTH="15"></TD>
<TD>Telefono:</TD>
<TD><INPUT TYPE="text" NAME="telefono" SIZE="10" MAXLENGTH="10"></TD>
</TR>
<TR>
<TD>Maquina:</TD>
<TD><INPUT TYPE="text" NAME="maquina" SIZE="10" MAXLENGTH="10"></TD>
<TD>Marca:</TD>
<TD><INPUT TYPE="text" NAME="marca" SIZE="10" MAXLENGTH="10"></TD>
<TD>Serial:</TD>
<TD><INPUT TYPE="text" NAME="serial" SIZE="10" MAXLENGTH="15"></TD>
<TD>Proveedor:</TD>
<TD><INPUT TYPE="text" NAME="proveedor" SIZE="10" MAXLENGTH="10"></TD>
</TR>
<TR>
<TD>Procesador:</TD>
<TD><INPUT TYPE="text" NAME="procesador" SIZE="10" MAXLENGTH="10"></TD>
<TD>Memoria:</TD>
<TD><INPUT TYPE="text" NAME="memoria" SIZE="10" MAXLENGTH="10"></TD>
<TD>Disco:</TD>
<TD><INPUT TYPE="text" NAME="disco" SIZE="10" MAXLENGTH="10"></TD>
<TD>CD:</TD>
<TD><INPUT TYPE="text" NAME="cd" SIZE="10" MAXLENGTH="10"></TD>
</TR>
<TR>
<TD>Mouse:</TD>
<TD><INPUT TYPE="text" NAME="mouse" SIZE="10" MAXLENGTH="10"></TD>
<TD>Fax:</TD>
<TD><INPUT TYPE="text" NAME="fax" SIZE="10" MAXLENGTH="10"></TD>
<TD>T.Red:</TD>
<TD><INPUT TYPE="text" NAME="tarjeta_red" SIZE="10" MAXLENGTH="10"></TD>
<TD>Teclado:</TD>
<TD><INPUT TYPE="text" NAME="teclado" SIZE="10" MAXLENGTH="10"></TD>
</TR>
<TR>
<TD>Sis.Op.:</TD>
<TD><INPUT TYPE="text" NAME="sistema_op" SIZE="10" MAXLENGTH="10"></TD>
</TR>
</TABLE>

<INPUT TYPE="submit" NAME="accion" VALUE="Grabar Consecutivo">
<input name="borrar" type="reset" id="borrar" value="Borrar Datos Consecutivo">
</FORM>

como hago para darle el dato en el campo consecutivo, pinchar en un boton y que este averigue y llene el resto de campos...... en lo que me puedas colaborar gracias.....de verdad gracias
__________________
J-.-`.::
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 00:24.