Probleem met PHP/MYSQL
Waar mense zeg maar een profiel content kunne opmaken zoals leeftijd, content, origin enzoverder.
M'n view profile werkt perfect, die haalt alles van de database... Maar als ik edit profile doe, zegt ie succesvol gewijzigd, maar... er veranderd niks in de database ofzo.
Ik ben al dagen aan het kloten zeg maar... En ik vind het gewoonweg niet.
Hieronder m'n script toegevoegd.
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
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
<?php
ob_start();
$passwordthatmustbesecret = "*****";
$hostthatmustbesecret = "localhost";
$usernamethatmustbesecret = "*****";
$databasethatmustbesecret = "******";
$tbl = "tz_members";
$data->login = ($_SESSION['usr']);
mysql_query(addslashes("UPDATE tz_members SET url, info, laand, age ={$data->url}, {$data->info}, {$data->laand}, {$data->age} WHERE login={$data->login}"));
print " <tr><td class=\"mainTxt\"><a href=\"profile.php?x={$data->login}\">Look at your profile</a></td></tr>\n";
if(isset($_POST['submit'])) {
$data->login = ($_SESSION['usr']);
$data->url = preg_replace('/\</','<',$_POST['url']);
$data->info = preg_replace('/\</','<',substr($_POST['info'],0,500000));
$data->laand = preg_replace('/\</','<',substr($_POST['laand'],0,36));
$data->age = preg_replace('/\</','<',$_POST['age']);
$data->url = htmlspecialchars($data->url);
$data->laand = htmlspecialchars($data->laand);
$data->age = htmlspecialchars($data->age);
print " <tr><td class=\"mainTxt\">You successfully updated your profile!</td></tr>\n";
exit;
}
$data->url = addslashes($data->url);
$data->info = addslashes($data->info);
$data->info = str_replace("\'","'",$data->info);
$data->laand = addslashes($data->laand);
$data->age = addslashes($data->age);
?>
ob_start();
$passwordthatmustbesecret = "*****";
$hostthatmustbesecret = "localhost";
$usernamethatmustbesecret = "*****";
$databasethatmustbesecret = "******";
$tbl = "tz_members";
$data->login = ($_SESSION['usr']);
mysql_query(addslashes("UPDATE tz_members SET url, info, laand, age ={$data->url}, {$data->info}, {$data->laand}, {$data->age} WHERE login={$data->login}"));
print " <tr><td class=\"mainTxt\"><a href=\"profile.php?x={$data->login}\">Look at your profile</a></td></tr>\n";
if(isset($_POST['submit'])) {
$data->login = ($_SESSION['usr']);
$data->url = preg_replace('/\</','<',$_POST['url']);
$data->info = preg_replace('/\</','<',substr($_POST['info'],0,500000));
$data->laand = preg_replace('/\</','<',substr($_POST['laand'],0,36));
$data->age = preg_replace('/\</','<',$_POST['age']);
$data->url = htmlspecialchars($data->url);
$data->laand = htmlspecialchars($data->laand);
$data->age = htmlspecialchars($data->age);
print " <tr><td class=\"mainTxt\">You successfully updated your profile!</td></tr>\n";
exit;
}
$data->url = addslashes($data->url);
$data->info = addslashes($data->info);
$data->info = str_replace("\'","'",$data->info);
$data->laand = addslashes($data->laand);
$data->age = addslashes($data->age);
?>
<tr><td class="mainTxt">
<form method="post"><table align="center">
<tr><td width=100>Country:</td> <td><input type="text" name="{$data->laand}"></td></tr>
<tr><td width=100>Age:</td> <td><input type="text" name="{$data->age}"></td></tr>
<tr><td width=100>Avatar:</td> <td><input type="text" name="{$data->url}"></td></tr>
<tr><td width=100 valign="top">Profile content:<br><br>
<td><textarea name="{$data->info}" cols=30 rows=10></textarea></td></tr>
<tr><td></td> <td align="right"><input type="submit" name="submit" value="Update"></td></tr>
</table></form></td></tr></table>
UPDATE tz_members SET url, info, laand, age ={$data->url}, {$data->info}, {$data->laand}, {$data->age} WHERE login={$data->login}
Weet je zeker dat dit werkt?
Maar ik heb al vanalles probere wijzige, tot zelfs gwn $url enz... maar werkt gwn ni xD
ervoor was het set url={data-url} etc.
En ik zou zeg maar ook een gewone update query er van maken.
Ik mis zeg maar een foutafhandeling in je query.
Misschien al geprobeerd om te debuggen?
Ik heb al heel veel geprobeerd. En ik heb m'n debug al geactiveerd, en krijg gwn enorm veel errors over m'n variables en dat hij geen verbinding kan maken met m'n database zeg maar.
Errors die ik te zien krijg :
Notice: Undefined variable: url in public_html/NL/editprofile.php on line 13
Notice: Undefined variable: info in public_html/NL/editprofile.php on line 13
Notice: Undefined variable: laand in public_html/NL/editprofile.php on line 13
Notice: Undefined variable: age in public_html/NL/editprofile.php on line 13
Warning: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO) in public_html/NL/editprofile.php on line 13
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /public_html/NL/editprofile.php on line 13
Notice: Undefined variable: data in public_html/NL/editprofile.php on line 15
Notice: Trying to get property of non-object in public_html/NL/editprofile.php on line 15
Notice: Undefined variable: url in public_html/NL/editprofile.php on line 31
Notice: Undefined variable: info in public_html/NL/editprofile.php on line 32
Notice: Undefined variable: laand in public_html/NL/editprofile.php on line 34
Notice: Undefined variable: age in public_html/NL/editprofile.php on line 35
Ik geef toch duidelijk dat hij met een paswoord etc m'n database moet accesse?
Ik ben nog beetje newbie in PHP scripting. Als er iemand me kan helpen via MSN ofzo? Is misschien gemakkelijker.
Die errors zijn er niet voor niets. Die eerst dus oplossen.
Waarom op regel 4 in je script php afsluiten en direct daarna weer openen?
Gebruik een ob_start, maar programmeer gewoon goed.
Ik zie een tabel die 2x wordt afgesloten, maar nergens wordt gestart.
In je form mis je volgens mij een action.
Waarom maak je verbinding met je database?
$_POST['submit']) wordt sterk afgeraden.
Gebruik in php bij voorkeur ' en in html " --> scheelt een boel keer escapen, is overzichtelijker en kans op fouten is kleiner.
En zoals Erwin aangeeft; het is een heel creatieve manier om je query op te bouwen.
Dus: eerst netjes programmeren, fouten oplossen. Debug: controleer of er verbinding is met db, controleer of de query dat bevat dat je zou verwachten, etc. etc.
Edit: denk dat SanTHe gelijk heeft; is veel sneller/beter ;-)
Gewijzigd op 10/12/2011 15:14:21 door Obelix Idefix
Van de database connection ben ik al verlost. :p
Over die ($_POST['submit']), op de plek waar hij staat mag ik geen ' of " gebruiken, dan krijg ik een T_ fout :p
De fouten die ik nu krijg zijn
Notice: Undefined variable: data in /public_html/NL/editprofile.php on line 14
Notice: Trying to get property of non-object in /public_html/NL/editprofile.php on line 14
Kenneth De Cock op 10/12/2011 15:21:39:
Notice: Undefined variable: data in /public_html/NL/editprofile.php on line 14
Notice: Trying to get property of non-object in /public_html/NL/editprofile.php on line 14
Notice: Trying to get property of non-object in /public_html/NL/editprofile.php on line 14
Dat slaat op deze regel.
$data->login = ($_SESSION['usr']);
Je wilt hier iets doen met een object dat niet bestaat. Verder vraag ik mij af waarom er haakjes staan om de session-var. Ook vraag ik mij af of de session wel bestaat omdat session_start() nergens te zien is.
Gewijzigd op 10/12/2011 15:28:41 door - SanThe -
Die regel is nu aangepast en zet nu alle data-> login om naar de usernaam die de sessie gebruiker heeft.