Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Evitar bucle

Estas en el tema de Evitar bucle en el foro de PHP en Foros del Web. Hola, estoy haciendo un proyecto en mvc y al llamar una función se produce un bucle. Aquí os dejo los códigos de tres archivos para ...
  #1 (permalink)  
Antiguo 30/11/2015, 13:41
 
Fecha de Ingreso: marzo-2015
Mensajes: 15
Antigüedad: 9 años, 2 meses
Puntos: 0
Evitar bucle

Hola, estoy haciendo un proyecto en mvc y al llamar una función se produce un bucle. Aquí os dejo los códigos de tres archivos para que intentéis ayudarme a solucionar el error. Gracias.

controller_index.php

<?php
class index {
function inicio() {
//generar array contactos
//aqui es donde se produce el bucle
while ($row = obtenerarraycontactos()) {
echo $row[1];
}
montarlayout("index_index");

}
}

modelo_index.php

<?php
//funcion para obtener un array con todos los contactos
function obtenerarraycontactos() {
return arrayquerrysql(querrysql("SELECT * FROM cnt_contactos"));
}

modelo_principal.php

<?php
//funcion para conexion sql
function conexionsql() {
return mysql_connect(SERVIDORSQL, USUARIOSQL, PASSWORDSQL);
}
//seleccion bd sql
mysql_select_db(BASEDATOSSQL, conexionsql());
//funcion para querry sql
function querrysql($querry) {
return mysql_query($querry, conexionsql());
}
//funcion para generar array a partir de un querry
function arrayquerrysql($querry) {
return mysql_fetch_row($querry);
}
  #2 (permalink)  
Antiguo 30/11/2015, 14:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Evitar bucle

Pues el while() es un bucle.

Si lo quieres evitar ¿entonces para qué lo usas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/11/2015, 14:56
 
Fecha de Ingreso: marzo-2015
Mensajes: 15
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Evitar bucle

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues el while() es un bucle.

Si lo quieres evitar ¿entonces para qué lo usas?

Lo que quiero es un bucle que repita unos codigos por cada registro de una tabla sql, pero se crea un bucle y sale siempre el resultado del primer registro de la tabla. Gracias
  #4 (permalink)  
Antiguo 30/11/2015, 19:32
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Evitar bucle

Supongo que por bucle te refieres a que no termina tu código.

El problema es simple:

en tu función principal mandas a obtener los datos de tu tabla, pero sin ningún control

while ($row = obtenerarraycontactos()) {//no hay condición real de fin de instrucción, se ejecuta mientras haya datos
echo $row[1];
}

function obtenerarraycontactos() {
return arrayquerrysql(querrysql("SELECT * FROM cnt_contactos"));//regresas todo
}

La forma en que defines tus funciones no es muy útil para estructurar un script que maneje bases de datos, además para una simple instrucción, terminas por tener más código del necesario.




1 un solo script sin funciones, para tu caso más recomendable.
Código PHP:
Ver original
  1. $filas=mysql_query("SELECT * FROM cnt_contactos");//lees todo lo que hay en la tabla
  2. while($row=mysql_fetch_assoc($filas))//Recorres fila por fila la tabla
  3.    echo $row[1];


2 con funciones:
Código PHP:
Ver original
  1. $filas=leetabla();
  2. while($row=mysql_fetch_assoc($filas))//Recorres fila por fila la tabla devuelta por la función
  3.    echo $row[1];
  4.  
  5. function leetabla(){
  6.    return mysql_query("SELECT * FROM cnt_contactos");//devuelves toda la tabla.
  7. }

Etiquetas: bucle, mysql, select, sql
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:49.