Probleem in gastenboek script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Celine

celine

27/03/2008 10:19:00
Quote Anchor link
Ik heb een verwijder.php bestand maar op een of andere manier wil het niet gaan werken. Volgens de error report zit de error in de volgende regels:

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!
 
PHP hulp

PHP hulp

24/12/2024 21:19:03
 
- wes  -

- wes -

27/03/2008 10:25:00
Quote Anchor link
uit welk vreselijk boek heb jij php geleerd? fireplace material
 
Jaws

Jaws

27/03/2008 10:34:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "DELETE FROM gastenboek WHERE id=". id ."";
?>


moet zijn
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "DELETE FROM gastenboek WHERE id=". $id ."";
?>


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
 
Celine

celine

27/03/2008 10:51:00
Quote Anchor link
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 ;)
 
Celine

celine

27/03/2008 10:54:00
Quote Anchor link
Hoe kan ik eigenlijk het beste die $id toekennen?
 
Jaws

Jaws

27/03/2008 11:24:00
Quote Anchor link
Waarschijnlijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$id
= (int) $_POST['id'];
?>
 
Celine

celine

27/03/2008 12:01:00
Quote Anchor link
Jammer dat gaat ook niet werken. Maar het aparte is dat hij op de index pagina wel de id weet van de pagina, ook als ik op verwijderen klik, maar zodat ik op de bevestiging druk om te verwijderen slaat ie uit.

http://udh.gethost.nl/gastenboek/index.html
 
- SanThe -

- SanThe -

27/03/2008 12:08:00
Quote Anchor link
Niet Bumpen.
Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
 
Jaws

Jaws

27/03/2008 12:13:00
Quote Anchor link
Dan zul je toch echt wat meer relevante code moeten posten.
 
Celine

celine

27/03/2008 12:16:00
Quote Anchor link
Code (php) 123456789101112 &lt;?session_start();if($_SESSION[login] == 1 &amp;&amp; $_SESSION[sid] == session_id()){ if($_POST[submit]){&nbsp;&nbsp;&nbsp;&nbsp;$id = &quot;SELECT * FROM gastenboek WHERE id&quot;;&nbsp;&nbsp;&nbsp;&nbsp;$query = &quot;DELETE FROM gastenboek WHERE id=&quot;. $id .&quot;&quot;;&nbsp;&nbsp;&nbsp;&nbsp;$verwijder = mysql_query($query) or die(mysql_error());&nbsp;&nbsp;print(&quot;Het bericht is verwijdert.&lt;br&gt;Klik &lt;a href=\&quot;index.php\&quot;&gt;hier&lt;/a&gt; om terug te keren naar het gastenboek.&quot;);}else{&nbsp;&nbsp;&nbsp;&nbsp;?&gt; [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)
Gewijzigd op 01/01/1970 01:00:00 door celine
 
- SanThe -

- SanThe -

27/03/2008 12:22:00
Quote Anchor link
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)

Je hebt geen connectie met de database.
 
Celine

celine

27/03/2008 12:24:00
Quote Anchor link
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
 
Jaws

Jaws

27/03/2008 12:28:00
Quote Anchor link
Idd, kijk eens naar de mysql_connect() functie. Waarschijnlijk staat die ook al ergens in je andere scripts.

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
 
Celine

celine

27/03/2008 12:33:00
Quote Anchor link
Nu heb ik mijn connectie file geinclude bij het bestand maar nu krijg ik deze error;

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
 
Jaws

Jaws

27/03/2008 12:55:00
Quote Anchor link
Op welke lijn geeft hij die error? En wat staat op die lijn?

Ik denk dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$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.
 
Celine

celine

27/03/2008 13:06:00
Quote Anchor link
DELETE FROM gastenboek WHERE id=SELECT * FROM gastenboek WHERE id

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)
PHP script in nieuw venster Selecteer het PHP script
1
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{?>



dan leeg ik mijn hele gastenboek, hoe kan ik dan het geselecteerde bericht verwijderen?
Gewijzigd op 01/01/1970 01:00:00 door celine
 
Berry Kloes

Berry Kloes

27/03/2008 14:39:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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{?>


". $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)
PHP script in nieuw venster Selecteer het PHP script
1
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{?>
Gewijzigd op 01/01/1970 01:00:00 door Berry Kloes
 
Zelf Weten

Zelf Weten

27/03/2008 14:39:00
Quote Anchor link
Verwijderd bedoel je hopelijk? 0_o
 
Jaws

Jaws

27/03/2008 15:13:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo $_GET['id'];
//of
echo $_POST['id'];
?>

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.