Het Cijfer 1
Ik zit met een rare bug/stomme fout in php.
Ik heb een formulier met een submitknop. Wanneer ik op deze knop druk worden de gegevens verwerkt in de database, en krijg ik een message welke aangeeft dat de gegevens zijn verwerkt 1.
Nee dat is geen typfout hij zegt letterlijk "Uw gegevens zijn verwerkt 1." Kortom hij plakt er het cijfer 1 aanvast. Welke ik NERGENS terug kan vinden in het script. In het formulier staat het cijfertje nergens totdat ik op submit druk. Is dit een bijvrschijnsel met het wegschrijven in de database? Waar wordt deze 1 door gegenereerd?
Alvast bedankt :)
heb je een stukje code.. kunnen we wat meer mee..
TRUE wil nog wel eens hetzelfde zijn als 1
daar kunnen we iets meer mee.
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
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
<?php
if (isset($_POST['submit']) && $_POST['voornaam']) {
$sql = "UPDATE `user` SET `voornaam` = '".$_POST['voornaam']."', `usergroup` = 'client'
WHERE `userid` = '$USER'";
$res = mysql_query($sql);
if ($res)
{
echo "<table><tr><td width=75> </td><td colspan=5><br><br>De gegevens zijn aangepast!<br>Klik <a href=viewuser.php?USER=$USER>hier</a> om door te gaan.<br></td></tr></table><br><br>";
}
} else {
echo "<table border=0 cellspacing=0 cellpadding=2 class=table><form method=\"POST\" action=\"edituser.php?ENQUETE=$ENQUETE&USER=$USER\" class=\"table\"";
echo "<tr><td width=75></td><td width=40>Voornaam</td><td align=right>*</td>";
echo "<td><input type=\"text\" name=\"voornaam\" value=\"$VOORNAAM\" class=\"form\"></td></tr>";
echo "<tr><td width=75></td><td> </td><td> </td>";
echo "<td><input type=\"submit\" name=\"submit\" value=\"Aanpassen\" class=\"knop\"></td></tr>";
echo "</form></table></div><br><br>";
}
?>
if (isset($_POST['submit']) && $_POST['voornaam']) {
$sql = "UPDATE `user` SET `voornaam` = '".$_POST['voornaam']."', `usergroup` = 'client'
WHERE `userid` = '$USER'";
$res = mysql_query($sql);
if ($res)
{
echo "<table><tr><td width=75> </td><td colspan=5><br><br>De gegevens zijn aangepast!<br>Klik <a href=viewuser.php?USER=$USER>hier</a> om door te gaan.<br></td></tr></table><br><br>";
}
} else {
echo "<table border=0 cellspacing=0 cellpadding=2 class=table><form method=\"POST\" action=\"edituser.php?ENQUETE=$ENQUETE&USER=$USER\" class=\"table\"";
echo "<tr><td width=75></td><td width=40>Voornaam</td><td align=right>*</td>";
echo "<td><input type=\"text\" name=\"voornaam\" value=\"$VOORNAAM\" class=\"form\"></td></tr>";
echo "<tr><td width=75></td><td> </td><td> </td>";
echo "<td><input type=\"submit\" name=\"submit\" value=\"Aanpassen\" class=\"knop\"></td></tr>";
echo "</form></table></div><br><br>";
}
?>
"De gegevens zijn verwerkt!"
Uitroep teken = shift + 1
Voorderest kan die 1 er alleen komen als jij echo't
En zoals de rest al zei: Als je de code plaatst kunnen we kijken.
niet getest maar probeer deze eens :)
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($_POST as $value)
{
if(empty($value))
{
$error = 'Er zijn nog open velden';
}
}
if(isset($error))
{
echo $error;
}
else {
$sql = "UPDATE user SET voornaam = '".mysql_real_escape_string($_POST['voornaam'])."' && usergroup = 'client' WHERE userid = '".$USER."'";
if($res = mysql_query($sql))
{
echo '<table><tr><td width="75"> </td><td colspan="5"><br><br>De gegevens zijn aangepast!<br>Klik <a href=viewuser.php?USER='.$USER.'>hier</a> om door te gaan.<br></td></tr></table><br><br>';
}
} else
{
echo '<table border="0" cellspacing="0" cellpadding="2" class="table"><form method="POST" action="edituser.php?ENQUETE='.$ENQUETE.'&USER='.$USER.'" class="table">';
echo '<tr><td width="75"></td><td width="40">Voornaam</td><td align="right">*</td>';
echo '<td><input type="text" name="voornaam" value="'.$VOORNAAM.'" class="form"></td></tr>';
echo '<tr><td width="75"></td><td> </td><td> </td>';
echo '<td><input type="submit" name="submit" value="Aanpassen" class="knop"></td></tr>';
echo '</form></table></div><br><br>';
}
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
foreach($_POST as $value)
{
if(empty($value))
{
$error = 'Er zijn nog open velden';
}
}
if(isset($error))
{
echo $error;
}
else {
$sql = "UPDATE user SET voornaam = '".mysql_real_escape_string($_POST['voornaam'])."' && usergroup = 'client' WHERE userid = '".$USER."'";
if($res = mysql_query($sql))
{
echo '<table><tr><td width="75"> </td><td colspan="5"><br><br>De gegevens zijn aangepast!<br>Klik <a href=viewuser.php?USER='.$USER.'>hier</a> om door te gaan.<br></td></tr></table><br><br>';
}
} else
{
echo '<table border="0" cellspacing="0" cellpadding="2" class="table"><form method="POST" action="edituser.php?ENQUETE='.$ENQUETE.'&USER='.$USER.'" class="table">';
echo '<tr><td width="75"></td><td width="40">Voornaam</td><td align="right">*</td>';
echo '<td><input type="text" name="voornaam" value="'.$VOORNAAM.'" class="form"></td></tr>';
echo '<tr><td width="75"></td><td> </td><td> </td>';
echo '<td><input type="submit" name="submit" value="Aanpassen" class="knop"></td></tr>';
echo '</form></table></div><br><br>';
}
}
?>
Edit:
Ik heb niks aan je tabellen veranderd, zelfs niet eens naar gekeken wat het deed...
Ik zou eens gaan kijken naar css, het is ontzettend handig en kwa kb's scheelt het ook wel een hoop.
Jan Koehoorn heeft een prima tutorial geschreven over formulieren opmaken met css, die kan je vinden op zijn website: www.jankoehoorn.nl
Ik heb niks aan je tabellen veranderd, zelfs niet eens naar gekeken wat het deed...
Ik zou eens gaan kijken naar css, het is ontzettend handig en kwa kb's scheelt het ook wel een hoop.
Jan Koehoorn heeft een prima tutorial geschreven over formulieren opmaken met css, die kan je vinden op zijn website: www.jankoehoorn.nl
Gewijzigd op 01/01/1970 01:00:00 door Erik Rijk
@Jordy. Ik weet dat een ! shift+1 is :) En ik heb daarom ook het hele document doorlaten zoken op een soortgelijke typfout. Maar dat is dus niet het geval.
uhm.
die foreach zorgt ervoor dat alle $_POST variabelen in de variabele $value komen.
dan kan je met dat ene regeltje code kijken of je $_POST variabelen gevuld zijn.
in php gebruik je enkele quotes met echo's dan hoef je je html niet te escapen binnen die echo...
de rest spreekt geloof ik wel voor zich.
Code (php)
Edit: Dit houdt in dat deze manier dus fout is.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Code (php)
1
2
3
2
3
<?
echo '<td><input type="text" name="voornaam" value="'.$VOORNAAM.'" class="form"></td></tr>';
?>
echo '<td><input type="text" name="voornaam" value="'.$VOORNAAM.'" class="form"></td></tr>';
?>
wat is $VOORNAAM? waar haal je die vandaan?
Ik heb het vermoeden dat je daar $_POST['voornaam'] moet gebruiken.
Ik had zoeweiso wat uit het script gehaald, vanwege anonimiteit, maar verder enigzins wel kloppend gelaten. Dingen als $VOORNAAM Worden bovenin het script aangegeven maar die heb ik er hier even uit gelaten.
@SanThe. Dat zou het dan inderdaad kunnen zijn, ik zal eens opzoek gaan naar een return True.
$res = mysql_query($sql);
gebruik van een Query welke $sql heet, en daarna
print "$res"; gebruik.
Krijg ik dan hetzelfe effect als een return True?
Dat was het dus. Een collega van me had het $res laten printen op die plek waar het dus voorkomt. Kortom als het resultaat geleverd word print hij de True inderdaad.
Kortom een foutje bij onze interne communicatie :P ;) Toch bedankt iedereen. Vooral SanThe die me op het idee bracht :)