Foros del Web » Programando para Internet » PHP »

Otra duda con un while!!

Estas en el tema de Otra duda con un while!! en el foro de PHP en Foros del Web. buenos dias!! mi duda es la sguiente: si tengo sentencia while!!! y dentro de esta sentencia tengo algunas condiciones vease el siguiente codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 07/05/2010, 09:18
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Otra duda con un while!!

buenos dias!!

mi duda es la sguiente:

si tengo sentencia while!!! y dentro de esta sentencia tengo algunas condiciones
vease el siguiente codigo

Código PHP:
Ver original
  1. while($row = sqlsrv_fetch_array($cons))
  2.         {
  3.        if ($row[0] == 2010){
  4.                // MI DUDA
  5.             if ($row[1] == 1)
  6.             {
  7.                 // MI DUDA
  8.             }else
  9.                     {
  10.                 if ($row[1] == 2)
  11.                     {
  12.                         // Mi duda
  13.                     }else
  14.                     {
  15.                     if ($row[1] == 3)
  16.                         {
  17.                         // duda
  18.                            
  19.                         }  
  20.                     }
  21.             }
  22.         }

mi duda es: como podria hacer para ir almacenando las variables mientras se cumpla la funcion??

Pddt. eh intentado una simple sentencia como $var= $row[3];
pero me trae unicamente el ultimo valor de mi tabla

gracias a todos los que se dignen a responder
  #2 (permalink)  
Antiguo 07/05/2010, 09:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Otra duda con un while!!

Porque por cada vez que recorres con el while la variable se sobre-escribe con el último valor dado. En tu caso necesitas usar la variable $var como array.
Código PHP:
Ver original
  1. $var = array();
  2. $var[] = $row[3];
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/05/2010, 09:22
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Otra duda con un while!!

mi pana pruebo y aviso!! gracias
  #4 (permalink)  
Antiguo 07/05/2010, 09:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Otra duda con un while!!

Por si acaso, si vas a ingresar el valor en un array debes hacer en el while de esta forma
Código PHP:
Ver original
  1. $var = array();
  2. while(.......){
  3.     $var[] = $row[3];
  4. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 07/05/2010, 09:38
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Otra duda con un while!!

Cita:
Iniciado por abimaelrc Ver Mensaje
Por si acaso, si vas a ingresar el valor en un array debes hacer en el while de esta forma
Código PHP:
Ver original
  1. $var = array();
  2. while(.......){
  3.     $var[] = $row[3];
  4. }
jejeje gracias!!! despues de ensallo y error fue que me di cuenta!! y pos si funciona!

despues fue que lei tu coment.

mi pana ahora que sabes que funciona se presenta un conflicto que ya eh posteado antes en el foro!! y resulta que:

mi fetch_array me recoge los valores de la linea siguiente!!
como iria mi "while" para que lo recoja la desde la primera fila???

te dejo el link para que veas las preguntas que me isieron y mis respuesta y asi no caer en "redundancia"

http://www.forosdelweb.com/f18/duda-...0/#post3387458

te espero mi pana!! Gracias.
  #6 (permalink)  
Antiguo 07/05/2010, 09:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Otra duda con un while!!

Ese sucede por lo regular cuando ya anteriormente haz declarado que lea al menos una linea y después lo lees en el bucle. Ejemplo usando mysql
Código PHP:
Ver original
  1. $resultado = mysql_query('aquí va tu consulta') or die(mysql_error());
  2. $row = mysql_fetch_array($resultado);
  3. /*
  4. El puntero avanzo una línea y por eso en el while va a
  5. continuar desde donde está el puntero.  Esto a veces lo
  6. hacemos así porque queremos hacer una serie de verificaciones
  7. antes de recorrer la base de datos.
  8. */
  9. while($row = mysql_fetch_array($resultado)){
  10.   //código
  11. }
En mysql existe mysql_data_seek.
Código PHP:
Ver original
  1. $resultado = mysql_query('aquí va tu consulta') or die(mysql_error());
  2. $row = mysql_fetch_array($resultado);
  3. mysql_data_seek($resultado,0);
  4. while($row = mysql_fetch_array($resultado)){
  5.   //código
  6. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 07/05/2010, 09:46
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Otra duda con un while!!

eso lo puedes arreglar con
mysql_data_seek
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 07/05/2010, 09:57
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Otra duda con un while!!

Cita:
Iniciado por Hidek1 Ver Mensaje
eso lo puedes arreglar con
mysql_data_seek
Podría, si estuviera usando mysql (Reading is tech )
  #9 (permalink)  
Antiguo 07/05/2010, 09:59
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Otra duda con un while!!

Cita:
Iniciado por abimaelrc Ver Mensaje
Ese sucede por lo regular cuando ya anteriormente haz declarado que lea al menos una linea y después lo lees en el bucle. Ejemplo usando mysql
Código PHP:
Ver original
  1. $resultado = mysql_query('aquí va tu consulta') or die(mysql_error());
  2. $row = mysql_fetch_array($resultado);
  3. /*
  4. El puntero avanzo una línea y por eso en el while va a
  5. continuar desde donde está el puntero.  Esto a veces lo
  6. hacemos así porque queremos hacer una serie de verificaciones
  7. antes de recorrer la base de datos.
  8. */
  9. while($row = mysql_fetch_array($resultado)){
  10.   //código
  11. }
Si, eso suele pasar, pero su codigo es perfecto sin errores, asi que no es su caso :/
  #10 (permalink)  
Antiguo 07/05/2010, 10:01
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Otra duda con un while!!

Cita:
Iniciado por darkasecas Ver Mensaje
Podría, si estuviera usando mysql (Reading is tech )
no veo donde diga que no usa mysql
de todas formas exiten para otras db

mssql
http://cl.php.net/mssql_data_seek

postgres
http://cl.php.net/manual/en/function.pg-result-seek.php

fontbase
http://cl.php.net/manual/en/function...-data-seek.php

etc
__________________
More about me...
~ @rhyudek1
~ Github
  #11 (permalink)  
Antiguo 07/05/2010, 10:09
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Otra duda con un while!!

Cita:
Iniciado por Hidek1 Ver Mensaje
no veo donde diga que no usa mysql
Cita:
Iniciado por dohko7 Ver Mensaje
buenos dias!!

mi duda es la sguiente:

si tengo sentencia while!!! y dentro de esta sentencia tengo algunas condiciones
vease el siguiente codigo

Cita:
while($row = sqlsrv_fetch_array($cons))
{
if ($row[0] == 2010){
// MI DUDA
if ($row[1] == 1)
{
// MI DUDA
}else
{
if ($row[1] == 2)
{
// Mi duda
}else
{
if ($row[1] == 3)
{
// duda

}
}
}
}
Again, reading is tech

Y hasta donde se, el driver sqlsrv no incluye funcion _data_seek() =(
  #12 (permalink)  
Antiguo 07/05/2010, 10:11
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Otra duda con un while!!

Cita:
Iniciado por darkasecas Ver Mensaje
Si, eso suele pasar, pero su codigo es perfecto sin errores, asi que no es su caso :/
jajaja cuando dije sin errores es porque me dijeron que colocara mas codigo y no veia la necesidad de.

cuando dije sin errores fue porque la pagina corre bien!! y no me da errores de codigo ni nada!!

si no tuviese dudas no preguntaria!!! gracias por dejar claro tu aporte

en cuanto a abimaelrc es justa la respuesta que estaba buscando!! eres de full ayuda mi pana!!

ahora me toca lo de darkasecas (Reading is tech )

y para hidek1 mi pana estoy utilizando sql server con librerias sqlsrv en vez de mysql eh alli el problema!! al parece mysql es mas completa

pddt. el sqlserver es de la empresa asi que no podria cambiar de gestor!!

gracias a todos vere si puedo averiguar algo del data_seek
  #13 (permalink)  
Antiguo 07/05/2010, 10:13
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Otra duda con un while!!

:3 con razon no pillaba en php.net :3 suerte con eso
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 07/05/2010, 10:14
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Otra duda con un while!!

Bueno, los errores no son solo de sintaxis, tambien hay errores de logica (como el que menciona abimaelrc), para mi son los peores porque al ser sintacticametne correctos, el interprete (o compilador si hablamos de lenguajes compilados) no detecta nada y termina la ejecucion correctamente, pero no se producen los resultados esperados.
  #15 (permalink)  
Antiguo 07/05/2010, 10:20
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Otra duda con un while!!

Cita:
Iniciado por darkasecas Ver Mensaje
Bueno, los errores no son solo de sintaxis, tambien hay errores de logica (como el que menciona abimaelrc), para mi son los peores porque al ser sintacticametne correctos, el interprete (o compilador si hablamos de lenguajes compilados) no detecta nada y termina la ejecucion correctamente, pero no se producen los resultados esperados.
por eso es que pregunto en este foro (que es el unico al que estoy anotado )

y pues sip, eso me pasa por no conocer todas las sentencias de sqlserver.
pero para eso se creo el foro no?

y como tu lo dijiste: el error es de logica no de codigo xD
  #16 (permalink)  
Antiguo 07/05/2010, 10:24
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Otra duda con un while!!

Cita:
Iniciado por darkasecas Ver Mensaje
Again, reading is tech

Y hasta donde se, el driver sqlsrv no incluye funcion _data_seek() =(

tiene razon: reading is tech

no posee la funcion ni siquiera la libreria para agregarla al extention.

como podria realizar la funcion del data_seek para volver al inicio de la tabla para recorrerla con un while desde el principio??

Pddt. me disculpo por el exeso de emoticons
  #17 (permalink)  
Antiguo 07/05/2010, 10:29
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Otra duda con un while!!

aca hay informacion de tu libreria
http://msdn.microsoft.com/en-US/libr...SQL.90%29.aspx
por lo que vi .. nada de data seek :(

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #18 (permalink)  
Antiguo 07/05/2010, 10:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Otra duda con un while!!

Te hablaré en terminos de mysql y verifica si la tienes en la librería. En vez de usar mysql_fetch_array en una sola línea antes del bucle, puedes usar mysql_num_rows para verificar si existe datos en el query y luego lo recorres en el bucle. Otra forma es crear dos mysql_query y uno lo usas para verificar lo que quieras y otro para el bucle.

Edito:
Con sqlsrv_num_rows puedes ver si existe datos, sin la necesidad de usar un sqlsrv_fetch_array y luego recorrerlo en el bucle.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #19 (permalink)  
Antiguo 07/05/2010, 14:43
(Desactivado)
 
Fecha de Ingreso: febrero-2010
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Otra duda con un while!!

Cita:
Iniciado por abimaelrc Ver Mensaje
Edito:
Con sqlsrv_num_rows puedes ver si existe datos, sin la necesidad de usar un sqlsrv_fetch_array y luego recorrerlo en el bucle.
tendria que hacer otro query?? esa seria una opcion!! pero obvio que si se puede evitarlo mejor para evitar que "piense" tanto al momento de consultar m e equivoco??

como jalaria los datos con el sqlsrv_num_rows?? entiendo lo que dices pero no hallo como aplicarlo

lo unico que se es que no se mucho de nada (ojo es conmigo)
  #20 (permalink)  
Antiguo 07/05/2010, 14:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Otra duda con un while!!

Es que al no saber el por qué estás llamando sqlsrv_fetch_array y luego en el bucle solo puedo especular. La forma como te digo es que en vez de usar sqlsrv_fetch_array usa sqlsrv_num_rows y cuando verifiques solo tienes que hacer algo como
Código PHP:
Ver original
  1. if(sqlsrv_num_rows($resultado) > 0){
  2.   //código
  3. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

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 18:42.