Mysql_Query probleem

Status
Niet open voor verdere reacties.

rpost

Gebruiker
Lid geworden
17 dec 2005
Berichten
19
Hallo,

Ik zoek de oplossing op het volgende, ik heb al van alles geprobeerd maar ik krijg steeds een niets zeggende foutmelding.

Op een webpagina genereer ik data uit een database. Deze word op het scherm getoond met hierachter 2 buttons, 1 om updates te doen, de ander om te deleten.
De update gaat helemaal goed. De button die ik gebruik om het betreffende record te verwijderen geeft een fout.

Het script wat uitgevoerd word als ik deze button indruk is:

PHP:
<?php

include ('config.php');

         
$sql = "DELETE FROM invoer WHERE ticketnr = " . mysql_real_escape_string ( $_POST['$Ticketnr'] );

if ( @mysql_query ( $sql ) )
{
 
		echo 'Ticketnr = ' . $_POST['$Ticketnr'];
		echo 'Succesvol verwijderd';
}
  
else { die (mysql_error());
} 
?>

Als ik de input type van de button van hidden naar text zet, zie ik dat hij de juiste gegevens weergeeft die ik dus probeer in bovenstaande script op te halen en te verwerken.

Als ik het uitvoer krijg ik als foutmelding:

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

Hier kom ik dus niet echt verder mee.

Iemand een idee waar het hier fout gaat?
 
Laatst bewerkt:
PHP:
<?php
 
include ('config.php');
 
         
$query = ("DELETE FROM invoer WHERE ticketnr =". mysql_real_escape_string ( $_POST['$Ticketnr'] ));
 
if (mysql_query($query))
{
 
        echo 'Ticketnr =' . $_POST['$Ticketnr'];
        echo 'Succesvol verwijderd';
}
  
else { die (mysql_error());
} 
?>


Probeer dit eens :)
 
Laatst bewerkt:
In je query gebruik je $_POST['$Ticketnr']. Klopt de naam '$Ticketnr' (dus met dollarteken) wel? "Echo" anders eens de query zodat je kan zien of die wel klopt.
 
@Beetsma, bedankt, script is nu in elk geval goed.
@Supersnail Als ik het aangepaste script van Beetsma gebruik krijg ik de melding: Ticketnr = Succesvol verwijderd (dit is dus de echo die ik gebruik) en er word niets verwijderd omdat de waarde dus leeg is blijkbaar.

Het script waar de waarde uitgehaald wordt:

PHP:
<?php
 
include ('config.php'); //Het verbindingsscript ophalen 
 
 $result2 = mysql_query("SELECT * FROM invoer");
  
  

$result = mysql_query( "SELECT ticketnr,datum,begin,categorie,plaats,netwerk,kort,aansturing,edatum,eind FROM invoer" )
or die("SELECT Error: ".mysql_error());
?>
In dit Admin gedeelte van het logboek kunnen alle velden (behalve ticketnr, datum en tijd) nog aangepast worden. Eventueel indien gewenst kan een heel record verwijderd 
<table width="100%" height="648" border="4" cellpadding="2">
  <tr>
    <th bgcolor="#FFFFCC" scope="col">

 <table width="100%%" border="4" align="left" >
   <tbody>
     <tr>
       <td bgcolor="#D6D6D6"><strong>Ticketnr</strong></td>
       <td bgcolor="#D6D6D6"><strong>Begindatum</strong></td>
       <td bgcolor="#D6D6D6"><strong>Begintijd</strong></td>
       <td bgcolor="#D6D6D6"><strong>Categorie</strong></td>
       <td bgcolor="#D6D6D6"><strong>Plaats</strong></td>
       <td bgcolor="#D6D6D6"><strong>Netwerk</strong></td>
       <td bgcolor="#D6D6D6"><strong>Korte omschrijving</strong></td>
       <td bgcolor="#D6D6D6"><strong>Aansturing</strong></td>
       <td bgcolor="#D6D6D6"><strong>Einddatum</strong></td>
       <td bgcolor="#D6D6D6"><strong>Eindtijd</strong></strong></td>
              </form></td>
     </tr>

 
   <p>&nbsp;</p>
   <p>&nbsp;</p>
<?php


while ($get_info = mysql_fetch_row($result)){ 
$data2 = mysql_fetch_array($result2);
print "<tr>\n";
foreach ($get_info as $field) 
print "\t<td width=100><font face=arial size=1/>$field</font></td>\n";
print "<td width=50><form method='post' action='output3.php'><input type='hidden' name='show' value='$data2[0]' /><INPUT TYPE='submit' height='0.5'  NAME ='bekijk' VALUE='open'></form></td>";
print "<td width=50><form method='post' action='delete.php'><input type='hidden' name='delete' value='$data2[0]' /><INPUT TYPE='submit' height='0.5'  NAME ='delete' VALUE='Delete'></form></td>";
print "</tr>\n";
}
print "</table>\n";


?>
</td>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form action="export.php" method="post"> 
<input type="submit" value="Export naar Excel" />
<input type="button" value="Terug" onclick="parent.location='index.php'" />
</form>
        </p>
      </p></th>
  </tr>
</table>

Het gaat dus om : print "<td width=50><form method='post' action='delete.php'><input type='hidden' name='delete' value='$data2[0]' /><INPUT TYPE='submit' height='0.5' NAME ='delete' VALUE='Delete'></form></td>";

Als ik de input type naar 'text' zet krijg ik ook te zien dat de waarde goed is.

Ik vermoed zelf dat het probleem zit in het feit dat ik de waarde niet uit de DB haal, maar uitlees vanuit een andere pagina?
 
Ik heb de ! bij mysql_query weggehaald volgens mij krijg je nu de juiste echo
 
Helaas, zonder de ! krijg ik meteen: 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 dat er met het script en de query op zich niets veel mis is. Ik denk dat hij gewoon de waarde die ik aan de button toegekend krijg niet kan inlezen op een of andere manier. Het zal vast zoiets lastigs zijn.
In het andere script word nl $Ticketnr gebruikt om gegevens uit database te halen en te tonen op het scherm. Nu moet ik dus de waarde die aan de button is toegekend inlezen. Maar zowel $Ticketnr als ticketnr (naam uit de database) klopt niet.

Als kleine omschrijving. ticketnr heeft in de database de waarde 11111, dit word getoond op het scherm dmv de $Ticketnr. Door de value='$data2[0]' wordt deze waarde aan de delete button toegekend.

Maar ook de waarde '$data2[0]' zelf lost mijn probleem niet op. Ik krijg nog steeds die 11111 niet ingelezen in mijn $query.
 
Het uitroepteken moet weg. Met uitroepteken krijg je de echo als de query mislukt. Als ik je code zo zie gebruik je de verkeerde naam. In je code staat
HTML:
<input type='hidden' name='delete' value='$data2[0]' />
Om deze waarde in je PHP-script te gebruiken moet je $_POST['delete'] gebruiken (de "name" van het veld).
 
Word nog spannender (lastiger).

Ik verander nu: $query = ("DELETE FROM invoer WHERE ticketnr =". mysql_real_escape_string ( $_POST['$Ticketnr'] )); in $query = ("DELETE FROM invoer WHERE ticketnr =". mysql_real_escape_string ( $_POST['delete'] ));

en if (mysql_query($query)) is nu zonder !.

Dan krijg ik meteen de foutmelding "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 'Delete' at line 1" weer.

Nu dacht ik even raar in mijn beleving en heb een kleine aanpassing gemaakt:

print "<td width=50><form method='post' action='delete.php'><input type='hidden' name='delete' value='$data2[0]' /><INPUT TYPE='submit' height='0.5' NAME ='delete' VALUE='$data2[0]'></form></td>";

Er staat dan geen button meer die Delete heet, maar een button met de waarde van het ticketnr. Ik klik hierop (in dit geval was er een button met het getal 7).
Ik krijg nu meteen de melding "Ticketnr = 7 Succesvol verwijderd" En inderdaad het record is verwijderd...

Toch nog een vreemd issue dus
 
Je hebt twee inputs met de naam "delete" zie ik nu, de hidden input en de submit-knop. Als je de submit-knop een andere naam geeft kan je deze weer de oude value geven en zou het toch nog moeten werken.
 
Wat kan een woord van 6 letters je aan het zoeken zetten zeg. Beidde bedankt voor het meedenken en de uiteindelijke oplossing.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan