sql >> Databáze >  >> RDS >> Mysql

Vytvoření RadioButton ve frontendu (PHP)

První řešení:

Co můžete udělat se svým aktuálním stavem, je vložit potřebné parametry do funkce vašeho onclick tagy.

onclick="javascript:createRadioElement('new option', 'checked');"

Problém:

Problém je ale v tom, že nová možnost bude opravena v závislosti na tom, co napevno zakódujete do prvního parametru.

Nové řešení:

Co můžete udělat, je přidat textové pole přímo před tlačítko, abyste dali uživateli možnost zadat preferovanou možnost.

<div id="option-div"></div> <!-- THIS IS WHERE THE NEW RADIO BUTTONS WILL BE PUT -->
<input type="text" id="new-option" placeholder="Insert New Option">
<input type="button" id="create" value="Create New Equipment">

Poté vytvořte skript, který vytvoří nový přepínač spolu se vstupním textem uživatele:

var optiondiv = document.getElementById('option-div'); /* GET THE DIV ELEMENT OF WHERE WE WILL PUT THE RADIO BUTTONS */

document.getElementById('create').onclick = function () { /* WHEN CREATE NEW EQUIPMENT BUTTON IS CLICKED */

    var input = document.createElement('input'), /* CREATE NEW INPUT ELEMENT */
        newopt = document.getElementById('new-option').value; /* GET THE INPUT OF THE USER */
        label = document.createElement('label'); /* CREATE A NEW LABEL ELEMENT */

    /* IF USER DID NOT INPUT A TEXT, 'No Entered Text' WILL BE THE DEFAULT VALUE */
    newopt = (newopt == '')?'No Entered Text':newopt;

    /* FILL OUT THE TAGS OF THE NEW INPUT ELEMENT */
    input.type = "radio";
    input.setAttribute("value", newopt);
    input.setAttribute("checked", true);
    input.setAttribute("name", "radio-name");

    /* PUT THE INPUT ELEMENT/RADIO BUTTON INSIDE THE LABEL */
    label.appendChild(input);
    label.innerHTML += newopt+'<br>';

    /* PUT THE LABEL ELEMENT INSIDE THE option-div DIV */
    optiondiv.appendChild(label);

    document.getElementById('new-option').value = ''; /* RESET THE TEXT FIELD */

};

Můžete se podívat na tento hodl pro příklad.

Skutečný problém:

Chcete trvale uložit nově přidaná přepínače, ale nejprve jste se uchýlili k Javascriptu.

Řešení:

Chcete-li nově přidané přepínače uložit trvale, můžete je uložit do své databáze. Musíte strukturovat databázi, aby byl váš formulář dynamický.

Vytvořte tabulku, řekněme radio_tb :

radio_id | name |
---------+------+
    1    | opt1 |
    2    | opt2 |
    3    | opt3 |

Potom je zkuste zobrazit jako přepínače:

/* ASSUMING YOU ESTABLISH YOUR CONNECTION TO $connection VARIABLE */
$stmt = $connection->prepare("SELECT radio_id, name FROM radio_tb");
$stmt->execute();
$stmt->bind_result($radioid, $name);
while($stmt->fetch()){
    echo '<label><input type="radio" name="equip" value="'.$radioid.'">'.$name.'</label>';
}
$stmt->close();

Můžete pokračovat v používání skriptu, který jsem poskytl pro vložení nového přepínače, ale musíte použít Ajax vložit tyto nově přidané možnosti do vaší databáze.



  1. Potíže s velkými daty:Hardware nebo software… Spotřebiče…

  2. Události čekání serveru SQL -1

  3. import/export mysql

  4. 5 způsobů, jak zkontrolovat, zda tabulka v MySQL existuje