$_POST waardes ophalen en doorsturen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris visser

chris visser

05/07/2008 14:22:00
Quote Anchor link
Hoi, ik ben bezig met een script waarbij ik een lang formulier met 20 velden moet verwerken. Na de submit worden de $_POST waardes in de injection.php beveiligt en omgezet in $data variablen.

De geposte informatie staat verdeelt over meerdere tabellen waardoor ik meerdere insert querys moet maken. Echter omdat de data aan elkaar is gerelateerd moet ik na elke query de pagina vernieuwen en de geposte variabelen in een header( location: ) meesturen naar de volgende pagina om zo de ID nummers goed te kunnen verwerken.

Ik weet dat hiervoor een betere oplossing voor moet zijn. Dus hoe voer ik informatie in meerdere tabellen in zonder elke keer de pagina te moeten vernieuwen. Hieronder het eerste gedeelte van mijn script:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php        
include ($_SERVER['DOCUMENT_ROOT']."/functions/db_connect.php");    
include ($_SERVER['DOCUMENT_ROOT']."/functions/injection.php");

$ExpireDate = $data['iDag']."-".$data['iMaand']."-".$data['iJaar'];

if(empty($_GET['Stop']))
{

  if($key =! 'AddPart')
  {

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

        $add[$key] = $value;
            #Ik wil de waardes van deze array graag achter elkaar zetten en de
            #variabele gebruiken om bijvoorbeeld een link van te maken
            #zodat ik deze heel makkelijk in bijvoorbeeld een header("location: ".$link." ")
            #kan meegeven. Hieronder het script dat ik had:

            $link = $key."=".$value."&";
      }    
  }
}


//Als het onderdeel in een nieuwe locatie word ingedeelt
if((empty($_GET['Stop'])) && ($data['LocationID'] == 'New'))
{
    
  $sql = "
    INSERT INTO d_locations
      (
      StorageID,
          AreaName,    
          BinName        
        )
        VALUES
        (
      '"
.$add['StorageID']."',
            '"
.$add['AreaName']."',
            '"
.$add['BinName']."'                
        )    
    "
;    
    if(!$result = $mysqli->query($sql))
  {

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

  else
  {
      #Hieronder de header met de link erin:
    header("location: tag.php?".$link."&Stop=TRUE");
  }    
}
    
?>
Gewijzigd op 01/01/1970 01:00:00 door Chris visser
 
PHP hulp

PHP hulp

29/04/2024 00:03:57
 
Jan Koehoorn

Jan Koehoorn

05/07/2008 14:27:00
Quote Anchor link
Als je alle info hebt, moet je wel meer dan 1 query uitvoeren, maar hoef je toch niet je pagina te vernieuwen?
 
Chris visser

chris visser

05/07/2008 14:42:00
Quote Anchor link
Ok, maar dan zit ik nog met het volgende probleem: De volgende tabellen zijn aanwezig:

d_onstock
*OnstockID
*LocationID (foreign)
*PartID (foreign)
*SupplierID (foreign)

d_locations
*LocationID
*LocName
*LocNumber

d_parts
*PartID
*PartNumber
*PartDescript

d_suppliers
*SupplierID
*SupplierName
*SupplierMail
*SupplierTel

Mijn formulier vraagt eerst een partnummer en controleerd of deze al in de d_parts tabel voorkomt. Wanneer dit niet zo is word er een uitgebreid formulier weergegeven. (dmv van javascript gaat dit automatisch) In dit formulier moet je alle informatie invullen die voor dat partnummer geld. Na de submit word alle informatie over het nieuwe onderdeel verzonden en deze word in alle tabellen verwerkt. Echter wanneer ik in mijn d_parts tabel de innformatie invoeg en meteen daarna mijn d_onstock tabel wil invoeren zit ik met een probleem. De PartID uit de d_onstock tabel moet overeenkomen met de PartID uit de d_parts tabel.

Ik had dit opgelost door de pagina te vernieuwen en vervolgens het nieuwe PartID dmv van een SELECT query op te halen uit de d_parts tabel.

Dit kan niet de best mogelijk oplossing zijn...
 
Jan Koehoorn

Jan Koehoorn

05/07/2008 14:57:00
Quote Anchor link
chris schreef op 05.07.2008 14:42:
Echter wanneer ik in mijn d_parts tabel de innformatie invoeg en meteen daarna mijn d_onstock tabel wil invoeren zit ik met een probleem. De PartID uit de d_onstock tabel moet overeenkomen met de PartID uit de d_parts tabel.

Je kunt toch met mysql_insert_id opvragen wat het id is van de laatst ingevoegde record in parts? Die gebruik je dan weer voor je INSERT query om d_onstock te vullen.
Edit: om het waterdicht te maken, zou dit wel in een TRANSACTION moeten.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Chris visser

chris visser

05/07/2008 14:59:00
Quote Anchor link
Ja precies wat ik nodig heb, hartstikke bedankt. Ik heb me rot lopen puzzelen maar eigenlijk voor niets dus :D
 
Jan Koehoorn

Jan Koehoorn

05/07/2008 15:00:00
Quote Anchor link
Let nog even op de edit in mijn vorige post over TRANSACTIONS. Die is belangrijk, want je wilt zeker weten dat je het goede id te pakken hebt.
 



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.