login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Linkcategorie verwijderen (Opgelost)

Offline luchtpost - 18/03/2008 20:55 (laatste wijziging 19/03/2008 17:15)
Avatar van luchtpostPHP interesse Beste sitemasters,
Met dit script wil ik categorieën van mijn linksysteem verwijderen. De bedoeling is dat hij de categorie niet verwijderd als er nog bijbehorende links zijn in de tabel 'link'. Maar dit doet hij toch. Ik krijg ook een error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/mijnsite.be/mijnsite.be/httpd.www/admin.php on line 11

  1. <?php
  2. include 'include.databaseverbinding.php';
  3.  
  4. $id = $_GET['id']; //id uit de url halen
  5. if(!is_numeric($id)){
  6. echo("<font color=red>Er klopt iets niet. Ongeldige id.<br><br></font>");
  7. }
  8. else{
  9.  
  10. $result = mysql_query("SELECT * FROM link WHERE categorie = ".$_GET['link_categorie']);
  11. $aantal =mysql_num_rows($result);
  12.  
  13. if($aantal > 0){
  14. echo("<font color=red>Er klopt iets niet. Er zijn nog links in deze linkcategorie.<br><br></font>");
  15. }
  16.  
  17. else{
  18. $delete = mysql_query("DELETE FROM link_categorie WHERE id = ".$id);
  19. echo "<font color=green>Verwijderd!<br><br></font>";
  20. }
  21.  
  22. }
  23. ?>

12 antwoorden

Gesponsorde links
Offline Martijn - 18/03/2008 21:02 (laatste wijziging 18/03/2008 21:05)
Avatar van Martijn Crew PHP m,aak is van

  1. $result = mysql_query("SELECT * FROM link WHERE categorie = ".$_GET['link_categorie']);


  1. $result = mysql_query("SELECT * FROM link WHERE categorie = '".$_GET['link_categorie']."'") or die(mysql_error());


dus met 'or die(mysql_error());' en single quotes om je query. Als het een tekst is, is dat laatste ook verplicht

mocht dat ook niet werken, de $_GET vervangen door gewoon getypte tekst, kijken of ie t dan wel doet 

en nog iets, ik weet niet of je het van plan was, maar nu ben je gigantisch SQL-injection gevoelig, een iets maken wat dat tegengaat zou mssn wel zo handig zijn?



Offline luchtpost - 18/03/2008 21:07 (laatste wijziging 18/03/2008 21:25)
Avatar van luchtpost PHP interesse Mmmm, nu zegt hij: Unknown column 'Meta' in 'where clause'
'Meta' is de waarde van $_GET['link_categorie']

maar zeg ik in mijn query niet:
"... WAAR de inhoud van veld 'categorie' = $_GET ..."

Ik ben zeker dat in tabel link een veld 'categorie' bestaat...
Offline Martijn - 18/03/2008 21:11 (laatste wijziging 18/03/2008 21:12)
Avatar van Martijn Crew PHP zoals ik zei,
categorie=' ".$query." '

single quotes 

getallen kán zonder quotes, tekst móet met quotes
Offline luchtpost - 18/03/2008 21:11 (laatste wijziging 18/03/2008 21:25)
Avatar van luchtpost PHP interesse ahzo, ik krijg nu geen errors meer maar de categorie wordt gewoon verwijderd okal is er in het veld 'link' nog een rij aanwezig met als waarde van veld 'categorie' = $_GET['link_categorie']
Offline Martijn - 18/03/2008 21:15
Avatar van Martijn Crew PHP oke die volg ik niet?
Offline luchtpost - 18/03/2008 21:21 (laatste wijziging 18/03/2008 21:22)
Avatar van luchtpost PHP interesse wel, ik heb 2 tabellen: link en link_categorie
in 'link_categorie' staan de categorien en in 'link' staan de links (deze hebben een veld 'categorie' waarin een naam van een categorie staat)

Nu kan ik gewoon de categorie verwijderen en de bijhorende links in tabel 'link' laten staan, maar dit geeft veel 'vervuiling' van de database.

Ik wil dus een melding weergeven als bij het verwijderen van een linkcategorie nog bijhorende links bestaan.  
Offline Martijn - 18/03/2008 21:27 (laatste wijziging 19/03/2008 17:25)
Avatar van Martijn Crew PHP dan kun je doen

  1. //select query
  2. $sControle=mysql_query("SELECT categorie FROM link_categorie GROUP BY categorie") or die(mysql_error());
  3.  
  4. //standaard while fetch :) alleen zet ie nu meteen alles in een array ($cats)
  5. while($fControle=mysql_fetch_array($sControle)){ $cats[]=$fControle[0];}
  6.  
  7. //de foreach haalt de array leeg, met steeds value als waarde
  8. foreach($cats as $array=>$value){
  9. //select query
  10. $sDelete=mysql_query("SELECT id FROM categorie WHERE categorie='".$value."'") or die(mysql_error());
  11. //tel het aantal resultaten
  12. $tDelete=mysql_num_rows($sDelete);
  13.  
  14. //indien de categorie die bij de link staat niet bestaat, verwijderen
  15. if($tDelete==0){mysql_query("DELETE FROM link WHERE categorie='".$value."'") or die(mysql_error());
  16. }//einde foreach


heb nog nooit met een GROUP BY gewerkt, dus dat deel zou een beetje fout kunnen zijn 
Offline luchtpost - 19/03/2008 17:17 (laatste wijziging 19/03/2008 17:27)
Avatar van luchtpost PHP interesse Dit gaat eventjes mijn petje te boven 
Kan het dan niet op mijn manier, volgens mij moet die werken...
Maar ergens klopt er dus iets niet.

  1. <?php
  2. include 'include.databaseverbinding.php';
  3.  
  4. $id = $_GET['id']; //id uit de url halen
  5. $link_categorie = $_GET['link_categorie']; //linkcategorie uit de url halen
  6.  
  7. if(!is_numeric($id)){
  8. echo("<font color=red>Er klopt iets niet. Ongeldige id.<br><br></font>");
  9. }
  10.  
  11. else{
  12.  
  13. $result = mysql_query("SELECT * FROM link WHERE categorie = ' ".$link_categorie." '") or die(mysql_error());
  14. $aantal = mysql_num_rows($result);
  15.  
  16. if($aantal >=1){
  17. echo("<font color=red>Er klopt iets niet. Er zijn nog links in deze linkcategorie.<br><br></font>");
  18. }
  19.  
  20. else{
  21. $delete = mysql_query("DELETE FROM link_categorie WHERE id = ".$id) or die(mysql_error());
  22. echo "<font color=green>Verwijderd!<br><br></font>";
  23. }
  24.  
  25. }
  26.  
  27. ?>
Offline Martijn - 19/03/2008 17:25 (laatste wijziging 19/03/2008 17:36)
Avatar van Martijn Crew PHP heb wat comments neergezet 

edit:
als het werkt zoals ik denk dat het werkt krijg je dit:

categorien
konijnen - link: konijntjes.nl
ponies - link: paardjes.nl
konijnen - link: konijn.be
dan selecteerd ie konijnen maar 1x. Soort van alphabetiseren, tegelijk met kijken of ie dr al is. In het voorbeeld kiest ie dus 1x konijn en 1x ponies, ipv 2x konijnen

edit 2: het verschil tussen die van jou en mij, is dat die an jou kijkt bij een ID of er nog iets van is, die van mij checkt in 1x je hele tabel 
Offline luchtpost - 19/03/2008 17:30 (laatste wijziging 19/03/2008 18:36)
Avatar van luchtpost PHP interesse EDIT: OPGELOST, ik moet oppassen voor spaties in mijn queries  
Offline Abbas - 19/03/2008 18:30
Avatar van Abbas Gouden medaille

Crew .NET
Doe eens:
  1. echo "SELECT * FROM link WHERE categorie = ' " . $_GET['link_categorie'] . " ' ";
Zo kan je zien of die $_GET wel degelijk een waarde heeft en of ze dan wel gelijk is aan 'Meta'..
Offline luchtpost - 19/03/2008 18:37 (laatste wijziging 19/03/2008 18:37)
Avatar van luchtpost PHP interesse OPGELOST, ik moet oppassen voor spaties in mijn queries  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.258s