Avatar billede lefsa62 Seniormester
26. marts 2019 - 09:15 Der er 5 kommentarer

Inser

Jeg har et ducomet i jave script som laver flere celler ved at bruge pil ned. Men problemet er at jeg skal også hente noget fra db der har jeg en php script. De steder som står> input <bliver der tabeller. Hvad gør jeg når jeg vil indput php og hente fra db


function addInput() {
        // Navnene (name="") på de inputs der skal oprettes.
        let names = ['input1[]', 'input2[]', 'input3[]', ' input4[]', 'input5[]', 'input6[]'];
       
        let createInput = function(name, type, className) {
            let input = document.createElement('input');
            input.setAttribute('name', name);
            input.setAttribute('type', type);
            input.className = className;
            return input;
        }
       
        let container = document.getElementById('input-container');
        let div = document.createElement('div');
       
        names.forEach(name => {
            let input = createInput(name, 'text', 'text-input');
            div.appendChild(input);
        });
       
        container.appendChild(div);
    }

    shortcuts.add('down',function() {
        addInput();
    })

    addInput();

   

</script>
Avatar billede lefsa62 Seniormester
26. marts 2019 - 10:02 #1
Den som jeg bruger i php ser sådan ud til at hente fra mysql

<select name="vat">
        <?php
            $sqlselect = "select * from vat";
            $resultselect = $conn->query($sqlselect) or die($conn->error);
            while ($rowselect = $resultselect->fetch_assoc()) { ?>
                <option value="<?php echo $rowselect['vat_id'];?>"><?php echo $rowselect['vat'];?></option>
            <?php }; ?>
        </select>
Avatar billede softspot Forsker
26. marts 2019 - 10:23 #2
Hvis jeg forstår dig korrekt, skal du nok have hentet vat_id og vat inden du genererer din formular. Dvs. du skal have vat-data ind og ligge som javascript data, ligesom du har gjort med dit array af inputn[]. Derefter genererer du hele formularen på klienten, altså ikke kun input-felterne, men også select-listen. Du kan blot generere vat-data med samme kode som du pt. bruger til din select, men i stedet generere et javascript array med objekter som indeholder vat_id og vat.

Ovenstående kan bruges, hvis dine vat-data er statiske. Er det derimod meget dynamiske data, som ændrer sig hurtigt, skal du nok lave et ajax-kald, der henter vat-data, når den nye linje i tabellen oprettes. Så får du de mest opdaterede data til hver nye række du opretter...
Avatar billede lefsa62 Seniormester
26. marts 2019 - 10:45 #3
Ja det er korrekt. >vat< eller hvad de heder er faste,den kan lige så gerne hede name men hentes et bestemt data sted. Hvad kan du fore lå det skal skrives
Avatar billede softspot Forsker
26. marts 2019 - 11:29 #4
Umiddelbart ville jeg udvide array'et med navne, så det indeholdte objekter i stedet. Noget i stil med dette:

var names = [
  { type: "text", name: "input1[]", className: "text-input" },
  { type: "text", name: "input2[]", className: "text-input" },
  { type: "text", name: "input3[]", className: "text-input" },
  { type: "text", name: "input4[]", className: "text-input" },
  { type: "singleselect", name: "vat", options: [
      { value: "1", text: "first" },
      { value: "2", text: "second" },
      { value: "3", text: "third" },
  ] },
];


Derefter ville jeg så generere options ind i singleselect med din php-kode.

Til sidst skal koden der opretter nye formfelter (names.forEach) på klienten opdateres, så den kan håndtere dine forskellige formularfelttyper (der er nu to, nemlig text og singleselect, som er input hhv. select formularfelter).

Heri skal du oprette formfelterne afhængig af, hvilken type der er tale om. Disse data ligger i array'et, så du skal blot lave nogle rutiner som kan oprette de forskellige formfelter. Noget i stil med dette:

        names.forEach(field => {
            var input = null;
            switch(field.type) {
              case "text":
                  input = createInput(field.name, field.type, field.className);
                  break;
              case "singleselect":
                  input = createSelect(field.name, field.options, field.className);
                  break;
            }

            if(input)
              div.appendChild(input);
        });

Jeg vil lade genereringen af options og oprettelsen af createSelect være en øvelse til dig :-)
Avatar billede lefsa62 Seniormester
26. marts 2019 - 13:16 #5
Det jeg har brug for her er en formular istedet for den php som jeg har.dDen kan bruge i denne forbindelse om det er Ajax eller andet har jeg ikke styr på Men php virker ikke. Den skal hente i mysql db og indsette i formularen og den skal kunne generere en ny sammen med dem andre når jeg vil lave en ny text på samme tid
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester