login  Naam:   Wachtwoord: 
Registreer je!
 Forum

waarom werkt dit niet

Offline brechtjeu - 24/09/2005 13:12 (laatste wijziging 24/09/2005 14:21)
Avatar van brechtjeuOnbekend loo iedereen,
ik ben bezig met een gbtje en stuite op het probleem om berichten te verwijderen bijv als er een plezante de hele tijd berichten post...

ok ik weet neit of dit de beste manier is maar dat geeft niet, ik werk ZONDER mysql

code om te verwijderen:
  1. if($pagina == verwijderen) {
  2. $bericht_verwijderen = "<table class='tabeln' align='center' width='600'>\n
  3. <tr><td><font face='lucida console' color='white' size='2'><b>$naam</b> &lt;$email&gt; [$datum]</font></td></tr>\n
  4. </table>\n
  5. <table class='tabelb' align='center' width='600' height='150'>\n
  6. <tr><td style='vertical-align: top;'><font face='lucida console' col or='white' size='2'>$bericht</font></td></tr>\n
  7. </table>
  8. <table class='tabeln' align='center' width='600'><tr><td><a href='?pagina=verwijderen&naam=$naam&email=$email&datum=$datum&bericht=$bericht'><img border='0' src='VERWIJDEREN.PNG' /></a></td></tr></table><br>";
  9.  
  10. $file = "GB.PHP";
  11. $fopenr = fopen ($file, "r");
  12. $inhoud = fread ($fopenr, filesize ($file));
  13. $fopenw = fopen($file, "w+");
  14. fwrite($fopenw, "$inhoud-$bericht_verwijderen");
  15. }


link die naar verwijderpagina gaat:
  1. <a href='?pagina=verwijderen&naam=$naam&email=$email&datum=$datum&bericht=$bericht'><img border='0' src='VERWIJDEREN.PNG' /></a>

18 antwoorden

Gesponsorde links
Offline nemesiskoen - 24/09/2005 13:22
Avatar van nemesiskoen Gouden medaille

PHP expert
Strings kan je niet van elkaar aftrekken. Ik heb hier ooit wel eens een functie voor geschreven denk ik.
Even kijken.
(dan moet je wel zeker zijn dat $bericht,etc een waarde hebben)

File 1:
"verdeelArray.php";
  1. <?php
  2.  
  3. function verdeelArray($inputString, $element) {
  4.  
  5. $array = explode($element, $inputString);
  6.  
  7. for($i = 0; $i < count($array); $i++) {
  8.  
  9. $array[$i] = $element . $array[$i+1];
  10.  
  11. }
  12.  
  13. return verwijderLaatsteItem($array);
  14.  
  15. }
  16. function verwijderLaatsteItem($ingevoerdeArray) {
  17.  
  18. for($i = 0; $i < count($ingevoerdeArray)-1; $i++){
  19.  
  20. $array[] = $ingevoerdeArray[$i];
  21.  
  22. }
  23.  
  24. return $array;
  25.  
  26. }
  27. function htmlspecialcharsArray($inputArray){
  28.  
  29. for($i = 0; $i < count($inputArray); $i++) {
  30.  
  31. $inputArray[$i] = htmlspecialchars($inputArray[$i]);
  32.  
  33. }
  34.  
  35. return $inputArray;
  36.  
  37. }
  38. function implode_2($array, $iets=""){
  39. if($iets == "") {
  40. $string = "";
  41. for($i=0;$i<count($array);$i++){
  42. $string .= $array[$i];
  43. }
  44. }
  45. else {
  46. $string = implode($iets, $array);
  47. }
  48. return $string;
  49. }
  50. ?>

file2:
"test.php"
  1. <?php
  2.  
  3. require 'verdeelArray.php';
  4.  
  5. function aftrekkenString($string1, $string2) {
  6.  
  7. $array1 = verdeelArray($string1,"<");
  8. $array2 = verdeelArray($string2,"<");
  9.  
  10. $array3 = array_diff($array1, $array2);
  11. $array4 = array_diff($array2, $array1);
  12. $array3 = implode_2("", $array3);
  13. $array4 = implode_2("", $array4);
  14.  
  15. return htmlspecialchars($array3) . htmlspecialchars($array4);
  16.  
  17. }
  18.  
  19. $str1 = "<html>
  20. <head></head>
  21. <body>
  22. <table>
  23. <tr>
  24. <td>
  25. halo
  26. </td>
  27. </tr>
  28. </table>
  29. </body>
  30. </html>";
  31.  
  32. $str2 = "<html>
  33. <head></head>
  34. <body>
  35. <p>
  36. Dit is een zin
  37. </p>
  38. </body>
  39. </html>";
  40.  
  41. echo aftrekkenString($str1, $str2);
  42.  
  43. /*output:
  44. <table>
  45. <tr>
  46. <td>
  47. halo
  48. </td>
  49. </tr>
  50. </table>
  51. <p>
  52. Dit is een zin
  53. </p>
  54. */
  55. ?>
Offline brechtjeu - 24/09/2005 13:45
Avatar van brechtjeu Onbekend @ nemesiskoen: uh bestaat er niets simpeler, ik wil mijn code namelijk zo simpel mogelijk houden.
Offline XenoX - 24/09/2005 13:56
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
Kan je niet gewoon een str_replace doen?
  1. str_replace($bericht_verwijderen, '', $inhoud);

Zoiets
Offline brechtjeu - 24/09/2005 14:01 (laatste wijziging 24/09/2005 14:04)
Avatar van brechtjeu Onbekend slim gezien xenox, kzal es kijken wat ik ermee kan knutselen 

EDIT: maar hij moet wel de inhoud van het gastenboek niet veranderen door dat ene bericht hij moet gewoon dat ene bericht verwijderen
nu ja, kben nog aan het denken 
Offline Maarten - 24/09/2005 14:07
Avatar van Maarten Erelid
Citaat:
ik wil mijn code namelijk zo simpel mogelijk houden.


Als je altijd zo gaat redeneren ga je nooit tot een iets groter / geavanceerder systeem kunnen komen hoor...
Offline XenoX - 24/09/2005 14:08
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
Hoe staat het opgeslagen dan ?
Offline brechtjeu - 24/09/2005 14:11 (laatste wijziging 24/09/2005 14:14)
Avatar van brechtjeu Onbekend nu komt het bericht dat ik wil verwijderen erbij met die str_replace

EDIT: ik bedoelde de code voor et gastenboekje. want ik heb er daar gezien voor gbs, codes van 500 regels ... alleeen om een berichtje toe te voegen
Offline XenoX - 24/09/2005 14:12
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
Dan heb je de parameters denk ik verkeerd om opgegeven.
Offline brechtjeu - 24/09/2005 14:18 (laatste wijziging 24/09/2005 14:20)
Avatar van brechtjeu Onbekend het staat er nu al zes keers op en ik heb de parameters al gedraaid en gekeerd ..., kzal het script es posten en ondertussen goed bekijken.
  1. if($pagina == verwijderen) {
  2. $bericht_verwijderen = "<table class='tabeln' align='center' width='600'>\n
  3. <tr><td><font face='lucida console' color='white' size='2'><b>$naam</b> &lt;$email&gt; [$datum]</font></td></tr>\n
  4. </table>\n
  5. <table class='tabelb' align='center' width='600' height='150'>\n
  6. <tr><td style='vertical-align: top;'><font face='lucida console' col or='white' size='2'>$bericht</font></td></tr>\n
  7. </table>
  8. <table class='tabeln' align='center' width='600'><tr><td><a href='?pagina=verwijderen&naam=$naam&email=$email&datum=$datum&bericht=$bericht'><img border='0' src='VERWIJDEREN.PNG' /></a></td></tr></table><br>";
  9.  
  10. $file = "GB.PHP";
  11. $fopenr = fopen ($file, "r");
  12. $inhoud = fread ($fopenr, filesize ($file));
  13. $inhoud = str_replace ($bericht_verwijderen, "", $inhoud);
  14. $fopenw = fopen($file, "w+");
  15. fwrite($fopenw, "$inhoud");
  16. }

Offline XenoX - 24/09/2005 14:32
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
  1. <?php
  2. ...
  3.  
  4. if($pagina == 'verwijderen')
  5. {
  6. $bericht_verwijderen = "<table class='tabeln' align='center' width='600'>\n
  7. <tr><td><font face='lucida console' color='white' size='2'><b>$naam</b> &lt;$email&gt; [$datum]</font></td></tr>\n
  8. </table>\n
  9. <table class='tabelb' align='center' width='600' height='150'>\n
  10. <tr><td style='vertical-align: top;'><font face='lucida console' col or='white' size='2'>$bericht</font></td></tr>\n
  11. </table>
  12. <table class='tabeln' align='center' width='600'><tr><td><a href='?pagina=verwijderen&naam=$naam&email=$email&datum=$datum&bericht=$bericht'><img border='0' src='VERWIJDEREN.PNG' /></a></td></tr></table><br>";
  13.  
  14. $file = 'GB.PHP';
  15. $inhoud = file_get_contents($file);
  16. $inhoud = str_replace($bericht_verwijderen, '', $inhoud);
  17. file_put_contents($file, $inhoud);
  18. }
  19.  
  20. ...
  21. ?>

try ?
Offline brechtjeu - 24/09/2005 14:39 (laatste wijziging 24/09/2005 14:41)
Avatar van brechtjeu Onbekend @ XenoX: Fatal error: Call to undefined function: file_put_contents() in /data/members/free/tripod/nl/b/r/e/brechtjeu/htdocs/FORUM/GBPLAATS.PHP on line 16

:p

EDIT: ps, line 16 is line 15 in jouw script
Offline Button - 24/09/2005 14:40
Avatar van Button PHP ver gevorderde maar wat probeer je nu eigenlijk te verwijderen : dat $bericht_verwijderen is volgens mij toch niet het te verwijderen bericht wel?
want dan snap ik al niet waarom je héél die table moet mee verwijderen:s volgens mij toch alleen maar het $bericht?

  1. if($pagina == verwijderen) {
  2. $bericht_verwijderen=$_GET['bericht'];
  3.  
  4.  
  5. $file = "GB.PHP";
  6. $fopenr = fopen ($file, "r");
  7. $inhoud = fread ($fopenr, filesize ($file));
  8. $inhoud = str_replace ($bericht_verwijderen, "", $inhoud);
  9. $fopenw = fopen($file, "w+");
  10. fwrite($fopenw, "$inhoud");
  11. }else
  12. {
  13. //en dan hier natuurlijk het bericht echoën en de link
  14. met het bericht als een GET-superglobal
  15. //die wordt dan -zoals je wel ziet- hierboven opgehaald
  16. //dit kan je dan ook zo doen met de naam enzoveel dat je wil
  17. }


good luck
Offline brechtjeu - 24/09/2005 14:44
Avatar van brechtjeu Onbekend @ Buttonman: jawel de var $bericht_verwijderen moet uit de inhoud dus probeerde ik (Xenox) met str_replace het te vervangen tot niks.

die tabellen moeten erbij want anders staat het vol met tabellen zonder iets in in de gb file ...
$_GET['bericht'] is een slecht idee want waar moet hij dat bericht uit halen...
ik zorg gwn dat alles dat hij nodig heeft in de adresbalk staat en dan vandaaruit vul ik die variabelen $naam $email $datum $bericht
en dan verwijder ik of liever gezegd replace ik den boel
Offline XenoX - 24/09/2005 15:03
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
Citaat:
@ XenoX: Fatal error: Call to undefined function: file_put_contents() in /data/members/free/tripod/nl/b/r/e/brechtjeu/htdocs/FORUM/GB
PLAATS.PHP on line 16


Welke PHP versie heb je?
Offline brechtjeu - 24/09/2005 15:19 (laatste wijziging 24/09/2005 16:30)
Avatar van brechtjeu Onbekend 4.1

EDIT: ik heb nu dit:
  1. if($pagina == 'verwijderen') {
  2. $bericht_verwijderen = "<table class='tabeln' align='center' width='600'>\n
  3. <tr><td><font face='lucida console' color='white' size='2'><b>$naam</b> &lt;$email&gt; [$datum]</font></td></tr>\n
  4. </table>\n
  5. <table class='tabelb' align='center' width='600' height='150'>\n
  6. <tr><td style='vertical-align: top;'><font face='lucida console' color='white' size='2'>$bericht</font></td></tr>\n
  7. </table>
  8. <table class='tabeln' align='center' width='600'><tr><td><a href='?pagina=verwijderen&naam=$naam&email=$email&datum=$datum&bericht=$bericht'><img border='0' src='VERWIJDEREN.PNG' /></a></td></tr></table><br>";
  9.  
  10. $file = 'GB.PHP';
  11. $inhoud = file_get_contents($file);
  12. $inhoud = str_replace($bericht_verwijderen, '', $inhoud);
  13. fwrite(fopen($file, "w+"), $inhoud);
  14.  
  15. }


en nu krijg ik die error niet meer XenoX
Offline Dani - 26/09/2005 02:18
Avatar van Dani PHP gevorderde Probeer een je berichten te markeren voordat jij ze opslaat zodanig dat je deze makkelijk kan localiseren (bv : gebruik van genumerde anchors rond elk bericht).
Darnaa kan je dan dmv reguliere expressie deze makkelijk eruit filteren en verwijderen/bijwerken etc...

De code zal serieus afslanken, maar het gebruik van reguliere expressies is niet makkelijk 
Offline brechtjeu - 26/09/2005 06:45
Avatar van brechtjeu Onbekend @ dani: weet je wat ik heb er genoeg van, ik zal het veel makkelijker doen... met mysql dan moet ik gwn maar DELETE gebruiken 

ik ben dit weekend bezig geweest aan een scriptje en dat moet het doen. kan het heir wel niet posten want het staat op papier 
(kwas bij mijn vader)

topic mag gesloten worden :d
PS: leuke status heb ik nu vergeleken met parse error 
Offline vinTage - 26/09/2005 08:17
Avatar van vinTage Nieuw lid
Citaat:
PS: leuke status heb ik nu vergeleken met parse error

in plaats van daar lering uit te trekken vind je het nog grappig ook,..je bent ECHT NOG dommer dan dat ik je al vond
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.26s