PHP SELF
In mijn form worden namen gewijzigd. na deze wijziging is het de bedoeling dat ik in dezelfde pagina de reeds getoonde lijst krijg maar nu met gewijzigde namen.
Tot mijn grote ergenis krijg ik de pagina wel opnieuw maar met daarin nog steeds de oude waardes..
met
krijg ik een lege pagina terug
doe ik action="" in mijn form aanroep dan werkt alles goed maar krijg ik de pagina terug met oude waarden.
De update moet plaatsvinden nadat ik de volgende code uitvoer :
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
if($Wijzigen){
for($a=0;$a<$count;$a++){
$sql1="UPDATE ritten SET Klant='$Klant[$a]' WHERE ritID='$ritID[$a]'";
$result1=mysql_query($sql1) or trigger_error(mysql_error());;
}
[/code]
if($Wijzigen){
for($a=0;$a<$count;$a++){
$sql1="UPDATE ritten SET Klant='$Klant[$a]' WHERE ritID='$ritID[$a]'";
$result1=mysql_query($sql1) or trigger_error(mysql_error());;
}
[/code]
Waarschijnlijk staat de UPDATE-query na de SELECT-query in je script.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
if($Wijzigen)
{
for($a=0; $a<$count; $a++)
{
$sql1 = "UPDATE
ritten
SET
Klant='".$Klant[$a]."'
WHERE
ritID='".$ritID[$a]."'";
$result1 = mysql_query($sql1) or trigger_error(mysql_error());
}
}
?>
if($Wijzigen)
{
for($a=0; $a<$count; $a++)
{
$sql1 = "UPDATE
ritten
SET
Klant='".$Klant[$a]."'
WHERE
ritID='".$ritID[$a]."'";
$result1 = mysql_query($sql1) or trigger_error(mysql_error());
}
}
?>
Daarnaast, wat doe je als een query mislukt? Je wilt bijvoorbeeld de nummers 1 t/m 10 updaten, maar de query bij het updaten van 3 is gefaald?
Om even naar je probleem te gaan. Probeer na een succesvolle update eens een header naar de huidge pagina te doen:
Echter dat is in deze code niet het probleem.
Ook na
header('Location: '.$_SERVER['PHP_SELF']);
wordt de getoonde data niet vernieuwd. Ik krijg dus nog steeds de oude info te zien. Dit ondanks dat de waarden in de tabel zijn gewijzigd.
Zodra ik de if(submit) update voor de select zet krijg ik een foutmelding.
Ik blijf waardes zien die ik voor het submitten had staan, dit terwijl ze in de database wel degelijk veranderd zijn.
Ook PHPSELF lijkt niet te werken omdat ik de pagina reeds open met geselecteerde waardes uit een voorgaand formulier ($Costcenter selectie)
kijk svp even niet naar een onnette indeling daar ik de code inmiddels al een keer of 100 veranderd heb in de hoop een oplossing te vinden. Ben namelijk al circa een week met dit probleem aan het stoeien.
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
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
<html>
<head>
// hier staat opmaak code welke ik vanwege de lengte heb weggelaten
<?
include("db.php");
?>
</head>
<body bgcolor="white">
<div align="center">
<?
ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
for($i=0; $i<sizeof($_GET['checkbox']); $i++)
{
$Costcenternr = $_GET['checkbox'][$i];
mysql_select_db($dbName) or die("Unable to select database $dbName");
$query = "SELECT ritID, Datum, DATE_FORMAT(Datum,'%d-%m-%Y') as ritdatum, DATE_FORMAT(Datum,'%m') AS maand, Start, Eind, Bedrag, Klant, Contant, Costcenter, Factuurnr FROM ritten WHERE Costcenter = '$Costcenternr' AND Factuurnr IS NULL ORDER by Datum";
$result = mysql_query($query) or trigger_error(mysql_error());
$count=mysql_num_rows($result);
?>
<div align="center">
<br>
<form name="updateform" method="post" action="">
<table class="style13">
<tr class="style13">
<td colspan="5" align="center" class="style13">Costcenter = <? echo $Costcenternr ;?> </td>
</tr><tr class="style13">
<th width="70" class="style13">Datum</th>
<th width="163" class="style13">Start</th>
<th width="163" class="style13">Eind</th>
<th width="163" class="style13">Klant</th>
</tr><tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<input name="ritID[]" type="hidden" id="ritID" value="<? echo $rows['ritID']; ?>">
<td class="style13" width="70"><? echo $rows['ritdatum']; ?></td>
<td class="style13" width="163"><? echo $rows['Start']; ?></td>
<td class="style13" width="163"><? echo $rows['Eind']; ?></td>
<td class="style13" width="163"><input name="Klant[]" type="text" id="Klant" value="<? echo $rows['Klant']; ?>"></td>
</tr>
<?php
}
}
?>
<tr>
<td colspan="7" align="center" bgcolor="#FFFFFF"><input name="submit" type="submit" value="Verwerk"></td>
</tr>
<?
?>
</table>
</form>
<?
if($submit){
for($a=0;$a<$count;$a++){
$sql1="UPDATE $tbl_name SET Klant='$Klant[$a]' WHERE ritID='$ritID[$a]'";
$result1=mysql_query($sql1);
}
?>
</div>
</body>
</html>
<head>
// hier staat opmaak code welke ik vanwege de lengte heb weggelaten
<?
include("db.php");
?>
</head>
<body bgcolor="white">
<div align="center">
<?
ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
for($i=0; $i<sizeof($_GET['checkbox']); $i++)
{
$Costcenternr = $_GET['checkbox'][$i];
mysql_select_db($dbName) or die("Unable to select database $dbName");
$query = "SELECT ritID, Datum, DATE_FORMAT(Datum,'%d-%m-%Y') as ritdatum, DATE_FORMAT(Datum,'%m') AS maand, Start, Eind, Bedrag, Klant, Contant, Costcenter, Factuurnr FROM ritten WHERE Costcenter = '$Costcenternr' AND Factuurnr IS NULL ORDER by Datum";
$result = mysql_query($query) or trigger_error(mysql_error());
$count=mysql_num_rows($result);
?>
<div align="center">
<br>
<form name="updateform" method="post" action="">
<table class="style13">
<tr class="style13">
<td colspan="5" align="center" class="style13">Costcenter = <? echo $Costcenternr ;?> </td>
</tr><tr class="style13">
<th width="70" class="style13">Datum</th>
<th width="163" class="style13">Start</th>
<th width="163" class="style13">Eind</th>
<th width="163" class="style13">Klant</th>
</tr><tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<input name="ritID[]" type="hidden" id="ritID" value="<? echo $rows['ritID']; ?>">
<td class="style13" width="70"><? echo $rows['ritdatum']; ?></td>
<td class="style13" width="163"><? echo $rows['Start']; ?></td>
<td class="style13" width="163"><? echo $rows['Eind']; ?></td>
<td class="style13" width="163"><input name="Klant[]" type="text" id="Klant" value="<? echo $rows['Klant']; ?>"></td>
</tr>
<?php
}
}
?>
<tr>
<td colspan="7" align="center" bgcolor="#FFFFFF"><input name="submit" type="submit" value="Verwerk"></td>
</tr>
<?
?>
</table>
</form>
<?
if($submit){
for($a=0;$a<$count;$a++){
$sql1="UPDATE $tbl_name SET Klant='$Klant[$a]' WHERE ritID='$ritID[$a]'";
$result1=mysql_query($sql1);
}
?>
</div>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Ton
zoals eerder vermeld doe je pas een update na je select query...
je moet je update query even naar boven verplaatsen
Nu roep ik deze form aan met een multiselectbox zoals je bovenaan kun zien. Is het mogelijk om de $Costcenters array nu mee te nemen naar een volgend bestand ?
Zoals je waarschijnlijk al begrijpt is het de bedoeling diverse costcenters te selecteren, dan te controleren of alle gegevens (namen) juist zijn en deze eventueel aan te passen en vervolgens een rekening aan te maken.
Onderaan het formulier komt nu namelijk nog een 2e submit (nieuwe form) die naar een ander document (verwerk.php) moet gaan.
Het gaat daarbij om de costcenters die ik in het formulier opriep met
Ton