Ik ben bezig met een instellingen paneel, en wil daarom de instellingen kunnen opslaan.
Nu werkt alles behalve het opslaan, ik krijg ook geen errors.
Dit is het stukje om de tabel te updaten:
<?php
$pmmail = $_POST['pmmail'];
if (isset($_POST['pmmail'])) {
mysql_query('UPDATE settings SET pm_mail=$_POST["pmmail"] WHERE username="$session->username"');
?>
Overigens is "pmmail" een radio-button.
Alvast bedankt!
Je foutafhandeling is op vakantie, zet je variabelen buiten quotes, en beveilig je $_POST variabelen met mysql_real_escape_string
Als ik dit doe:
<?php
if (isset(mysql_real_escape_string($_POST['pmmail']))){
mysql_query('UPDATE settings SET pm_mail=$_POST["pmmail"] WHERE username=$session->username') or die("Fout: De instellingen kunnen niet worden opgeslagen!");
}
?>
Krijg ik deze foutmelding:
Fatal error: Can't use function return value in write context in /home/n3dscl1q/public_html/nl/database/settings.php on line 171
Lijn 171 is de regel waar mysql_real_escape_string() in staat.
isset controleert of een variabele bestaat, dus kan je daar geen resultaat van een functie aanhangen.
<?php
if (mysql_real_escape_string($_POST['pmmail'])){
mysql_query('UPDATE settings SET pm_mail=$_POST["pmmail"] WHERE username=$session->username') or die("Fout: De instellingen kunnen niet worden opgeslagen!");
?>
Nu geen errors, het wordt alleen niet opgeslagen.
je gebruikt de functie mysql_real_escape_string() verkeerd. Je moet deze over je variabele halen:


<?php
if (isset($_POST['pmmail'])) {
  $result = mysql_query("UPDATE settings SET pm_mail='".mysql_real_escape_string($_POST['pmmail'])."' WHERE username='".$session->username."'");
  if($result) {
    // de query is gelukt, ga hier verder....
  } else {
    // De query is mislukt, toont hier een error uit mysql_error()
  } 
}
?>


Bedankt, nu is de code goed.
Alleen een probleem: wat voor database-tabel-structuur heb je nodig om een radio-button op te slaan? Bijvoorbeeld: CHAR, VARCHAR, INT enzovoort.
Een TINYINT(1) zal over het algemeen wel volstaan.
<label for="1">&nbsp;Ja</label></input>
</td>
</tr>
<tr>
<td>
<input type="radio" name="pmmail" value="0">
</td>
<td>
<label for="0">&nbsp;Nee</label></input>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Opslaan" class="button button_blue button_submit">
</td>
</tr>
</form>
</tbody>
</table>
<?php
if (isset($_POST['pmmail'])) {
$result = mysql_query("UPDATE settings SET pm_mail='".mysql_real_escape_string($_POST['pmmail'])."' WHERE username='".$session->username."'");
if($result) {

} else {
echo "Fout: De instellingen kunnen niet worden opgeslagen!";
}
}
?>
Ik doe wel een hoop verkeerd, maar ik weet niet wat, hierboven de complete code zonder het lay-out.

In mijn database heb ik staan:


Het geeft geen error, maar het doet het gewoon niet, ik kan er niet uitkomen wat ik fout doe.
Zet de query in een var, en echo deze naar het scherm.
Ik vermoed deze output:
UPDATE settings SET pm_mail='0' WHERE username=''

Tenzij je ergens eerder in je script van $session een object gemaakt hebt (uit de superglobal $_SESSION array)
Dan komt er dit uit:

UPDATE settings SET pm_mail='' WHERE username='Marco'

Reageren