Probleem in gastenboek script
if($_POST['submit']){
$query = "DELETE FROM gastenboek WHERE id=". id ."";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
De error geeft aan dat het om de regel $verwijder gaat kan iemand een suggestie geven van wat ik verkeerd doe?
groetjes en alvast bedankt!
uit welk vreselijk boek heb jij php geleerd? fireplace material
moet zijn
Je vergat dus de variabele prefix van php '$'.
Edit: Waar kom $id trouwens vandaan? Neem aan dat je die eerder in dit script wel doet toekennen via bijv. een POST-var?!
Gewijzigd op 01/01/1970 01:00:00 door Jaws
Dit is een script van WebmasterCity.nl ik ben op het moment bezig met de fouten eruit te halen hij zit helemaal vol. En kennelijk komt die $id helemaal nergens vandaan. Beetje vreemd maar bedankt ;)
Hoe kan ik eigenlijk het beste die $id toekennen?
Bumpen::
SanThe.
Dan zul je toch echt wat meer relevante code moeten posten.
Code (php)
123456789101112
<?session_start();if($_SESSION[login] == 1 && $_SESSION[sid] == session_id()){ if($_POST[submit]){ $id = "SELECT * FROM gastenboek WHERE id"; $query = "DELETE FROM gastenboek WHERE id=". $id .""; $verwijder = mysql_query($query) or die(mysql_error()); print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");}else{ ?>
[linebreak]
Dit is verwijder.php met nog wat html en de afsluitende haakjes van de php eromheen.
En deze error krijg ik:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO) in /home/celine/domains/udh.gethost.nl/public_html/gastenboek/verwijder.php on line 16
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/celine/domains/udh.gethost.nl/public_html/gastenboek/verwijder.php on line 16
Access denied for user 'apache'@'localhost' (using password: NO)
Dit is verwijder.php met nog wat html en de afsluitende haakjes van de php eromheen.
En deze error krijg ik:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO) in /home/celine/domains/udh.gethost.nl/public_html/gastenboek/verwijder.php on line 16
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/celine/domains/udh.gethost.nl/public_html/gastenboek/verwijder.php on line 16
Access denied for user 'apache'@'localhost' (using password: NO)
Gewijzigd op 01/01/1970 01:00:00 door celine
celine schreef op 27.03.2008 12:16:
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/celine/domains/udh.gethost.nl/public_html/gastenboek/verwijder.php on line 16
Access denied for user 'apache'@'localhost' (using password: NO)
Access denied for user 'apache'@'localhost' (using password: NO)
Je hebt geen connectie met de database.
Maar dat is juist het apparte, even daarvoor heb ik dat dus nog wel maar oppeens niet meer? terwijl hij wel eerst controleerd of ik wel een connectie heb (anders zou ik ook niet kunnen inloggen) maar zodra ik bevestig dat hij hem moet gaan verwijderen lig ik er uit
Edit: Ja wanneer je naar een nieuwe pagina gaat, id git geval verwijder.php, dat wordt de mysql-connectie in het voorgaande script aan het einde afgesloten door PHP. Je zult deze in verwijder.php weer opnieuw moeten aanmaken. Of verwijder.php moet ge-include worden door een script dat wel nog een connectie heeft naar je server.
Gewijzigd op 01/01/1970 01:00:00 door Jaws
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Ik denk dit:
Code (php)
1
2
3
4
2
3
4
<?php
$id = "SELECT * FROM gastenboek WHERE id";
$query = "DELETE FROM gastenboek WHERE id=". $id ."";
?>
$id = "SELECT * FROM gastenboek WHERE id";
$query = "DELETE FROM gastenboek WHERE id=". $id ."";
?>
Zet hierachter eens echo $query;
Dan zie je welke query je krijgt. Een soort sub-query, maar dit is denk ik niet de bedoeling, watn je wilt gewoon in $id een integer waarde hebben staan en geen query. Kijk hier eens naar.
Dit is de regel die ik krijg als ik echo $query invoer
Ik ben nu al een stap verder, als ik dit doe:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
if (isset($_POST['submit'])) {
require ("connectie.php");
$id = "id";
$query = "DELETE FROM gastenboek WHERE id= ". $id ."";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
else{?>
if (isset($_POST['submit'])) {
require ("connectie.php");
$id = "id";
$query = "DELETE FROM gastenboek WHERE id= ". $id ."";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
else{?>
dan leeg ik mijn hele gastenboek, hoe kan ik dan het geselecteerde bericht verwijderen?
Gewijzigd op 01/01/1970 01:00:00 door celine
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
if (isset($_POST['submit'])) {
require ("connectie.php");
$id = "id";
$query = "DELETE FROM gastenboek WHERE id= $id";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
else{?>
if (isset($_POST['submit'])) {
require ("connectie.php");
$id = "id";
$query = "DELETE FROM gastenboek WHERE id= $id";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
else{?>
". $id ." is volgens mij helemaal niet nodig... gebruik gewoon $id (dit is een normale variabele in php dus herkent hij gewoon) en dan weet je zeker dat het werkt.
probeer anders deze even:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
if (isset($_POST['submit'])) {
require ("connectie.php");
$id = "id";
$query = "DELETE FROM gastenboek WHERE id= '$id'";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
else{?>
if (isset($_POST['submit'])) {
require ("connectie.php");
$id = "id";
$query = "DELETE FROM gastenboek WHERE id= '$id'";
$verwijder = mysql_query($query) or die(mysql_error());
print("Het bericht is verwijdert.<br>Klik <a href=\"index.php\">hier</a> om terug te keren naar het gastenboek.");
}
else{?>
Gewijzigd op 01/01/1970 01:00:00 door Berry Kloes
Verwijderd bedoel je hopelijk? 0_o
Quote:
". $id ." is volgens mij helemaal niet nodig... gebruik gewoon $id (dit is een normale variabele in php dus herkent hij gewoon) en dan weet je zeker dat het werkt.
Dat heeft er niets mee te maken. Het zijn beide geldige methodes. Bij de ene haal je de var gewoon uit de string. Werking is precies hetzelfde.
@Celine: hele probleem is gewoon dat je jouw $id variabele geen waarde toekent. Als je zegt $id = "id"; Dan zegt MySql in de query gewoon "id" is een string maar je hebt een integer nodig, dus maak ik er 0 of NULL, weet niet zeker welke. Dan wordt jouw query dus perongeluk foutief uitgevoerd door een conversie (lees: type-casting).
De hele regel $id = "id"; slaat gewoon nergens op.
Ik denk dat je beter een wat tutorials op deze site kunt lezen m.t.b. tot formulieren en communicatie met databases.
Het is gewoon heel simpel je zet boven aan je pagina:
Waar beide niets afdrukken dan stuur je gewoon niet juist je id variabele door.
Pas als een van de 2 een waarde heeft, dan ken je die toe aan $id. En let op dat je zorgt dat je de input doet controleren, zodat er geen eventuele SQL-injection kan plaatsvinden. Daarheen moet je eerst kijken voordat je iets met de queries gaat doen.
Gewijzigd op 01/01/1970 01:00:00 door Jaws