for each & mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yannick Bogaert

Yannick Bogaert

18/05/2015 12:02:10
Quote Anchor link
Hallo allemaal,

zit weer even vast met een volgende probleem.
Ik heb via javascript optie toegevoegd om rows toe
te voegen aan een tabel. Tot zover geen probleem!

Nu wil ik na de submit van het formulier deze waarden
ook opslagen in de database en daar zit ik dus vast.

Via een foreach kan ik alle rows laten weergeven via
een echo, maar hoe krijg ik die verschillende rows in mijn database?

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
<?php
$contract
= $_POST['contract'];
$broker = $_POST['dropdown1'];
$enduser = $_POST['dropdown2'];
$dof = $_POST['dof'];
$flightnr = $_POST['flight'];
$adep = $_POST['adep'];
$ades = $_POST['ades'];


foreach($flightnr as $a => $b)
 echo "$contract - $broker - $enduser - $flightnr[$a]  -  $adep[$a]  -  $ades[$a] <br>";
?>



thanks voor de tips en hulp alvast!
Gewijzigd op 18/05/2015 13:11:46 door Yannick Bogaert
 
PHP hulp

PHP hulp

25/11/2024 00:28:41
 
- Ariën  -
Beheerder

- Ariën -

18/05/2015 12:38:00
Quote Anchor link
Je zou een INSERT-query moeten uitvoeren om de velden te updaten.
Gewijzigd op 18/05/2015 12:54:49 door - Ariën -
 
Yannick Bogaert

Yannick Bogaert

18/05/2015 12:53:13
Quote Anchor link
@Aar: Het gaat om nieuwe records die in de database moeten dan zou ik toch een INSERT INTO moeten gebruiken niet?

Had even poging gewaagd maar zoals verwacht werkt het volgende niet:
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
<?php
foreach($flightnr as $a => $b)


$sql = "INSERT INTO flights( contract, broker, enduser, reg, dof, flightnr, adep, etd, eta, ades, pax, flighttype ) VALUES
        (
'"
. mysql_real_escape_string($contract) . "',
'"
. mysql_real_escape_string($broker) . "',
'"
. mysql_real_escape_string($enduser) . "',
'"
. mysql_real_escape_string($reg) . "',
'"
. mysql_real_escape_string($dof[$a]) . "',
'"
. mysql_real_escape_string($flightnr[$a]) . "',
'"
. mysql_real_escape_string($adep[$a]) . "',
'"
. mysql_real_escape_string($etd[$a]) . "',
'"
. mysql_real_escape_string($eta[$a]) . "',
'"
. mysql_real_escape_string($ades[$a]) . "',
'"
. mysql_real_escape_string($pax[$a]) . "',
'"
. mysql_real_escape_string($flighttype[$a]) . "')";

    if (!mysql_query($sql,$vlmocc))
    {

    die('Error: ' . mysql_error());
    }
  
?>


Er zijn natuurlijk een hoop meer velden vandaar de iets uitgebreidere sql
Gewijzigd op 18/05/2015 13:10:12 door Yannick Bogaert
 
Pipo Clown

Pipo Clown

18/05/2015 12:54:22
Quote Anchor link
Mogen we er van uit gaan dat bovenstaande code correct werkt ?
Getest door $flight tijdelijk een statische inhoud te geven ?
 
- Ariën  -
Beheerder

- Ariën -

18/05/2015 12:56:11
Quote Anchor link
Op zich zou die INSERT INTO wel moeten werken. Zo niet, dan ben ik benieuwd welke error je krijgt?
 
Yannick Bogaert

Yannick Bogaert

18/05/2015 12:57:03
Quote Anchor link
@Pipo: de foreach met de echo werkt, de foreach met de sql natuurlijk niet.
 
- Ariën  -
Beheerder

- Ariën -

18/05/2015 13:01:03
Quote Anchor link
Zie je geen foutmelding of iets dergelijks?
En wat zie je als je $sql echo'ed?
 
Yannick Bogaert

Yannick Bogaert

18/05/2015 13:05:02
Quote Anchor link
@Aar: ik krijg volgende melding:
Warning: Invalid argument supplied for foreach() in /var/www/charter/flights/flight_proces.php on line 22
Error: Query was empty
 
- Ariën  -
Beheerder

- Ariën -

18/05/2015 13:06:10
Quote Anchor link
Dan is $flight geen array.
Waar komt $flight vandaan?
 
Yannick Bogaert

Yannick Bogaert

18/05/2015 13:11:08
Quote Anchor link
@Aar: $flight moest $flightnr zijn, nu werkt de INSERT INTO maar enkel voor de eerste row dus niet voor bv 3 rows
 
- Ariën  -
Beheerder

- Ariën -

18/05/2015 13:20:06
Quote Anchor link
Wat staat er dan in $flightnr? Want het is een $_POST-waarde, en die kan niet zomaar een array zijn met meerdere waardes.
Gewijzigd op 18/05/2015 13:20:17 door - Ariën -
 
Yannick Bogaert

Yannick Bogaert

18/05/2015 13:37:38
Quote Anchor link
@Aar: flightnr is 1 van de velden die altijd gedupliceerd is bij het drukken op de add row knop (Java).

Afbeelding

de html hierachter 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
<html>
<body>
  <table id="flights" class="curvedEdges" width="600" border="0" cellspacing="0" cellpadding="10">
    <tbody>
      <tr>
          <td width="20"><input type="checkbox" name="checkbox[]" id="checkbox"></td>
        <td width="50"><input name="dof[]" type="date" required="required" id="dof"></td>
        <td width="25"><input name="flight[]" type="text" required="required" id="flight" size="5" maxlength="5"></td>
        <td width="25"><input name="adep[]" type="text" required="required" id="adep" size="5" maxlength="5"></td>
        <td width="25"><input name="etd[]" type="text" required="required" id="etd" size="5" maxlength="5"></td>
        <td width="25"><input name="eta[]" type="text" required="required" id="eta" size="5" maxlength="5"></td>
        <td width="25"><input name="ades[]" type="text" required="required" id="ades" size="5" maxlength="5"></td>
        <td width="25"><input name="pax[]" type="text" required="required" id="pax" value="0" size="5"></td>
        <td width="25"><select name="flighttype[]" id="select">
          <option value="F">Ferry</option>
          <option value="C">Live</option>
        </select></td>
      </tr>
    </tbody>
  </table>
</body>
</html>


de [] bij flight moeten ertussen blijkbaar om de foreach te doen lukken, dit heb ik gehaald uit:

"Getting Submitted Form Values in PHP
The main purpose of above code is to take input from user and persist it in database. Hence we may want to submit the above form and fetch its values in PHP to store the data in database.

If you notice we have multiple input textboxes with the same name. So in order to get these values in PHP request parameter, we need to modify our HTML. We need to append [] at the end of name of each input boxes including select box.

Thus our textbox definition:

<input type="text" name="txt">
Will change into:

<input type="text" name="txt[]">"

Met de gewone echo krijg ik daardoor als resultaat:

c12345 - Air Charter - end user 1 - - dep1 - des1
c12345 - Air Charter - end user 1 - - dep2 - des2

Wat ook correct is.
Gewijzigd op 18/05/2015 13:39:07 door Yannick Bogaert
 
- Ariën  -
Beheerder

- Ariën -

18/05/2015 13:45:45
Quote Anchor link
Inderdaad, met een [] in de name laat je input doordoen als een array, zoadat foreach er iets mee kan.
Ik neem aan dat het werkt?

Verder zal je met Java eerder JavaScript bedoelen. Tussen beiden zit een aanzienlijk groot verschil.
 
Yannick Bogaert

Yannick Bogaert

18/05/2015 13:47:37
Quote Anchor link
@Aar: Ja inderdaad de foreach op zich werkt aangezien het met een simpele echo wel correct is en inderdaad JavaScript.

UPDATE: ik merk wel dat als er bv 3 rows zijn hij enkel de laatste row in de database heeft opgeslagen.
Gewijzigd op 18/05/2015 14:01:53 door Yannick Bogaert
 
Eddy E

Eddy E

18/05/2015 18:08:59
Quote Anchor link
Hoe vaak stel je $sql in?
Hoe vaak voer je mysql(i)_query() uit?
 



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.