php query niet correct

Status
Niet open voor verdere reacties.

Erwinski

Gebruiker
Lid geworden
12 sep 2007
Berichten
50
Hallo sql'ers,

Ik wil een update query maken met een $_POST['value'], maar ken de syntax niet precies.

Kunnen jullie mij hiermee helpen?
Heb gestoeid met quotes etc maar ik blijf een foutmelding krijgen.

Mvg,
Erwin.

PHP:
$query = "UPDATE contents SET content = "$_POST['value']" where id = "$id";
 
PHP:
$query = 'UPDATE contents SET content = '.$_POST['value'].' WHERE id = '.$id;

OF

PHP:
$query = "UPDATE contents SET content = ".$_POST['value']." WHERE id = ".$id;


uitleg:

Alle tekst tussen single quotes (dubbele kan ook) en opletten dat je dan in je tekst niet opnieuw gebruikt maakt van dezelfde quotes.

Tekst aan elkaar plakken doe je door de operator .

De POST-variabele en ook de variabele id zijn niet echt tekst, dus je moet deze niet in de string opnemen. Zij dienen letterlijk geïnterpreteerd te worden.
 
Laatst bewerkt:
Qua veiligheid kun je beter dit doen:

PHP:
$query = "UPDATE contents SET content = ". mysql_real_escape_string($_POST['value']) ." WHERE id = ". $id .";

Waar $id vandaan komt is niet duidelijk maar als die ook door een gebruik wordt ingegeven is het verstandig daar ook deze functie om heen te zetten.

Tevens verplaatst naar PHP, aangezien het om de syntax van PHP ging
 
Query syntax werkt inmiddels, maar hij doet nog niet wat ik wil. Het is de bedoeling dat ik in een fckeditor een inhoud schrijf voor een artikel. Zodra ik dan op submit druk moet deze informatie naar de database verzonden worden (door middel van de query dus) en daarna moet de pagina ververst worden.

Hier is de code van pages.php (waar alles gebeurt)
PHP:
<?php
include("db.php");

//variabelen declareren
$id=$_GET["id"];
$sql = "SELECT * FROM contents where id='".$_GET["id"]."'";
$result = mysql_query($sql) or die("Query failed : " . mysql_error());
$row = mysql_fetch_assoc($result);
$content = $row['content'];
$title = $row['title'];

//controleren of de gebruiker is ingelogd
session_start();
if(session_is_registered("myusername")){
$aanpassen = "<a href='index.php?id=$id&a=edit'>Aanpassen</a>";
//selecteer pagina menu
echo "<input name='title' type='text' size='15' value='".$title."'>";
echo "<select class='formStyle' name='nparent'>";
echo "<option label='root' value='0'>root</option>"; 
GetParentMenu($_GET["id"]);
echo "</select>";
}else{
$aanpassen = "";
}

//inhoud tabel maken
echo "<table align='center' border='0'>
<tr>
<th>Inhoud</th>
</tr>";
  echo "<tr>";
  echo "<td>" . $content  . "</td>";
  echo "</tr>";
echo "<tr>";
echo "<td align='right'>" . $aanpassen . "</td>";
echo "</tr>";
echo "</table>";

//fckeditor aanroepen/maken
if (isset($_GET["a"])){
if ($_GET["a"] == "edit"){
include_once("fckeditor/fckeditor.php");
echo "<form method='POST' action='" . $_SERVER['PHP_SELF'] . "'>";
$oFCKeditor = new FCKeditor("fckeditor1") ;
$oFCKeditor->BasePath = 'fckeditor/' ;
$oFCKeditor->Value = $content;
$oFCKeditor->Create() ;
echo "<input type='submit' value='submit'>";

//post omzetten naar variabelen
if ( isset( $_POST ) )
   $postArray = &$_POST ;			// 4.1.0 or later, use $_POST
foreach ( $postArray as $sForm => $value )
{
}
//updatequery
echo $query = "UPDATE contents SET content = ".$_POST['fckeditor1']." where id = ".$id;
$result = mysql_query($query); 
}
}
?>
 
mss een quickfix, maar zo zal het wellicht werken

Probeer dit:

Na de code die de update uitvoert gewoon terug verwijzen naar dezelfde pagina...

PHP:
$redirect='http://www.mijndomein.nl/pagina.php';
header ("Location:$redirect");
exit;

Je hoeft zelfs niet het volledige domein te plaatsen... indien het dezelfde pagina is, kan je ook verwijzen naar $_SERVER["PHP_SELF"]

Dat wordt dan dus:

PHP:
$redirect=$_SERVER["PHP_SELF"];
header ("Location:$redirect");
exit;

Wil je de variabelen uit de $_GET array toevoegen aan de url gebruik je $_SERVER["REQUEST_URI"] i.p.v. $_SERVER["PHP_SELF"]
 
Laatst bewerkt:
Danku =) maar dat was nog niet het grootste probleem, de query werkt niet. ik ben bang dat ik de verkeerde variabele heb gebruikt hiervoor. Heeft iemand van jullie ervaring met fckeditor en in welke variabele de ingevoerde content zit?

bvd,
Erwin.
 
Maar, mijn werkt nog niet.
hij print m wel uit dmv. echo, maar zodra ik het statement or die (mysql_error()) erachter zet geeft ie aan dat ik er geen variabele $id mag achter zetten. heb de single en double quotes geprobeerd.
 
Je hebt het toevallig niet online staan?

Moet het trouwens niet $_GET['id'] zijn op lijn 57 ipv $id?
 
Laatst bewerkt:
Ja, te laat gezien :rolleyes:

Kan je eens een echo voor een bepaalde variabele( $_GET['id'] ) doen en hier weergeven wat ie print dan?

En ook eens exact de foutmelding die je krijgt bij het uitvoeren van de code neerschrijven.
 
Laatst bewerkt:
het id heb ik ook al ge-echoed.

1 (is dus $id)
dit is 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 'where id = 1' at line 1 (van de query dan.. lijn 1 staat <?php
 
Dat is regel 1 van de PHP code, niet van je query. Heb je het ook al geprobeerd met quotes om $id?
PHP:
echo $query = "UPDATE contents SET content = ".$_POST['fckeditor1']." where id = '$id'";
 
$query = "UPDATE contents SET content = '".mysql_real_escape_string($_POST['fckeditor1'])."' WHERE id = '".mysql_real_escape_string($id)."'";
 
Het probleem is ook dat de knop doorverwijst naar index.php, en niet index.php?id=1

Maar de query wordt nog steeds niet uitgevoerd..

Heeft dit er misschien mee te maken?

edit: de query werkt dus ook nog steeds niet
 
Laatst bewerkt:
uiteraard werkt de query niet als je niet doorverwijst naar index.php?id=1...$_GET['id'] verwijst immers naar de 1 van id=1.

dus maak je van het volgende:

HTML:
<form action="index.php"... >


dit:

HTML:
<form action="index.php?id=1" ...>

of het equivalent d.m.v. een variabele in PHP


btw. het zou een pak eenvoudiger op te lossen zijn wanneer ik het volledige plaatje zou zien. :confused:
 
Zodra ik id=1 invoer (om testen of dat wel werkt ik snap natuurlijk ook wel dat daar $_GET[id] moet staan) krijg ik fouten op mn pagina en werkt niets meer :p

ook heb ik een variabele, $id. achter die variabele staat $_GET["id"]. Als ik de variabele echo krijg ik niks. als ik $_GET["id"] echo krijg ik het idee. Ligt dat nou aan mij of klopt dat niet?

Daarom heb ik het dus ook al geprobeerd met de variabele, maar dat werkt dus niet, helaas.

Weet iemand hoe ik het moet doen dan met die quotejes?

PHP:
echo "<form method='POST' action='index.php?id=";

Bvd

p.s. ik snap dat het handiger is als je het totaalplaatje ziet, maar het is een intranet en om nou alles te rarren en mn dbase te exporteren heb ik weinig zin in :P
 
Ok het is opgelost!

Ik ben vergeten de post op de knop te zetten! :D

Maar, hij doet het.

Iig bedankt voor de hulp:cool:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan