login  Naam:   Wachtwoord: 
Registreer je!
 Forum

in blog "verwijder" link gemaakt voor admin. Bij lege database komt foutmelding naar voren

Offline Erwin1976 - 20/10/2011 19:05 (laatste wijziging 20/10/2011 19:21)
Avatar van Erwin1976Lid Hallo iedereen,

Ik ben op nu bezig met een blogscript, en daarin heb ik een soort van loginscript ingebouwd zodat de administrator kan inloggen en eventueel posts/blogs rechtstreeks kan verwijderen van de webpagina.

Inloggen gaat nu goed, en nu heb ik een "verwijder" linkje gemaakt welke gekoppeld zit aan een post id. Zodra ik deze link aanklik wordt een post verwijderd uit de database. (d.m.v. koppeling naar DELETE functie)

De link werkt, behalve dat ik soms twee keer moet klikken voor dat wijziging zichtbaar is. Echter nu heb ik het probleem, dat als er geen records gevuld zijn een foutmelding komt:

Notice: Undefined variable: post in C:\wamp\www\website\blog\blog_list.php on line 36 Call Stack #TimeMemoryFunctionLocation 10.0010681320{main}( )..\blog_list.php:0 ">Post

Weet iemand hoe ik dit kan voorkomen?

Groeten Erwin

het script:
  1. if (isset($_GET['actie'])) {
  2. $verwijderen = verwijderen();
  3. }else{
  4. echo "";
  5. }
  6. if (isset($_SESSION['isin'])){ ?>
  7. <li><a href="blog_list.php?actie=verwijderen&id=<?php echo $post['id']; ?>">Verwijder</a></li>
  8. <br><br>Hello, You may
  9. <ul>
  10. <li><a href="put.php">Post</a></li>
  11. <li><a href="logout.php">Logout</a></li>
  12. </ul>
  13. <?php
  14. }else{
  15. echo '<br><br>De administrator kan <a href="login.php">hier</a> inloggen.';
  16. }


De functie waarnaar verwezen wordt:
  1. function verwijderen() {
  2. $id = $_GET['id'];
  3. mysql_query("DELETE FROM `posts` WHERE `post_id` = $id");
  4. }

7 antwoorden

Gesponsorde links
Offline icemar - 21/10/2011 07:51
Avatar van icemar Lid Voor de melding dat er geen berichten zijn deze moet je eerst controleren voor je een result terug geeft.
Is result leeg geef dan een waarde aan de return anders zal deze een error geven zo als je nu heb.

Voor het 2x moeten klikken kan je een stukje javascript gebruiken.
Voor de window.location moet je zelf aanpassen of deze naar de juiste pagina gaat.
  1. echo" <script type=\"text/javascript\">
  2. <!--
  3. window.location = \"index.php\"
  4. //-->
  5. </script>";
Offline Erwin1976 - 21/10/2011 10:42 (laatste wijziging 21/10/2011 10:42)
Avatar van Erwin1976 Lid
Citaat:
Voor de melding dat er geen berichten zijn deze moet je eerst controleren voor je een result terug geeft.
Is result leeg geef dan een waarde aan de return anders zal deze een error geven zo als je nu heb.

Je tip voor het twee keer klikken ga ik proberen. Is dit niet met PHP code op te lossen?

En wat bedoel je precies met bovenstaande? Mijn script werkt ok, alleen ik krijg die vervelende notice.

Groeten Eric
Offline icemar - 21/10/2011 10:47
Avatar van icemar Lid Die melding moet je afvangen dat kan bv met een try en catch.

Ja het 2 x klikken is ook op te lossen met php dmv
  1. header('location:index.php');


Let wel op hoe je deze gebruikt anders kan je een error krijgen headers already send.
Offline Erwin1976 - 21/10/2011 13:43 (laatste wijziging 21/10/2011 13:44)
Avatar van Erwin1976 Lid Bedankt voor de tips, alles werkt nu goed. Ik zit alleen nog met 1 probleem.
Als er geen records gevuld zijn wordt er ook geen "login" link weergegeven.

Komt dat misschien omdat ik alles in een foreach loop gezet heb?

Mijn complete stukje script:
  1. $posts = get_posts();
  2. foreach ($posts AS $post){
  3. ?>
  4. <h2><a href="blog_read.php?pid=<?php echo $post['id']; ?>"><?php echo $post['title']; ?></a></h2>
  5. <h4> <?php echo $post['user']; ?> on <?php echo $post['date'] ?></h4>
  6. <h4>(<?php echo $post['total_comments']; ?> reacties, laatste reactie <?php echo $post['last_comment']; ?>)</h4>
  7. <p><?php echo $post['preview']; ?></p>
  8. <hr />
  9. <?php
  10. if (isset($_SESSION['isin'])){
  11. ?>
  12. <li><a href="blog_list.php?actie=verwijderen&id=<?php echo $post['id']; ?>">Verwijder</a></li>
  13. <br><br>Hello, You may
  14. <ul>
  15. <li><a href="put.php">Post</a></li>
  16. <li><a href="logout.php">Logout</a></li>
  17. </ul>
  18. <?php
  19. } else {
  20. echo '<br><br>De administrator kan <a href="login.php">hier</a> inloggen.';
  21. }
  22. if (isset($_GET['actie'])) {
  23. $verwijderen = verwijderen();
  24. header('location:blog_list.php');
  25. }
  26. }
  27. include "../templates/footer.html";
Offline icemar - 21/10/2011 15:33
Avatar van icemar Lid Kan je niet afvangen dat je als admin wel een inlog link zie?
Dan hoeft je niet alles te verbouwen wat je tot nu toe heb gemaakt.
Bedankt door: Erwin1976
Offline Erwin1976 - 21/10/2011 15:46 (laatste wijziging 21/10/2011 15:48)
Avatar van Erwin1976 Lid Ik heb het al opgelost...in de functie get_posts() had ik eerder stukje script gezet:

  1. $num_rows = mysql_num_rows(mysql_query($sql));
  2. if ($num_rows == 0) {
  3. echo "Als er geen posts zijn, kan je de andministrator erom verzoeken via het contactformulier";
  4. }


Dan kan ik wel dingen gaan proberen in mijn andere script maar dat gaat nooit werken natuurlijk ;)

Groeten Erwin
Offline icemar - 21/10/2011 16:03
Avatar van icemar Lid Mooi dat het je gelukt is suc6 er mee
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s