login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Delete fout maar vind ze niet

Offline DenMette - 03/07/2006 11:05 (laatste wijziging 04/07/2006 20:33)
Avatar van DenMettePHP gevorderde
  1. <?php
  2. if($status == 'beheerder' || $status == 'co-beheerder' || $status == 'admin')
  3. {
  4. if($_GET['methode'] == 'reply')
  5. {
  6. $id = $_GET['id'];
  7. if(is_numeric($id)){
  8. $query = mysql_query("Select * FROM cm_replys WHERE id='".$id."'") or die(mysql_error());
  9. $del = mysql_fetch_assoc($query);
  10. $geb = $del['poster'];
  11. $delete = deletebonuspunt($geb, 1);
  12. if($delete){
  13. echo 'Er is een fout opgetereden.';
  14. }else{
  15. mysql_query("DELETE FROM cm_replys WHERE id='".$id."'") or die(mysql_error());
  16. header('Location: ?pag=forum/topic&id='.$_GET['tid'].'&cat='.$_GET['cat']);
  17. }
  18. }else{
  19. echo 'FOUT';
  20. header('Refresh: 2; URL=?pag=forum/topic&id='.$_GET['tid'].'&cat='.$_GET['cat']);
  21. }
  22. }
  23. elseif($_GET['methode'] == 'type' && ($status == 'beheerder' || $status == "co-berheerder"))
  24. {
  25. $id = $_GET['id'];
  26. if(is_numeric($id)){
  27. $query = mysql_query("SELECT * FROM cm_topics WHERE id='".$id."'") or die(mysql_error());
  28. $delT = mysql_fetch_assoc($query);
  29. $gebT = $delT['poster'];
  30. $delete = deletebonuspunt($gebT, 1);
  31. if($delete){
  32. echo 'Er is een fout opgetereden.';
  33. }else{
  34. mysql_query("DELETE FROM cm_topics WHERE id='".$id."'") or die(mysql_error());
  35. }
  36. $sql = mysql_query("SELECT * FROM cm_replys WHERE top_id='".$id."'") or die(mysql_error());
  37. if(mysql_num_rows($sql) != 0)
  38. {
  39. while($asc = mysql_fetch_assoc($sql))
  40. {
  41. $user = $asc['poster'];
  42. $sql = mysql_query("SELECT * FROM cm_replys WHERE top_id=".$id." AND poster='".$user."'") or die(mysql_error());
  43. $aantal = mysql_num_rows($sql);
  44. deletebonuspunt($user, $aantal);
  45. mysql_query("DELETE FROM cm_replys WHERE top_id='".$id."' AND poster='".$user."'") or die(mysql_error());
  46. }
  47. }
  48. header('Location: ?pag=forum/topic_lijst&cat='.$_GET['cat']);
  49. }
  50. }else{
  51. echo 'FOUT';
  52. header('Refresh: 2; URL=?pag=forum/topic&id='.$_GET['tid'].'&cat='.$_GET['cat']);
  53. }
  54. }else{
  55. header('Location: ?pag=home');
  56. }
  57. ?>


Nu heb ik een probleem met het verwijderen van het topic de is_numeric doet moeilijk

12 antwoorden

Gesponsorde links
Offline roelh - 03/07/2006 11:12
Avatar van roelh PHP gevorderde kun je imsschien eventjes tussen <? en ?> zetten? 
Offline DenMette - 03/07/2006 11:17
Avatar van DenMette PHP gevorderde gebuert

vergeten sorry
Offline marten - 03/07/2006 11:22 (laatste wijziging 03/07/2006 11:24)
Avatar van marten Beheerder 1. SQL commando's zijn altijd met hoofdletters dus Delete moet zijn DELETE

2. ik ga verder kijken

mmm echt rare manier van werken heb jij :S

Doe eens normaal --->
$var = mysql_query();
$var2 = mysql_fetch_assoc($var);
enz
enz
Offline DenMette - 03/07/2006 11:25 (laatste wijziging 03/07/2006 11:27)
Avatar van DenMette PHP gevorderde
Citaat:
1. SQL commando's zijn altijd met hoofdletters dus Delete moet zijn DELETE


Toch niet ik gebruik soms hoofdletters en alles werkt altijd prima
Offline marten - 03/07/2006 11:28 (laatste wijziging 03/07/2006 11:29)
Avatar van marten Beheerder wil je beetje proper scripten dan zijn het met hoofdletters maar dat moet jezelf weten. Net zoiets als bijvoorbeeld $sQuery meestal $query genoemd maar je kan in de variabele naam aflezen dat het een string is..... Dit werkt gewoon zoveel handiger..... maar dat moet je zelf maar weten.....

deletebonuspunt($gebT, 1);

Ik neem aan dat de functie deletebonuspunt wel gedefinieerd is?

Je moet ook op je foutcontrole letten.
Dus
$sVar = deletebonuspunt($gebT, 1);
if(!$sVar) {
echo 'Fout in de functie';
}
Offline DenMette - 03/07/2006 11:37 (laatste wijziging 03/07/2006 11:38)
Avatar van DenMette PHP gevorderde Zo wat betere code??

@marten
Ik snap niet goed wat je bedoeld
Offline marten - 03/07/2006 11:42 (laatste wijziging 03/07/2006 11:46)
Avatar van marten Beheerder je hebt in je code

deletebonuspunt($gebT, 1);

staan. Dit is een functie. Maar je controleert niet of die functie wel gelukt is daarna. Evenals je query's. Je doet nergens aan foutafhandeling. Dit is een zeer belangrijk punt in scripten / programmeren. En bij query's word trouwens or die(mysql_error()) sterk afgeraden!. Alleen om te debuggen mag je dit gebruiken. Als je website online draait (dus open is voor bezoeker en dergelijke) mag er nergens een or die komen!

Verder variabelenamen.

$var weet je niet wat dit nou is. Daarom zetten ze (bij grote projecten) de eerste letter van het type ervoor. Dus

string ---> $var word $sVar
double ---> $var word $dVar
array --> $var word $aVar

enzovoort....

Ditzelfde geld voor mysql commando's met hoofdletters. Het zal wel werken met kleine letters maar gebruikelijk is met hoofdletters. Dit is gewoon zoveel handiger voor een ander om te debuggen (of als je met een groep script).

En zet eens voor de gein error_reporting(E_ALL) boven je scripts. en probeer dan de fouten eruit te halen Leer je echt veel van en als je dit vanaf het begin van een nieuw script doet is je script al van hoger niveau dan wanneer je het niet doet (Kan ook in je php.ini standaard aanstaan maar wanneer dit niet zo is even erboven zetten )
Offline Lemon - 03/07/2006 11:47
Avatar van Lemon PHP expert @ marten:

Ik heb nog geen enkel groot project gezien die de hungarian style gebruiken (1 letter code voor het type). Dat is zelfs afgeraden omdat het de code er enkel maar onduidelijker op maakt.

En over die foutafhandeling in die functie. Die kan evengoed in de functie zelf zitten ;)
Offline DenMette - 03/07/2006 13:45 (laatste wijziging 03/07/2006 13:45)
Avatar van DenMette PHP gevorderde
  1. <?
  2. if($status == 'beheerder' || $status == 'co-beheerder' || $status == 'admin')
  3. {
  4. if($_GET['methode'] == 'reply')
  5. {
  6. $id = $_GET['id'];
  7. $query = mysql_query("Select * FROM cm_replys WHERE id='".$id."'") or die(mysql_error());
  8. $del = mysql_fetch_assoc($query);
  9. $geb = $del['poster'];
  10. $delete = deletebonuspunt($geb, 1);
  11. if(!$delete){
  12. echo 'Er is een fout opgetereden.';
  13. }else{
  14. mysql_query("DELETE FROM cm_replys WHERE id='".$id."'") or die(mysql_error());
  15. header('Location: ?pag=forum/topic&id='.$_GET['tid'].'&cat='.$_GET['cat']);
  16. }
  17. }
  18. elseif($_GET['methode'] == 'type')
  19. {
  20. $id = $_GET['id'];
  21. $query = mysql_query("SELECT * FROM cm_topics WHERE id='".$id."'") or die(mysql_error());
  22. $delT = mysql_fetch_assoc($query);
  23. $gebT = $delT['poster'];
  24. $delete = deletebonuspunt($gebT, 1);
  25. if(!$delete){
  26. echo 'Er is een fout opgetereden.';
  27. }else{
  28. mysql_query("DELETE FROM cm_topics WHERE id='".$id."'") or die(mysql_error());
  29. }
  30. $sql = mysql_query("SELECT * FROM cm_replys WHERE top_id='".$id."'") or die(mysql_error());
  31. if(mysql_num_rows($sql) != 0)
  32. {
  33. while($asc = mysql_fetch_assoc($sql))
  34. {
  35. $user = $asc['poster'];
  36. $sql = mysql_query("SELECT * FROM cm_replys WHERE top_id=".$id." AND poster='".$user."'") or die(mysql_error());
  37. $aantal = mysql_num_rows($sql);
  38. deletebonuspunt($user, $aantal);
  39. mysql_query("DELETE FROM cm_replys WHERE top_id='".$id."' AND poster='".$user."'") or die(mysql_error());
  40. }
  41. }
  42. header('Location: ?pag=forum/topic_lijst&cat='.$_GET['cat']);
  43. }
  44. }else{
  45. header('Location: ?pag=home');
  46. } ?>


Dit is de code en nu doet hij het wel
Offline marten - 03/07/2006 16:10
Avatar van marten Beheerder nice misschien nog je id controleren of het wel echt een id is 
Offline Thomas - 03/07/2006 16:34
Avatar van Thomas Moderator Ik hoop dat je (co)-beheerders en admins betrouwbare personen zijn, want op deze manier kun je volgens mij de hele tabel cm_topics of cm_replys leegmieteren .
Offline DenMette - 03/07/2006 16:45 (laatste wijziging 04/07/2006 20:33)
Avatar van DenMette PHP gevorderde Ja natuurlijk ik ben Co-beheerder en de Beheerder doe moet mij maar vertrouwen maar ik ben er nog niet zeker van dat admins dit moeten kunnen!!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.353s