[OPGELOST] MySQL: Updaten van tabel lukt niet, normaal wel
Nu werkt alles behalve het opslaan, ik krijg ook geen errors.
Dit is het stukje om de tabel te updaten:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$pmmail = $_POST['pmmail'];
if (isset($_POST['pmmail'])) {
mysql_query('UPDATE settings SET pm_mail=$_POST["pmmail"] WHERE username="$session->username"');
?>
$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!
Gewijzigd op 22/01/2013 19:55:09 door - Marco -
Je foutafhandeling is op vakantie, zet je variabelen buiten quotes, en beveilig je $_POST variabelen met mysql_real_escape_string
Code (php)
1
2
3
4
5
2
3
4
5
<?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!");
}
?>
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.
Code (php)
1
2
3
4
2
3
4
<?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!");
?>
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?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()
}
}
?>
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()
}
}
?>
Gewijzigd op 21/01/2013 21:45:24 door - Ariën -
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.
</td>
</tr>
<tr>
<td>
<input type="radio" name="pmmail" value="0">
</td>
<td>
<label for="0"> Nee</label></input>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Opslaan" class="button button_blue button_submit">
</td>
</tr>
</form>
</tbody>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?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!";
}
}
?>
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.
Gewijzigd op 22/01/2013 18:45:51 door - Marco -
Ik vermoed deze output:
Tenzij je ergens eerder in je script van $session een object gemaakt hebt (uit de superglobal $_SESSION array)
UPDATE settings SET pm_mail='' WHERE username='Marco'
Dat betekent dat beide radio's niet gechecked zijn.
Test.php
<label for="pmmail">Stuur mij een e-mail als ik een nieuw bericht heb:</label>
<table>
<tbody>
<form>
<tr>
<td>
<input type="radio" name="pmmail" value="1">
</td>
<td>
<label for="1"> Ja</label></input>
</td>
</tr>
<tr>
<td>
<input type="radio" name="pmmail" value="0">
</td>
<td>
<label for="0"> Nee</label></input>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Opslaan" class="button button_blue button_submit">
</td>
</tr>
</form>
</tbody>
</table>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
session_start();
include("include/constants.php");
include("include/session.php");
?>
session_start();
include("include/constants.php");
include("include/session.php");
?>
<label for="pmmail">Stuur mij een e-mail als ik een nieuw bericht heb:</label>
<table>
<tbody>
<form>
<tr>
<td>
<input type="radio" name="pmmail" value="1">
</td>
<td>
<label for="1"> Ja</label></input>
</td>
</tr>
<tr>
<td>
<input type="radio" name="pmmail" value="0">
</td>
<td>
<label for="0"> Nee</label></input>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Opslaan" class="button button_blue button_submit">
</td>
</tr>
</form>
</tbody>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql = "UPDATE settings SET pm_mail='".mysql_real_escape_string($_POST['pmmail'])."' WHERE username='".$session->username."'";
echo "$sql";
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!";
}
}
?>
$sql = "UPDATE settings SET pm_mail='".mysql_real_escape_string($_POST['pmmail'])."' WHERE username='".$session->username."'";
echo "$sql";
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!";
}
}
?>
Gewijzigd op 22/01/2013 19:46:39 door - Marco -
Ik zie de pmmail=1 in de url verschijnen dus heb je form action niet op post gezet.
Het lag inderdaad daaraan!