PHP&AJAX gebruikers toevoegen
Wanneer ik een gebruik selecteer uit de dropdown menu dan komt deze onder het dropdown menu zoals het hoort. Vervolgens kan ik het ook weer verwijderen, nog geen problemen. Maar zodra ik een 2e gebruiker selecteer vervangt hij de voorheen geselecteerde gebruiker met de nieuw geselecteerde gebruiker. Uiteindelijk komt er dus maar 1 gebruiker onder dit dropdown menu te staan. Hoe los ik dit op?
Dit heb ik:
formulier.php
Code (php)
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
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
<?php
session_start();
error_reporting(E_ALL);
$host = "localhost";
$user = "";
$pass = "";
$daba = "";
mysql_connect( $host, $user, $pass ) or die ( 'Fout: ' . mysql_error() );
mysql_select_db( $daba ) or die ( 'Fout: ' . mysql_error() );
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
function toevoegen()
{
gebruiker = document.getElementById( "gebruikerslijst" ).value;
if( gebruiker != "0" )
{
getData( "adduser", "ledenveld", "?gebruiker=" + gebruiker );
}
}
function verwijderen( lid )
{
getData( "adduser", "ledenveld", "?gebruikers_id=" + lid );
}
function resthis()
{
getData( "adduser", "ledenveld", "?backup=true" );
}
</script>
</head>
<body>
Gegevens die niet van toepassing zijn, of ontbreken gelieve <strong>leeg</strong> laten.
<hr size="1" color="#DDDDDD" />
<form enctype="multipart/form-data" action="testen.php" name="formulier" method="post">
<table style="border: solid 1px #DDD" width="85%" align="center" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="30%" style="border-right: solid 1px #DDD; border-bottom: solid 1px #DDD"><strong>Naam:</strong></td>
<td style="border-bottom: solid 1px #DDD" width="70%"><input name="land" type="text" maxlength="250" /></td>
</tr>
<tr>
<td bgcolor="#DDDDDD" style="border-right: solid 1px #DDD; border-bottom: solid 1px #DDD"><strong>Leden:</strong></td>
<td bgcolor="#DDDDDD" style="border-bottom: solid 1px #DDD">
<select id="gebruikerslijst" onChange="toevoegen()">
<option value="0">Selecteer</option>
<?php
$query = mysql_query( "SELECT * FROM mb_leden WHERE verwijderen < '1'" ) or die ( "Fout: " . mysql_error() );
while( $informatie = mysql_fetch_assoc( $query ) )
{
echo "<option value=\"" . $informatie[ 'id' ] . "." . $informatie[ 'voornaam' ] . "\">" . $informatie[ 'voornaam' ] . " \" " . $informatie[ 'nicknaam' ] . " \" " . $informatie[ 'achternaam' ] . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td style="border-right: solid 1px #DDD; border-bottom: solid 1px #DDD"> </td>
<td style="border-bottom: solid 1px #DDD" id="ledenveld">Geen leden toegevoegd.</td>
</tr>
<tr>
<td bgcolor="#DDDDDD" style="border-bottom: solid 1px #DDD" colspan="2"><input name="verzenden" type="button" value="Verzenden" /></td>
</tr>
</table>
</body>
</html>
session_start();
error_reporting(E_ALL);
$host = "localhost";
$user = "";
$pass = "";
$daba = "";
mysql_connect( $host, $user, $pass ) or die ( 'Fout: ' . mysql_error() );
mysql_select_db( $daba ) or die ( 'Fout: ' . mysql_error() );
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
function toevoegen()
{
gebruiker = document.getElementById( "gebruikerslijst" ).value;
if( gebruiker != "0" )
{
getData( "adduser", "ledenveld", "?gebruiker=" + gebruiker );
}
}
function verwijderen( lid )
{
getData( "adduser", "ledenveld", "?gebruikers_id=" + lid );
}
function resthis()
{
getData( "adduser", "ledenveld", "?backup=true" );
}
</script>
</head>
<body>
Gegevens die niet van toepassing zijn, of ontbreken gelieve <strong>leeg</strong> laten.
<hr size="1" color="#DDDDDD" />
<form enctype="multipart/form-data" action="testen.php" name="formulier" method="post">
<table style="border: solid 1px #DDD" width="85%" align="center" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="30%" style="border-right: solid 1px #DDD; border-bottom: solid 1px #DDD"><strong>Naam:</strong></td>
<td style="border-bottom: solid 1px #DDD" width="70%"><input name="land" type="text" maxlength="250" /></td>
</tr>
<tr>
<td bgcolor="#DDDDDD" style="border-right: solid 1px #DDD; border-bottom: solid 1px #DDD"><strong>Leden:</strong></td>
<td bgcolor="#DDDDDD" style="border-bottom: solid 1px #DDD">
<select id="gebruikerslijst" onChange="toevoegen()">
<option value="0">Selecteer</option>
<?php
$query = mysql_query( "SELECT * FROM mb_leden WHERE verwijderen < '1'" ) or die ( "Fout: " . mysql_error() );
while( $informatie = mysql_fetch_assoc( $query ) )
{
echo "<option value=\"" . $informatie[ 'id' ] . "." . $informatie[ 'voornaam' ] . "\">" . $informatie[ 'voornaam' ] . " \" " . $informatie[ 'nicknaam' ] . " \" " . $informatie[ 'achternaam' ] . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td style="border-right: solid 1px #DDD; border-bottom: solid 1px #DDD"> </td>
<td style="border-bottom: solid 1px #DDD" id="ledenveld">Geen leden toegevoegd.</td>
</tr>
<tr>
<td bgcolor="#DDDDDD" style="border-bottom: solid 1px #DDD" colspan="2"><input name="verzenden" type="button" value="Verzenden" /></td>
</tr>
</table>
</body>
</html>
adduser.php
Code (php)
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
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
<?php
list ( $gebruikersid, $gebruikersnaam ) = explode( '.', $_GET[ 'gebruiker' ] );
if( isset( $_GET[ 'gebruiker' ] ) )
{
if( isset( $_SESSION[ 'leden_lijst' ] ) )
{
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
if( $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersnaam' ] != $gebruikersnaam && $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ] != $i )
{
$bestaat = true;
}
}
}
else
{
$bestaat = false;
$_SESSION[ 'leden_lijst' ] = array();
$_SESSION[ 'leden_lijst' ][ 0 ] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
if( $bestaat )
{
$i = 1;
foreach( $_SESSION[ 'leden_lijst' ] as $sleutel => $waarde )
{
if( $i == count( $_SESSION[ 'leden_lijst' ]) )
{
$nieuw = $sleutel++;
}
$i++;
}
echo $nieuw;
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
$_SESSION[ 'leden_lijst' ][] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
}
}
elseif( isset( $_GET[ 'gebruikers_id' ] ) )
{
if( count( $_SESSION[ 'leden_lijst' ] ) > 0 )
{
if( isset( $_SESSION[ 'leden_lijst' ][ $_GET[ 'gebruikers_id' ] ] ) )
{
unset( $_SESSION[ 'leden_lijst' ][ $_GET[ 'gebruikers_id' ] ] );
}
}
}
elseif( isset( $_GET[ 'del' ] ) )
{
session_destroy();
}
if( count( $_SESSION[ 'leden_lijst' ] ) > 0 )
{
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
echo '<img border="0" src="images/x_button.gif" style="margin-right: 5px;" onClick="verwijderen(' . $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ] . ');">';
echo $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersnaam' ] . "<br />";
if( empty( $gebruikers_array ) )
{
$gebruikers_array = $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ];
}
else
{
$gebruikers_array .= "," . $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ];
}
}
echo '<input type="hidden" name="hidden_ledenlijst" value="' . $gebruikers_array . '">';
}
else
{
echo "Geen leden toegevoegd.";
}
?>
list ( $gebruikersid, $gebruikersnaam ) = explode( '.', $_GET[ 'gebruiker' ] );
if( isset( $_GET[ 'gebruiker' ] ) )
{
if( isset( $_SESSION[ 'leden_lijst' ] ) )
{
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
if( $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersnaam' ] != $gebruikersnaam && $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ] != $i )
{
$bestaat = true;
}
}
}
else
{
$bestaat = false;
$_SESSION[ 'leden_lijst' ] = array();
$_SESSION[ 'leden_lijst' ][ 0 ] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
if( $bestaat )
{
$i = 1;
foreach( $_SESSION[ 'leden_lijst' ] as $sleutel => $waarde )
{
if( $i == count( $_SESSION[ 'leden_lijst' ]) )
{
$nieuw = $sleutel++;
}
$i++;
}
echo $nieuw;
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
$_SESSION[ 'leden_lijst' ][] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
}
}
elseif( isset( $_GET[ 'gebruikers_id' ] ) )
{
if( count( $_SESSION[ 'leden_lijst' ] ) > 0 )
{
if( isset( $_SESSION[ 'leden_lijst' ][ $_GET[ 'gebruikers_id' ] ] ) )
{
unset( $_SESSION[ 'leden_lijst' ][ $_GET[ 'gebruikers_id' ] ] );
}
}
}
elseif( isset( $_GET[ 'del' ] ) )
{
session_destroy();
}
if( count( $_SESSION[ 'leden_lijst' ] ) > 0 )
{
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
echo '<img border="0" src="images/x_button.gif" style="margin-right: 5px;" onClick="verwijderen(' . $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ] . ');">';
echo $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersnaam' ] . "<br />";
if( empty( $gebruikers_array ) )
{
$gebruikers_array = $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ];
}
else
{
$gebruikers_array .= "," . $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ];
}
}
echo '<input type="hidden" name="hidden_ledenlijst" value="' . $gebruikers_array . '">';
}
else
{
echo "Geen leden toegevoegd.";
}
?>
ajax.js
Code (php)
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
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
function getData(dataSource, divID, GetSend)
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource+'.php'+encodeURI(GetSend));
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
function getDataP(dataSource, divID, GetSend)
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource+'.php'+encodeURI(GetSend));
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML += XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
function postData(dataSource, divID, postData)
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("POST", dataSource+'.php');
XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(postData);
}
}
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource+'.php'+encodeURI(GetSend));
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
function getDataP(dataSource, divID, GetSend)
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource+'.php'+encodeURI(GetSend));
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML += XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
function postData(dataSource, divID, postData)
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("POST", dataSource+'.php');
XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(postData);
}
}
vervangen door :
obj.innerHTML += XMLHttpRequestObject.responseText+"<br>";
op regel 84
Jacco schreef op 04.01.2008 13:58:
Dit werkt ook niet, geen verschil.obj.innerHTML = XMLHttpRequestObject.responseText;
vervangen door :
obj.innerHTML += XMLHttpRequestObject.responseText+"<br>";
op regel 84
vervangen door :
obj.innerHTML += XMLHttpRequestObject.responseText+"<br>";
op regel 84
Ik het even op mijn localhost gezet, en dan krijg ik een fout; "Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 50 bytes)" in de adduser.php, iemand enig idee wat dit moet voorstellen?
Gewijzigd op 01/01/1970 01:00:00 door mistery
En zet in je php.ini eens memory_limit = 32M
De Memory_limit staat ol op 32M.
Heb een poging gedaan en de op het oog meeste logische opties aangedragen. Als het dan nog niet helpt post dan ff een stukje relevante code.
Code (php)
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
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
<?
if( isset( $_SESSION[ 'leden_lijst' ] ) )
{
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
if( $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersnaam' ] != $gebruikersnaam && $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ] != $i )
{
$bestaat = true;
}
}
}
else
{
$bestaat = false;
$_SESSION[ 'leden_lijst' ] = array();
$_SESSION[ 'leden_lijst' ][ 0 ] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
if( $bestaat )
{
$i = 1;
foreach( $_SESSION[ 'leden_lijst' ] as $sleutel => $waarde )
{
if( $i == count( $_SESSION[ 'leden_lijst' ]) )
{
$nieuw = $sleutel++;
}
$i++;
}
echo $nieuw;
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
$_SESSION[ 'leden_lijst' ][] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
}
?>
if( isset( $_SESSION[ 'leden_lijst' ] ) )
{
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
if( $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersnaam' ] != $gebruikersnaam && $_SESSION[ 'leden_lijst' ][ $i ][ 'gebruikersid' ] != $i )
{
$bestaat = true;
}
}
}
else
{
$bestaat = false;
$_SESSION[ 'leden_lijst' ] = array();
$_SESSION[ 'leden_lijst' ][ 0 ] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
if( $bestaat )
{
$i = 1;
foreach( $_SESSION[ 'leden_lijst' ] as $sleutel => $waarde )
{
if( $i == count( $_SESSION[ 'leden_lijst' ]) )
{
$nieuw = $sleutel++;
}
$i++;
}
echo $nieuw;
for( $i = 0; $i < count( $_SESSION[ 'leden_lijst' ] ); $i++ )
{
$_SESSION[ 'leden_lijst' ][] = array( 'gebruikersid' => $gebruikersid,
'gebruikersnaam'=> $gebruikersnaam
);
}
}
?>
Je zegt dat de innerhtml van de gebruikers lijst vervangen moet worden met de nieuwe gebruiker.
Wat ik zou doen is de getdata een fucntie laten uitvoeren bij succes, die een element binnen die div maakt.
Met een JS framework gaat dat iets makkelijker uiteraard en dat beveel ik je dan ook aan met zoveel ajax en js.
met protoype bijvoorbeel gebruik ik dan new Insertion.After
omdat elke gebruiker dan een element is, ipv een regeltje tekst is het ook veel gemakkelijker deze te verwijderen
En hoe doe ik dit dan precies? Is er misschien een stukje code en/of voorbeeld?
Beetje tragisch dat ik nu al zo gewend ben aan framework scripting dat ik niet meer zonder kan :(