JavaScript / Ajax double insert in database na change selectbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cor S

Cor S

21/12/2014 13:18:20
Quote Anchor link
Ik heb een aanmeld formulier met 3 selectboxes.
Mbv ajax wordt na de eerste keuze (provincies) een tabel met plaatsen uit de provincie geopend, en daarna een derde.

Probleem is dat na de eerste live update een blanco insert in de database wordt gedaan terwijl ik eigenlijk de insert pas gedaan wil hebben nadat men op de verzend knop drukt aan het einde van het formulier, en dus niet na de 3 selects.

Ik maak gebruik van 2 files, funct.php file met daarin de ajax opbouw van de drie selectboxes, en een php file waarin het formulier en de insert zijn opgebouwd.

Hier volgt de funct.php:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
//**************************************
//     Pagina dropdown resultaten     //
//**************************************

function getTierOne()
{

    $result1 = mysql_query("SELECT
            provincie
        FROM
            plaatsen
        GROUP BY
            provincie"
)
    or die(mysql_error());

      while($tier = mysql_fetch_array( $result1 ))
  
        {

           echo '<option value="'.$tier['provincie'].'">'.$tier['provincie'].'</option>';
        }

}


//**************************************
//     Eeerste selectie resultaten     //
//**************************************

if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
   drop_1($_GET['drop_var']);
}

function
drop_1($drop_var)
{


 
//DATABASE VARIABELEN  >>> wordt nog vervangen door include

$host="xxxxxxxxx"; // De MySQL host van de server
$gebruiker = "xxxxxxxxxxxxxx";  // De gebruikersnaam van de MySQL database op de server
$wachtwoord = "xxxxxxxxxxxxxx"; // Het wachtwoord van de MySQL database op de server
$dbnaam="xxxxxxxxxxx"; // De naam van de database op uw server

mysql_connect($host, $gebruiker, $wachtwoord);  // Niet wijzigen
mysql_select_db($dbnaam) or die (mysql_error());  // Niet wijzigen
    
    
    $result2 = mysql_query("SELECT * FROM plaatsen WHERE provincie='$drop_var' GROUP BY plaats ORDER BY plaats ASC")
    or die(mysql_error());
    
    echo '<select name="drop_2" id="drop_2">
          <option value=" " disabled="disabled" selected="selected">Kies plaatsnaam</option>'
;

           while($drop_2 = mysql_fetch_array( $result2 ))
            {

              echo '<option value="'.$drop_2['stadid'].'">'.$drop_2['plaats'].'</option>';
            }

    
    echo '</select>';
    echo "<script type=\"text/javascript\">
$('#wait_2').hide();
    $('#drop_2').change(function(){
      $('#wait_2').show();
      $('#result_2').hide();
      $.get(\"http://www.xxxxxxxxxxxxx.nl/inc/php/funct.php\", {
        func: \"drop_2\",
        drop_var: $('#drop_2').val()
      }, function(response){
        $('#result_2').fadeOut();
        setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
      });
        return false;
    });
</script>"
;
}



//**************************************
//     Second selection results     //
//**************************************

if($_GET['func'] == "drop_2" && isset($_GET['func'])) {
   drop_2($_GET['drop_var']);
}

function
drop_2($drop_var)
{
  
    
//DATABASE VARIABELEN  >>> wordt nog vervangen door include

$host="xxxxxxxxx"; // De MySQL host van de server
$gebruiker = "xxxxxxxxxxxxxx";  // De gebruikersnaam van de MySQL database op de server
$wachtwoord = "xxxxxxxxxxxxxx"; // Het wachtwoord van de MySQL database op de server
$dbnaam="xxxxxxxxxxx"; // De naam van de database op uw server


mysql_connect($host, $gebruiker, $wachtwoord);  // Niet wijzigen
mysql_select_db($dbnaam) or die (mysql_error());  // Niet wijzigen
    
    $result3 = mysql_query("SELECT * FROM categories ORDER BY catname")
    or die(mysql_error());
    
    echo '<select name="drop_3" id="drop_3">
          <option value=" " disabled="disabled" selected="selected">Kies categorie</option>'
;

           while($drop_3 = mysql_fetch_array( $result3 ))
            {

              echo '<option value="'.$drop_3['catname'].'">'.$drop_3['catname'].'</option>';
            }

    
    echo '</select> ';

}



?>



Hier is de pagina zelf:


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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<script type="text/javascript">
$(document).ready(function() {
    $('#wait_1').hide();
    $('#drop_1').change(function(){
      $('#wait_1').show();
      $('#result_1').hide();
      $.get("http://www.xxxxxxxxxxxxxxxx.nl/inc/php/funct.php", {
        func: "drop_1",
        drop_var: $('#drop_1').val()
      }, function(response){
        $('#result_1').fadeOut();
        setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
      });
        return false;
    });
});

function finishAjax(id, response) {
  $('#wait_1').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
}
function finishAjax_tier_three(id, response) {
  $('#wait_2').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
}
</script>
<script type=\"text/javascript\">
$('#wait_2').hide();
    $('#drop_2').change(function(){
      $('#wait_2').show();
      $('#result_2').hide();
      $.get(\"http://www.xxxxxxxxxxxxxxxx.nl/inc/php/funct.php\", {
        func: \"drop_2\",
        drop_var: $('#drop_2').val()
      }, function(response){
        $('#result_2').fadeOut();
        setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
      });
        return false;
    });
</script>


<form action="" id="provincies" method="post">
<select name="drop_1" id="drop_1">
    
      <option value="" selected="selected" disabled="disabled">Kies provincie</option>
      
      <?php getTierOne(); ?>


 
    </select>


    <div id="wait_1" style="display: none;">
    <img src="http://www.xxxxxxxxxxxxxxxx.nl/images/ajax-loader.gif" alt="Even geduld aub"/>
    </div>
    <div id="result_1" style="display: none;"></div>
    <div id="wait_2" style="display: none;">
    <img src="http://www.xxxxxxxxxxxxxxxx.nl/images/ajax-loader.gif" alt="Even geduld aub"/>
    </div>
    <div id="result_2" style="display: none;"></div>

- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 21/12/2014 17:47:38 door - Ariën -
 
PHP hulp

PHP hulp

25/04/2024 10:53:17
 
- Ariën  -
Beheerder

- Ariën -

21/12/2014 13:23:58
Quote Anchor link
Java is GEEN JavaScript, en kan je de code even inperken te relevatne code.
Ik denk dat niemand 400 regels aan code zal lezen.
 
Pipo Clown

Pipo Clown

21/12/2014 14:42:42
Quote Anchor link
Deze code is niet door te komen zo.

Bovenin staan lange regels code waarvan het rechterdeel onzichtbaar is terwijl de horizontale scrollbalk ook onzichtbaar is. Probeer zelf eens in hoeverre je dit zelf leesbaar vindt.

Een deel van het javascript wordt in het blauw weergegeven, een ander deel in het zwart. Dit zou al voldoende reden moeten zijn voor je om te zien dat er ergens iets niet klopt.

Op regel 55 staat opeens een [ c o d e ] tag middenin een select, dit kan nooit kloppen.

Aangezien je bij elke plaats de provincie vermeld vraag ik mij af in hoeverre je database genormaliseerd is. Ik zou de provincies in een eigen tabel verwachten met een provincie_id bij de plaatsen.
Gewijzigd op 21/12/2014 14:43:29 door Pipo Clown
 
Cor S

Cor S

21/12/2014 15:42:26
Quote Anchor link
Even de vraag iets aangepast zodat alle code van de pagina zelf nu zwart is.

Provincies, plaatsen, regios en bedrijven hebben allemaal een eigen tabel. Onderling gekoppeld dmv bedrijfsid, plaatsid, regioid en provincieid.
Ik ben begonnen met de tabel plaatsen gebruiken, hierin zijn de provincie en regio waar een plaats onder valt ook vermeld, dit zal ik later aanpassen en op basis van id's uit de andere tabellen halen van data.

Nu wil ik graag eerst het toevoegen van records in de database door de selectbox keuzes oplossen voordat ik de tabellen en queries weer aanpak.
Gewijzigd op 21/12/2014 15:43:00 door Cor S
 
Pipo Clown

Pipo Clown

21/12/2014 17:23:47
Quote Anchor link
Cor S op 21/12/2014 15:42:26:
Even de vraag iets aangepast zodat alle code van de pagina zelf nu zwart is.


Heel slim, nu zijn eventuele ontbrekende quote of dubbelquotes niet meer in één oogopslag te zien.

Doordat de code ook nergens iets heeft van insprinegn o.i.d. is het ook niet meer te zien of blokken correct afgesloten worden.

Wanneer je het niet heel erg vind laat ik het aan anderen over om te proberen hier doorheen te komen.
 
- SanThe -

- SanThe -

21/12/2014 17:28:06
Quote Anchor link
Ik zie geen insert.
 
Cor S

Cor S

21/12/2014 17:51:54
Quote Anchor link
<form action="" id="provincies" method="post">
<select name="drop_1" id="drop_1">

<option value="" selected="selected" disabled="disabled">Kies provincie</option>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php getTierOne(); ?>







</select>


<div id="wait_1" style="display: none;">
<img src="http://www.xxxxxxxxxxxxxxxx.nl/images/ajax-loader.gif" alt="Even geduld aub"/>
</div>
<div id="result_1" style="display: none;"></div>
<div id="wait_2" style="display: none;">
<img src="http://www.xxxxxxxxxxxxxxxx.nl/images/ajax-loader.gif" alt="Even geduld aub"/>
</div>
<div id="result_2" style="display: none;"></div>



<br />

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
51
52
53
54
55
56
57
58
59
<?php
    $drop
= $_POST['drop_1'];
    $drop_2 = $_POST['drop_2'];
    $drop_3 = $_POST['drop_3'];
    
    
/////////////// 3 queries voor het ophalen values voor de inserts onderaan pagina)///////    
    
$plaatsje_query =
    
        "SELECT
            *
        FROM
            plaatsen
        WHERE
            stadid = '"
.$drop_2."'
        "
;

$plaatsje_result = mysql_query($plaatsje_query) or die ("FOUT: " . mysql_error());
while($plaatsje = mysql_fetch_assoc($plaatsje_result))
        
$woonplaats = $plaatsje['plaats'];

////////////////////////////////////////////////////

$catje_query =
    
        "SELECT
            *
        FROM
            categories
        WHERE
            catname = '"
.$drop_3."'
        "
;

$catje_result = mysql_query($catje_query) or die ("FOUT: " . mysql_error());
while($catje = mysql_fetch_assoc($catje_result))
        
$catid = $catje['catid'];

///////////////////////////////////////////////////////////

$regio_query =
    
        "SELECT
            *
        FROM
            plaatsen
        WHERE
            stadid = '"
.$drop_2."'
        "
;

$regio_result = mysql_query($regio_query) or die ("FOUT: " . mysql_error());
while($regiotje = mysql_fetch_assoc($regio_result))
        
$regioid = $regiotje['regio'];


?>

<br/>

<label for="bedrijf">Naam bedrijf *</label>
<input id="bedrijf" name="bedrijf" class="text" />
<script type="text/javascript">
var bedrijf = new LiveValidation('bedrijf');
bedrijf.add(Validate.Presence);
</script>
<br class="clear" />
<label for="contactpersoon">Contactpersoon</label>
<input id="contactpersoon" name="contactpersoon" class="text" />
<br class="clear" />
<label for="email">E-mailadres</label>
<input id="email" name="email" class="text" />
<script type="text/javascript">
var email = new LiveValidation('email');
email.add(Validate.Email );
</script>
<br class="clear" />
<label for="website">Website</label>
<input id="website" name="website" class="text" />
<br class="clear" />
<label for="telefoon">Telefoonnummer *</label>
<input id="telefoon" name="telefoon" class="text" />
<script type="text/javascript">
var telefoon = new LiveValidation('telefoon');
telefoon.add( Validate.Presence );
</script>
<br class="clear" />
<label for="fax">Fax</label>
<input id="fax" name="fax" class="text" />
<br class="clear" />
<label for="straat">Straat *</label>
<input id="straat" name="straat" class="text" />
<script type="text/javascript">
var straat = new LiveValidation('straat');
straat.add( Validate.Presence );
</script>
<br class="clear" />
<label for="postcode">Postcode *</label>
<input id="postcode" name="postcode" class="text" />
<script type="text/javascript">
var postcode = new LiveValidation('postcode');
postcode.add( Validate.Presence );
</script>
<br class="clear" />
<input type="hidden" name="transno" id="transno" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $n; ?>
" />
<br class="clear" />
<label for="kvk"><abbr title="Kamer van Koophandel Nummer" lang="NL">KvK</abbr> nummer *</label>
<input id="kvk" name="kvk" class="text" />
<script type="text/javascript">
var kvk = new LiveValidation('kvk');
kvk.add( Validate.Presence );
kvk.add( Validate.Numericality );
</script>
<br class="clear" />
<br />
<label for="beschrijving">Beschrijving bedrijf</label>
<textarea name="beschrijving" id="beschrijving" onKeyPress="return charLimit(this)" onKeyUp="return characterCount(this)" rows="8" cols="40"></textarea>
<p class="charcounter"><strong><span id="charCount">750</span></strong> karakters beschikbaar.</p>


<input type="submit" value="Verzenden">
</form>
<br style="clear: both;" />

</article>


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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
//ipadres
        $ip = $_SERVER['REMOTE_ADDR'];
        
        $code = rand(5, 15);
        
        $aanmeldquery = "INSERT INTO
        companies (compid, compname, name, email, invoiceemail, website, phone, fax, postcode, compdesc, street, city, kvk, ipaddress, submitcode, transno, status, debiteurnummer, sponsor)
        VALUES (
            NULL,
            '"
.($_POST['bedrijf']). "',
            '"
. $_POST['contactpersoon'] . "',
            '"
. $_POST['email'] . "',
            '"
. $_POST['email'] . "',
            '"
. $_POST['website'] . "',
            '"
. $_POST['telefoon'] . "',
            '"
. $_POST['fax'] . "',
            '"
. $_POST['postcode'] . "',
            '"
. $_POST['beschrijving'] . "',
            '"
. $_POST['straat'] . "',
            '"
. $woonplaats . "',
            '"
. $_POST['kvk'] . "',
            '"
. $ip . "',
            '"
.$n."',
            '"
. $code . "',
            'Unverified',
            '1234',
            '0'
        );"
;
        
        $resultpost = mysql_query($aanmeldquery) or die ("Fout in de postquery: " . mysql_error());
        
        $compid = mysql_insert_id();
        
        $plaatsquery = "INSERT INTO
        companies_plaatsen (compcityid, compid, stadid, status)
        VALUES(
            NULL,
            '"
.$compid."',
            '"
.$drop_2."',
            'Verified'
        );"
;
        $resultplaats = mysql_query($plaatsquery) or die ("Fout in de postquery: " . mysql_error());
        
        $categoriequery = "INSERT INTO
        companies_categories (comp_cat_id, compid, catid)
        VALUES(
            NULL,
            '"
.$compid."',
            '"
.$catid."'
        );"
;
        $resultcategorie = mysql_query($categoriequery) or die ("Fout in de postquery: " . mysql_error());
        
        
        
        $regiopostquery = "INSERT INTO
        companies_regions (compregionid, compid, regionid, status)
        VALUES(
            NULL,
            '"
.$compid."',
            '"
.$regioid."',
            'active'
        );"
;
        $resultregiopost = mysql_query($regiopostquery) or die ("Fout in de postquery: " . mysql_error());
        
        
?>
Gewijzigd op 21/12/2014 17:56:11 door Cor S
 
Cor S

Cor S

26/12/2014 11:20:48
Quote Anchor link
Opgelost,

In het formulier de submitbutton benoemd en in php de buttonactie

if ($_POST["submitbutton"]) { bijgeplaatst.


Nu de insert functie nog naar een losse file omzetten zodat ik kan redirecten naar een bedank pagina.
 



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.