pastrare date in formular butoane radio (cu functie) Topic is solved

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Gerogescu
New Member
Mesaje: 3
Membru din: Joi Iul 07, 2016 10:33 pm

pastrare date in formular butoane radio (cu functie)

Mesajde Gerogescu » Vin Oct 28, 2016 2:33 pm

Salut

Am o tema in care trebuie sa pastrez datele in formular dupa ce am apasat submit si sa folosesc o functie pentru asta. Problema este ca reusesc sa pastrez datele doar partial la butoanele radio.

Functia:

Cod: Selectaţi tot

function *(){
    if(isset($_POST['*']) and $_POST['*']=='masculin' or 'feminin'){
        echo 'checked = "checked"';
     }
}

si partea de html cu php unde apelez functia:

Cod: Selectaţi tot

<input type="radio" name="*" value="masculin" <?php *();?> />Masculin<br />
            <input type="radio" name="*" value="feminin" <?php *();?> />Feminin<br />


In momentul in care bifez butonul pentru Feminin si apas submit totul este ok, pot apasa de cate ori vreau si butonul feminin ramane bifat.

Daca in schimb bifez butonul masculin dupa ce am apasat submit se schimba bifa de la masculin la feminin.
O alta anormalitate este ca de fiecare data cand redeschid pagina, butonul feminin este bifat.

Nu imi dau seama unde gresesc.
Multumesc



nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: pastrare date in formular butoane radio (cu functie)  Topic is solved

Mesajde nevvermind » Vin Oct 28, 2016 5:28 pm

Te-ai lovit de precendeta si asociativitatea operatorilor de comparare.

Foloseste "&&" in loc de "and" si "||" in loc de "or".

Oricum, nu cred ca "isset($_POST['*']) and $_POST['*']=='masculin' or 'feminin'" functioneaza cum crezi. Sunt 3 conditii acolo, nu 2. or 'feminin' este interpretat ca "or true", deci orice conditie va trece.

Cauta sa nu printezi direct din functii. Alea sa returneze. Printeaza (echo, print etc.) in fisierele de template, nu in functii.
Vezi asta:

Cod: Selectaţi tot

function isSelectedGenderMasculine()
{
    if (empty($_POST['gender']) || !in_array($_POST['gender']), ['masculin', 'feminin']) {
        return true;
    }

    return $_POST['gender'] === 'masculin';
}

<?php $genderIsMasculine = isSelectedGenderMasculine() ?>
<input type="radio" name="gender" value="masculin"<?php if ($genderIsMasculine) { echo ' checked="checked"'; }?> />Masculin<br />
<input type="radio" name="gender" value="feminin" <?php if (!$genderIsMasculine) { echo ' checked="checked"'; }?> />Feminin<br />


Vezi precedenta p-aci http://php.net/manual/en/language.opera ... edence.php
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

Gerogescu
New Member
Mesaje: 3
Membru din: Joi Iul 07, 2016 10:33 pm

Re: pastrare date in formular butoane radio (cu functie)

Mesajde Gerogescu » Vin Oct 28, 2016 5:43 pm

Sa ma fi impuscat si eu credeam ca am acolo doua conditii. Multumesc mult.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: pastrare date in formular butoane radio (cu functie)

Mesajde nevvermind » Vin Oct 28, 2016 6:05 pm

Un mic break-down, sa intelegi mai bine:
isset($_POST['*']) and $_POST['*']=='masculin' or 'feminin' contine:

1. isset($_POST['*'])
2. $_POST['*']=='masculin'
3. 'feminin'

Tinand cont ca stringul "feminin", convertit in boolean, este mereu true ((bool) "feminin" === true) - ca orice string care nu-i gol -, avem asa:

a) cand $_POST['gender'] e 'masculin', conditia devine:
- (true and true or 'feminin')
- (true and true) or true
- (true or true)
- true

b) $_POST['gender'] e 'feminin', conditia devine:
- (true and false or 'feminin')
- (true and false) or true
- (false or true)
- true

Dupa cum vezi, orice i-ai fi aruncat, conditia echivala in true mereu.
Si tot dupa cum vezi, nu poti verifica in PHP daca o valoare este egala cu una sau cu cealalta, prin sintaxa $_POST['*']=='masculin' or 'feminin'. De asta am folosit artificiul cu in_array().
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

Gerogescu
New Member
Mesaje: 3
Membru din: Joi Iul 07, 2016 10:33 pm

Re: pastrare date in formular butoane radio (cu functie)

Mesajde Gerogescu » Vin Oct 28, 2016 9:41 pm

Multumesc mult nevvermind. Citisem inainte despre conversia tipurilor de date insa nu imi dau seama inca cat de importanta este. trebuie sa citesc si mai important sa exersez mai mult.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 55 vizitatori