Aplicando um loop com w h ile para os dados do email de Elmer, acessarmos os dados, um a linha de cada vez, sem duplicar nenhum código. Nós sabemos que m y s q l i _ f e t c h _ a r r a y {) é capaz de tomar um a linha da tabela e colocar os valores das respectivas colunas no array $row, mas a função, sozinha, não passa através de todos os nossos dados — ela armazena a prim eira linha e então para. Um loop w h ile pode chamar m y s q l i _ f e t c h _ a r r a y {) para atravessar todas as linhas dados do resultado, um a de cada vez, até chegar ao final. while (p
A to*diçao do loof to» víVile e o valor ^ retornado pela -funça©
»v>ys«^!i_-fettb_arrayO; «\ue t interpretado domo trv»e, se houver dados disponíveis, ou -faUe, se os dados tiverem acabado- A a d ã o do loop C executada wnê vez. a cada Geração. A aça© do loopj^onsiste de uma instrutao etbo ey*e junta os dados da linha, doUanáo uma quebra de tmba ao Vmal
primeira passada do loop, o array fro*/ armazenara a primeira linka da tabela e m a iljis t $row eioail— •list
/o°Ps.
Na .'seaunda passada do loop, o array frow armazenara a segunda linhâ da tabela em aiM ist- esta vendo o padrao?A instrução edbo dentro âo
loop while e *tra i os dados do array frow e cx.*b« o dontcwdo formatado tomo HTML. + ' 1 + v
Q
■4^ <®r "y Uma <\ueWa ÜTML- dolota tada Whs de dados em urr>a VmKa prepria pá^ftâ results™*- ' < b r$row[1first_name'] $row [' last__name1 ]
$rowt'email[]
t
A dhave usada para aícssar o elemento do array deve te r o mesmo home <\ue uma dolunâ-
0 loop wfcile
p e r p a s s a 9 s d a d o s datakela, lfnta por linta. Quandp nap iíPuVeí mais llnfcas de dadps,
ele Çlnallza a
c o n s u l t a .
Julian Oates ; julian@breakneckpizza.com Kevin Jones : jones@sirauduck.com
Amanda Sanchez : sunshine@breakneckpiz2a.cam
Bo Wallace : bo@bOttOmsup.com
Amber McCarthy : amber@breakneckpizza.com C o m a e Hurst : churst@boards-r-us.com Joyce Harper : jcyceharper@breakneckpizza.com Stephen Meyer : meyers@leapinlimos.com Martin Wilson : roartybaby@objectville.net Walt Perala : walt@mightyguraball.net
Shannon Munyon : craftsmanSbreakneekpiaza.com Joe Milano : joe_m@starbuzzcoffee.eom
Ka secunda passada do loop, as instrudoes edho e*ibem uma outra se«\uendia de te *te , mas dcsta vez. sac usados os dados da
secunda línKa da tabeia
$row[’first_name'] $row['last_name1]
$row[’email'3
Na verdade, nao se usa o smal de mais para ju n ta r duas strings — usa—se o operador ponto-
A dada passada do loop, os valores armazenados no array frow se modi-fidam para refletir a linHa atual. Osnomes das doiu*as sao usãdospara se adessar os valores do array-
não existem perguntas idiotas sobre whiíeQ
nqo existem
f e r g u n t a s i d i o t a s £ I Como exatamente o loop while sabe que deve
continuar olhando? Quer dizer, o loop while é controlado por uma condição verdadeiro/falso, e
mysqli_f etch_array () retoma algum tipo de ID do recurso, que é armazenado em $row... Isso certamente não se parece com uma condição de teste
verdadeiro/falso.
K : Bem observado. Ocorre que o PHP é bem liberal no
que diz respeito ao modo como ele interpreta a condição “verdadeira”. Resumindo, qualquer valor que não seja zero
( O ) o u f a ls o é considerado como verdadeiro, em uma condição de teste. Assim, quando a função m y s q l i _ f e t c h _ a r r a y () retoma uma linha de dados, o array $ ro w é interpretado como verdadeiro, uma vez que não está definido como 0 nem f a l s o . E, uma vez que a condição é verdadeira, o loop segue em frente. O interessante é o que acontece quando não há mais dados disponíveis - a função m y s q l i _ f e t c h _ _ a r r a y () retoma f a l s o , o que encerra o loop.
Então eu posso controlar um loop while com qualquer tipo de dados, e não apenas valores
verdadeiro ou falso?
K : Correto. Mas tenha em mente que, no fim das
contas, o loop while está interpretando os dados como
verdadeiro ou falso. Assim, a coisa mais importante a se entender é o que constitui verdadeiro
ou f a 1 so no que diz respeito à interpretação de outros tipos de dados. E a resposta simples é que qualquer coisa diferente de Ooufalsoé sempre interpretada como
verdadeiro.
" P i O que acontece com o loop while se nenhum dado for retomado pela função my sql i_f e tch_ar r ay ( ) ?
Se a consulta não resultar em quaisquer dados, então a função mysqli_fetch_array () retoma
falso. E issofazoloop while nunca chegar ao código da ação, nem mesmo uma vez.
?
Então é possível ter um loop que nunca faz repetições?H : É, sim. Também é possível ter um loop que nunca termina. Considere este loop while:
while (true) {
Isto é conhecido como loop infinito, porque a condição de teste nunca faz o loop terminar. Loops infinitos representam algo muito ruim.
PONTOS DE BALA Um banco de dados é um Container
para armazenar dados de uma forma altamente estruturada.
As tabelas armazenam dados em um padrão de colunas e linhas dentro de um banco de dados.
O comando SQL create DATABASE
é usado para que seja criado um novo banco de dados.
O comando SQL c r e a t e t a b l e cria
uma tabela dentro de um banco de dados e requisita informações detalhadas sobre as colunas de dados dentro da tabela. Você pode apagar uma tabela de um banco de dados com o comando SQL
DROP TABLE.
AfunçãO mysqli_fetch_array ()
obtém uma linha de dados a partir dos resultados de uma consulta ao banco de dados.
Um loop while repete um pedaço de código PHP enquanto uma condição de teste continua sendo atendida.
Q Crie uro b<meo de dodos e uma tabela papa a Ifata de emails. Q Cwc um formularia web e um
-script PI IP "Adfdwim..Dnuil" para
adicionor-novos clientes fl
^ Crie um formulário web e um
script PHP “Enviar Email" para enviar um email para a lista.