Ir para conteúdo
Fórum Script Brasil
  • 0

Loop Com Incremento Dando Pau


kbalera

Pergunta

que cada foto é cadastrado no bd

ai eu fiz um sistema de slide show

so que tem vez q eu tenho q apagar alguma foto

ai no slide aparece a foto

porque as fotos são sequenciais

tipo

0001, 0002, 0003 e etc

e tipo ai se eu apagar a foto

0003

quando tiver na foto 0002 aproxima vai ser 0004

ai eu fiz esse script aki

-------------------------------------------->

while(1) {

$select_ft= "select*from foto where festa = $festa and foto = $foto";

$acao_ft = mysql_db_query("$database","$select_ft",$conect);

$num_ft = mysql_num_rows($acao_ft);

if($num_ft==0){

$x=0;

$foto = $foto+1;

continue;

}else{

$x=1;

break;

}

}

<-------------------------------------------------

que seleciona no BD a foto e se o $num_ft==0 for igual a 0 ele repete o select

so q dando um incremento na $foto

e se for igual a 1 ele para

so que esse loop tava ocupando 28% do processamento do servidor e se mts pessoas vice as fotos

ele derrubava o servidor

intao eu to kerendo saber uma forma melhor de fazer isso

pois eu to kerendo fazer que tipo

se não tiver registrado no banco de dados ou não tiver a foto no servidor

a $foto recebe um incremento

intao tipo se eu to na foto 0003 e a proxima foto for 0010

ai ela pula da 0003 pra a 0010

ai galera quem puder me ajudar

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

cara, uma ideia, seria tu fazer a consulta apenas uma vez no banco:

 
$select_ft= "SELECT * 
FROM foto 
WHERE festa = $festa";

e depois testar dentro dos registros se a foto existe ou não, não ia melhorar muito, mas pelo menos não ia forçar tanto o banco de dados. Vou ver se penso numa alternativa melhor

Link para o comentário
Compartilhar em outros sites

  • 0
você puxa a foto do BD ou guarda apenas o path da foto no BD?

Ow eu so gravo a festa q foto é e a foto

tipo

ID | FESTA | FOTO |

1 | 00001 | 0001 |

2 | 00001 | 0002 |

3 | 00001 | 0003 |

4 | 00001 | 0004 |

5 | 00001 | 0005 |

6 | 00002 | 0001 |

7 | 00002 | 0002 |

8 | 00002 | 0003 |

intao nessa tabela ai eu tenho 2 festas e algumas fotos

intao quando o cara escolha a festa eu mando o codigo da festa

ai vai mostrar as fotos

ai eu faço um select*from foto where festa="00001";

ID | FESTA | FOTO |

1 | 00001 | 0001 |

2 | 00001 | 0002 |

3 | 00001 | 0003 |

4 | 00001 | 0004 |

5 | 00001 | 0005 |

ai selecionou as fotos

eu vou ter links para cada foto

tipo

FOTO1 FOTO2 FOTO3 FOTO4 FOTO5

ai quando clica você vai ver somente a foto clicada

ai beleza

so que eu fiz uma vizualização em slides para passar automatico

ai se eu apagar alguma foto no BD

ID | FESTA | FOTO |

1 | 00001 | 0001 |

3 | 00001 | 0003 |

4 | 00001 | 0004 |

5 | 00001 | 0005 |

na hora q fizer aquele select la em cima funciona, mas na hora q vou fazer o slide não funciona não

porque eu fiz o seguinte

depois que eu clico para passar em slide eu faco um select assim

select*from foto where festa="00001" and foto="$foto"

essa variavel foto ela é um incremente tipo

a atual é igual a

$foto=0001

intao a proximaeh 0002

intao se ele fez um select com a 0001 ele vai fazer um select com a 0002

so q se eu apaguei a 0002 no bd vai aparecer aimagem do mesmo jeito

intao eu fiz um laco de condicoes

eu faço o select

select*from foto where festa="00001" and foto="$foto"

ai

depois faço um mysql_num_rows para vers qnts registro pegou

se for igual a zero eu faco a variavel foto ser a proxima

so q eu tenho q fazer isso dentro de um laco tipo

enquanto a variavel q tenho mysql_num_rows for igual a zero vai incrementando ai se não for ai ele para e exibe a foto

ai eu fiz o eskema a baixo

while(1) {

$select_ft= "select*from foto where festa ="00001" and foto = $foto";

$acao_ft = mysql_db_query("$database","$select_ft",$conect);

$num_ft = mysql_num_rows($acao_ft);

if($num_ft==0){

$x=0;

$foto = $foto+1;

continue;

}else{

$x=1;

break;

}

}

funcionou so que ai eu fui ver o servidor da ficando carregado d+ por isso e tem hora q ate cai dependendo do nº de acessos, ai eu fui ver o laco não ta parando tipo eu fui ver la tinha uma linha executada a seguinte

select*from foto where festa="00001" and foto="401548726";

intao quer dizer que o laco não paro ai eu tava precisando o seguinte

alguma coisa tipo que fazia um select no bd apenas das existente

ow uma condicoes para o while para que eu poca fazer isso sem carregar

qualquer duvida eu tento explicar mais detalhadamente.

abracos

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...