Abilitare i Radio Buttons

  • Creatore Discussione Creatore Discussione Benix89
  • Data di inizio Data di inizio

Benix89

Nuovo Utente
26 Gen 2016
28
0
1
35
Salve :cool:
sto creando un nuovo metodo di pagamento con risposte multiple su Magento.

Codice:
<?php$question = Mage::getModel('emme_question/question')->getCollection()->getLastItem();
$answers = $question->getSelectedAnswersCollection();
?>
<h4><?php echo $this->escapeHtml($question->getValue()); ?></h4>
<ul>
<?php foreach ($answers as $answer): ?>
<li>
<label><?php echo $this->escapeHtml($answer->getValue()) ?></label>
<input type="radio" name="my_custom_answer" value="<?php echo $answer->getId() ?>" required>
</li>
<?php endforeach ?>

Tutto bene, ma i radio buttons sono disabilitati. Come si attivano?
 
ciao
immagino che tu intenda questo
<input name="aa" type="radio" value="xx" checked>

Ciao borgo italia,
ho fatto come suggerito, ho aggiunto checked.

Codice:
<input type="radio" name="my_custom_answer" value="<?php echo $answer->getId() ?>" required checked>

Ma ora mi risulta "checked" solo l'ultimo

zna7b5.jpg


A me invece serve che l'utente ha la possibilità di scegliere, inoltre che la risposta "checkata" venga salvata in modo da poter verificare se è la risposta giusta.

Grazie in anticipo
 
ciao
guarda che quella è proprio la propretà dei radio.
di un gruppo di radio con lo stesso nome, ne tuo caso my_custom_answer, la ceccatura di uno esclude la ceccatura degli altri, cioè nel gruppo con lo stesso nome, SOLO un radio può essere ceccato.
quindi è logico che venga ceccato nel foreach solo l'ultimo, al primo giro del foreach viene ceccato il primo, al secondo viene ceccato il secondo radio con consegurente disceccatura del primo e così via sino all'ultimo.
poi per salvare il dato ceccato la serie di radio deve essere prima inserito in un form (con un pulsante di submit o con un js che invii i dati del form)
in un'altra pagina (o nella stessa) prelevi con il $_POST['my_custom_answer'] e lo salvi in db se vuoi mantenerlo o lo confronti con la risposta giusta e in funzione gli fai fare quello che deve fare
grosso modo:
PHP:
<?php
if($_POST['my_custom_answer']=="Parigi"){
	//giusto e fai fare quello che devi per la risposta giusta
}else{
	//erratoo e fai fare quello che devi per la risposta errata
}
?>
 
ciao
guarda che quella è proprio la propretà dei radio.
di un gruppo di radio con lo stesso nome, ne tuo caso my_custom_answer, la ceccatura di uno esclude la ceccatura degli altri, cioè nel gruppo con lo stesso nome, SOLO un radio può essere ceccato.
quindi è logico che venga ceccato nel foreach solo l'ultimo, al primo giro del foreach viene ceccato il primo, al secondo viene ceccato il secondo radio con consegurente disceccatura del primo e così via sino all'ultimo.

Ok, lo so che questa è la proprietà del "checked", però a me quello che interessa è che l'utente possa fare la scelta. Mi spiego meglio, come da titolo, a me serve che i radio bottons vengano abilitati.

Grazie per la pazienza.

Ps: ricorda che io sto lavorando su Magento
 
Ultima modifica:
ciao
non capisco cosa tu intenda per abilitati.
comunque chiudi sempre le istruzioni php col loro ;
<label><?php echo $this->escapeHtml($answer->getValue());?></label>
<input type="radio" name="my_custom_answer" value="<?php echo $answer->getId(); ?>" required>
 
ciao
non capisco cosa tu intenda per abilitati.
comunque chiudi sempre le istruzioni php col loro ;
<label><?php echo $this->escapeHtml($answer->getValue());?></label>
<input type="radio" name="my_custom_answer" value="<?php echo $answer->getId(); ?>" required>

Come suggerito, ho chiuso le istruzioni PHP.

Codice:
<?php$question = Mage::getModel('emme_question/question')->getCollection()->getLastItem();
$answers = $question->getSelectedAnswersCollection();
?>
<h4><?php echo $this->escapeHtml($question->getValue()); ?></h4>
<ul>
<?php foreach ($answers as $answer): ?>
<li>
<label><?php echo $this->escapeHtml($answer->getValue()); ?></label>
<input type="radio" name="my_custom_answer" value="<?php echo $answer->getId(); ?>" required>
</li>
<?php endforeach ?>

Però il problema non si è risolto. Cerco di spiegarmi, quando tu mi escono i radio botton, io o qualsiasi utente, non ha la possibilità di "checkare" una delle opzioni.

Nel mio esempio, alla domanda: "Dove si trova il Museo del Louvre?" io non ho la possibilità di selezionare nessuna soluzione. Se inserisco il "checked", come mi avevi suggerito, viene "checkato" solo l'ultimo ma non ho modo di cambiare "check". E' chiaro ora?
 
Per chi ha il mio stesso problema, ho risolto così:


Codice:
public function validate()
{
  foreach (Mage::getModel('emme_question/question')->load(1)->getSelectedAnswersCollection() as $answer)
  {
    if ($answer->getIsCorrect())
    {
        if ($answer->getId() == $_POST['my_custom_answer'])
        {
               Mage::getSingleton('core/session')->addSuccess('Risposta esatta');
          } else
            {
                    Mage::throwException('Risposta sbagliata!');
                    header('refresh:3;url=index.php');
              }
     }     
   }
}
 
Forse il problema poteva stare nel fatto che il tag <ul> sembra non venga chiuso dopo il foreach, e che non siano chiussi nemmeno i singoli radio

PHP:
<input type="radio" name="my_custom_answer" value="<?php echo $answer->getId(); ?>" required />

Non so se questo può inibire il corretto funzionamento degli input radio, ma di sicuro non è corretto
 

Discussioni simili