[OPGELOST] MySQL: Updaten van tabel lukt niet, normaal wel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Marco -

- Marco -

21/01/2013 21:00:51
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"');
?>

Overigens is "pmmail" een radio-button.
Alvast bedankt!
Gewijzigd op 22/01/2013 19:55:09 door - Marco -
 
PHP hulp

PHP hulp

27/11/2024 03:15:24
 
- Ariën  -
Beheerder

- Ariën -

21/01/2013 21:11:05
Quote Anchor link
Je foutafhandeling is op vakantie, zet je variabelen buiten quotes, en beveilig je $_POST variabelen met mysql_real_escape_string
 
- Marco -

- Marco -

21/01/2013 21:25:16
Quote Anchor link
Als ik dit doe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!");
}

?>

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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/01/2013 21:36:13
Quote Anchor link
isset controleert of een variabele bestaat, dus kan je daar geen resultaat van een functie aanhangen.
 
- Marco -

- Marco -

21/01/2013 21:39:48
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!");
?>

Nu geen errors, het wordt alleen niet opgeslagen.
 
- Ariën  -
Beheerder

- Ariën -

21/01/2013 21:44:30
Quote Anchor link
je gebruikt de functie mysql_real_escape_string() verkeerd. Je moet deze over je variabele halen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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()
  }
}

?>
Gewijzigd op 21/01/2013 21:45:24 door - Ariën -
 
- Marco -

- Marco -

22/01/2013 17:10:54
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/01/2013 17:19:10
Quote Anchor link
Een TINYINT(1) zal over het algemeen wel volstaan.
 
- Marco -

- Marco -

22/01/2013 18:45:00
Quote Anchor link
<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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!";
  }
}

?>

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:
Afbeelding

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 -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/01/2013 19:07:04
Quote Anchor link
Zet de query in een var, en echo deze naar het scherm.
Ik vermoed deze output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)
 
- Marco -

- Marco -

22/01/2013 19:14:29
Quote Anchor link
Dan komt er dit uit:

UPDATE settings SET pm_mail='' WHERE username='Marco'
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/01/2013 19:39:35
Quote Anchor link
Dat betekent dat beide radio's niet gechecked zijn.
 
- Marco -

- Marco -

22/01/2013 19:44:34
Quote Anchor link
Test.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?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">&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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!";
  }
}

?>
Gewijzigd op 22/01/2013 19:46:39 door - Marco -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/01/2013 19:49:52
Quote Anchor link
Ik zie de pmmail=1 in de url verschijnen dus heb je form action niet op post gezet.
 
- Marco -

- Marco -

22/01/2013 19:56:13
Quote Anchor link
Bedankt! Het is opgelost!
Het lag inderdaad daaraan!
 



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.