Formulier verwerken met php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris visser

chris visser

26/11/2008 00:33:00
Quote Anchor link
Ik heb een formulier 2 selectvelden gemaakt. Wanneer deze velden beide geselecteerd zijn zullen er in een ander formulier op dezelfde pagina 2 tekstvelden aangemaakt worden waarin de waardes van de selectboxen zijn opgeslagen.

Het formulier waarin de inputs neergezet worden ziet er zo uit:

rij 1: input1 - input2 - input3
rij 2: input1 - input2 - input3
rij 3: input1 - input2 - input3

enz...
Het aantal rijen is dus variabel en daardoor heb ik aan de veldnamen een variabele moeten meegeven:

rij 1: input11 - input12 - input13
rij 2: input21 - input22 - input23
rij 3: input31 - input32 - input33

wanneer ik op submit klik haal ik de velden met een foreach functie tevoorschijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST AS $key => $value)
{

  echo $value;
}

?>


Hoe maak ik hierbij nou een insertquery? Ik kan de insertquery in de foreach zetten, maar als ik 20 rijen heb krijg ik dus ook 20 query's.
Verder krijg ik als ik bijvoorbeeld 3 rijen heb niet 3 gegroepeerd waardes, maar 9 apparte waardes.

Het is de bedoeling dat de waardes net als in het formulier rij per rij in de database gezet worden (input_id => input1 => input2 => input3)

Weten jullie een oplossing?
Gewijzigd op 01/01/1970 01:00:00 door Chris visser
 
PHP hulp

PHP hulp

22/12/2024 12:17:01
 
Jan Koehoorn

Jan Koehoorn

26/11/2008 01:01:00
Quote Anchor link
Quote:
Hoe maak ik hierbij nou een insertquery? Ik kan de insertquery in de foreach zetten, maar als ik 20 rijen heb krijg ik dus ook 20 query's.

Dat is geen enkel probleem. Je kunt honderden insertquery's na elkaar uitvoeren.
 
Chris visser

chris visser

26/11/2008 07:43:00
Quote Anchor link
Maar je kunt toch meerdere rijen verwerken in 1 query?

VALUES
("test1", "value1"),
("test2", "value2"),
("test3", "value3");

en als je php toevoegt in de query:

('".$test1."', '".$value1."'),

Als je variabelen kan toevoegen in mysql kun je toch ook wel een loop toevoegen als:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
VALUES
foreach($test AS $key => $value)
{

   echo "('".$key."', '".$value."'),";
}
?>

Je krijgt dus de loop in de insertquery
Gewijzigd op 01/01/1970 01:00:00 door chris visser
 
Niek Ha

Niek Ha

26/11/2008 08:10:00
Quote Anchor link
dan zou je zoiets krijgen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$query
= "INSERT INTO (..., ... VALUES(";

foreach($test AS $key => $value)
{

$query.="('".$key."', '".$value."')"; // @robert idd.. wask vergeten
}

// wel ff een if / else maken voor de komma achter $query in de foreach

//dan hier $query uitvoeren


?>
Gewijzigd op 01/01/1970 01:00:00 door Niek Ha
 
Robert Deiman

Robert Deiman

26/11/2008 09:16:00
Quote Anchor link
@Niek90

Je moet dan wel de regel in de foreach eraanplakken met een .


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$query
= "INSERT INTO (..., ...) VALUES";

foreach($test AS $key => $value)
{

$query.="('".$key."', '".$value."')";
}


// wel ff een if / else maken voor de komma achter $query in de foreach

//dan hier $query uitvoeren


?>
 
Chris visser

chris visser

26/11/2008 16:39:00
Quote Anchor link
Ik heb de query nu voor elkaar gekregen, ik zit nu alleen nog met het verwerken van de array's:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo "<form action='verwerking.php' name='order' method='post'>";
echo "<table>";
$i = 0;
$t = 3;
while($i != $t)
{

  echo "<tr>";
  echo "    <td><input type='text' name='description".$i."'></td>";
  echo "    <td><input type='text' name='type".$i."'></td>";
  echo "    <td><input type='text' name='input".$i."'></td>";
  echo "</tr>";
}

?>


De bovenstaande code kan ik oproepen dmv een foreach waarbij ik dit probeerde om de waardes te sorteren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
  if(isset($_POST['submit']))
  {

    $i = '0';
    $t = '0';
    $record = array();
    foreach($_POST AS $key => $value)
    {

      if($key != "submit")
     {
    
        echo "Rij".$t.": ".$value." - ";
        $i++;    
        if($i == '3')
        {

          $i = '0';
          $t++;
          echo "<br>";
        }
      }
    }
  }

?>


waarbij ik de onderstaande output krijg. Tot zover ben ik dus, maar nu nog zorgen dat elke rij een plaats krijgt in een array, maar hoe :S

rij 1: Description1 - type1 - input1
rij 2: Description2 - type2 - input2
rij 3: Description3 - type2 - input3

Alvast bedankt voor het bovenstaande antwoord, deze hebben me aardig op weg geholpen ;)
Gewijzigd op 01/01/1970 01:00:00 door chris visser
 
Robert Deiman

Robert Deiman

26/11/2008 16:43:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$rij
=array();
$rij[1]['desc'] = 'omschrijving';
$rij[1]['type'] = 'type';
$rij[1]['input'] = 'input';
?>


Als ik jou was zou ik je array als bovenstaande gaan opbouwen.
 
Chris visser

chris visser

26/11/2008 17:18:00
Quote Anchor link
De uiteindelijke code voor de query staat hieronder, maar ik krijg er een foutmelding bij :( Ik kan blijven staren en kijken, maar misschien dat jullie snappen wat er mis is?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
        $sql
= "
          INSERT INTO d_workordertasks
          (
            CheckType,
            On,
              CSLID
          )
          VALUES  
        "
;
        $i = 0;
        foreach($record AS $key => $value)
        {

          $i++;
                                  //$t is het aantal rijen
            if($i != $t)
            {

            $sql.="('".$value['type']."', '".$value['on']."', '".$value['CSLID']."' ),";
          }

            else
            {
              $sql.="('".$value['type']."', '".$value['on']."', '".$value['CSLID']."' )";
            }
      }

        if(!$Workorder = $mysqli->query($sql))
    {

      trigger_error('Fout in query: '.$mysqli->error);
    }

    else
    {                
         echo "done";
        }
    
?>


hieronder de maar al te bekende waarschuwing:

Notice: Fout in query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'On, CSLID ) VALUES ('replace', 'LH magneto', '3' )('replac' at line 4 in H:\modules\Database\Workorder.php on line 355
Gewijzigd op 01/01/1970 01:00:00 door chris visser
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.