Aplicatii - Structuri repetitive
Mai jos sunt prezentate cateva aplicatii legate de structurile repetitive. Sunt mai degraba portiuni de cod, care nu vor face decat sa va ajute sa va obisnuiti cu particularitatile limbajului PHP. Comentariile sunt binevenite.
Cum afisez o lista de limbi sau de tari?
<?php # va trebui sa avem lista de limbi/tari definita intr-un vector. $countries = array( 'Romania', 'France', 'Bulgaria', 'United Kingdom' ); # preiau lungimea listei $n = count( $countries ); # avand lungimea, folosesc o structura for pentru a afisa lista echo '<ul>'; for( $i = 0; $i < $n; $i++ ) { echo '<li>', $countries[ $i ], '</li>'; # echo poate primi mai multi parametrii } echo '</ul>'; ?>Rezultat:
- Romania
- France
- Bulgaria
- United Kingdom
Cum afisez un select-box cu toate tarile?
<?php # din nou, ne trebuie o lista de tari. Cel mai uzual pastram doar codul tarii, iar numele # il afisam doar. Astfel, optiunile vor avea ca "value" codul tarii iar ca "text" - numele. $countries = array( 'AF'=>'Afghanistan', 'AL'=>'Albania', 'DZ'=>'Algeria', 'AS'=>'American Samoa', 'AD'=>'Andorra', 'AO'=>'Angola', 'AI'=>'Anguilla', 'AQ'=>'Antarctica', 'AG'=>'Antigua And Barbuda', 'AR'=>'Argentina', 'AM'=>'Armenia', /* ... */ 'WS'=>'Western Samoa', 'YE'=>'Yemen', 'YU'=>'Yugoslavia', 'ZM'=>'Zambia', 'ZW'=>'Zimbabwe' ); # avand un array asociativ, este mai dificil sa-i accesam elementele, asa ca nu vom # mai folosi for. Vom folosi in schimb un iterator echo '<select name="tara">', "\n"; # afisez pe alt rand pentru a aseza in pagina sursa HTML foreach( $countries as $code => $name ) { echo '<option value="', $code, '">', $name, '</option>', "\n"; } echo "</select>\n"; ?>Rezultat:
Cum preiau primul email valid introdus de un utiliator?
<?php # presupunem ca exista mai multe textbox-uri intr-un formular, numite email[] $emails = $_POST[ 'email' ]; # pentru detalii despre $_POST vedeti lectia "Formulare" # pentru teste se poate folosi: $emails = array( '123', 'zzz', 'test@site', 'test@test.com', 'aaa' ); # folosesc o variabila ce actioneaza ca un flag/switch $gasit = false; # preiau nr de email-uri $n = count( $emails ); # plec de la primul email-uri $i = 0; while( $gasit == false && $i < $n ) { # verific fiecare email, pe rand if( strpos( $emails[ $i ], '@' ) !== false && strpos( $emails[ $i ], '.' ) !== false ) { # un email valid trebuie sa contina @ si un punct $gasit = true; echo 'Am gasit un email valid: ', $emails[ $i ], '<br />'; } $i++; # cresc pe $i } # daca s-a ajuns la sfarsitul sirului de email-uri si $gasit este tot false # inseamna ca nu exista nici un element valid if( !$gasit ) echo 'N-am gasit nici un email valid!<br />'; ?>
Rezultat:
Am gasit un email valid: test@test.com
Nota: se putea folosi si structura repetitiva for pentru ca se cunosteau dinainte numarul de pasi ce trebuiau efectuati. In schimb, folosind aceasta implementare, atunci cand se gaseste un email valid se opreste executia (se iese din bucla while), asadar codul ar putea fi mai performant decat in cazul folosirii for.
Spre exemplu, daca avem un vector cu 15 elemente, iar pe pozitia a doua se afla un email valid, atunci executia se termina dupa 2 pasi: la primul pas se verifica primul element care nu este valid, iar la al doilea, gasindu-se un email valid se iese din ciclul while (din cauza ca $gasit nu mai este false).
De ce nu raspunde nimeni la comentarii? E un site parasit?
Oricum, daca e cineva:
Afisez select-box cu tarile si cineva le alege... cum fac sa ii citesc tara respectiva
adica sa dea click pe un buton send iar informatia sa ajunga ca mine sau la operator si sa ii citeasca Tara... apoi spre exemplu orasul
Salut Mihai,
Ceea ce ai descris tu se poate realiza cu formulare. Sunt cateva exemple pe site care te-ar putea ajuta. Daca ai nevoie de mai multe informatii lasa un comentariu.
PS: comentariile sunt citite, toate (am primit si mail-ul tau). Raspunsurile, ca si lectiile/exemplele, se fac in functie de timpul liber :)
Adauga un comentariu la aceasta sectiune.