[php] Dropdown update probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 163683

Topicstarter
Hee mensen,

Ik ben bezig met een script waar mensen foto's punten kunnen toekennen.
Ik haal nu dmv een dropdown alle fotonummers op.
Wanneer de bezoeker het juiste nr geselecteerd heeft en op de knop met 'bevestig uw stem' geklikt heeft, moet er een UPDATE gestart worden die drie punten aan de geselecteerde nummer toekent.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
                if (isset($_POST['bewerk'])){ 
    
    $query = "UPDATE admin_foto SET foto_score='$fotoscore'+3 WHERE foto_nr='$wedstrijd1'"; 
    $query1 = mysql_query($query); //or die(mysql_error()); 
    echo "<div class='warning' align='center'>Deze foto is perfect bewerkt</div>";


 
                }
        else { 
                    $queryselect = 'SELECT DISTINCT foto_nr, foto_score FROM admin_foto WHERE foto_id2 = $wedstrijd_id ORDER BY foto_nr ASC';   
                    $row = mysql_query($queryselect); 
            $foto_score = $row[foto_score];
?>
<table class="content" cellpading="0" cellspacing="0" border="0">
  <tr>
    <td align="right"> Nummer 1 &nbsp; </td>
    <td width="50%">
    <form  method="post" name="formulier">
    <select name="wedsrijd1" id="wedstrijd1" STYLE="width: 50px">
<?
$query = mysql_query("SELECT DISTINCT foto_nr FROM admin_foto WHERE foto_id2 = $wedstrijd_id ORDER BY foto_nr ASC");
while ($row = mysql_fetch_assoc($query)){  

echo "<option>".$row[foto_nr]."</option>";

}
?>
    </select>

</td>
</tr>
<tr>
<td colspan="2">
<div align="center"><br/>
<input name="bewerk" type="submit" id="bewerk" value="[ Bevestig uw stem ]">
        </form>
</div>
</td>

</tr>
</table>
<?}?>


Nu heb ik de dropdown de naam 'wedstrijd1' gegeven. en ik dacht door deze te vergelijken in de UPDATE query, de juiste rij te selecteren. Echter doet ie nu niets.
Kan iemand me helpen, zodat er tijdens de UPDATE, 3 punten aan de geselecteerde foto_nr wordt toegevoegd.

Acties:
  • 0 Henk 'm!

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 10-06 21:34

scorpie

Supra Addict

Ligt het aan de typo "wedsrijd1" @ line 21 ?

non-ID-compatible browsers pakken dat namelijk als object zeg maar....

edit: BTW als je die data zo wil gebruiken, zou ik werken dmv:

$_POST['wedstrijd1'] in je $query..

[ Voor 34% gewijzigd door scorpie op 20-06-2006 22:48 ]

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


Acties:
  • 0 Henk 'm!

  • Trubo
  • Registratie: April 2005
  • Laatst online: 06:43
Anoniem: 163683 schreef op dinsdag 20 juni 2006 @ 22:40:
$query = "UPDATE admin_foto SET foto_score='$fotoscore'+3 WHERE foto_nr='$wedstrijd1'";
Volgens mij kan deze SQL query niet omdat SQL niet kan rekenen op deze manier.
Je zal in het php script de berekening moeten uitvoeren en dan met een update bewaren.

Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Waarschijnlijk staat register_globals in je php configuratie gedisabled en moet je met superglobals werken. Dat is maar goed ook, zie http://nl3.php.net/manual/en/security.globals.php voor meer informatie.

Simpel gezegd wordt het $_POST["wedstrijd1"] i.p.v. $wedstrijd1.

Daarnaast zie ik niet wat die $fotoscore in je sql statement doet, het lijkt me eerder dat het zo moet:
SQL:
1
UPDATE admin_foto SET foto_score=foto_score+3 WHERE foto_nr=1
* voor de duidelijkheid is het getal 1 een voorbeeld, dit SQL statement mag je zelf in je php code verwerken


Verder heb ik je code niet gecontrolleerd, maar je moet zo een stuk verder komen lijkt mij.

[ Voor 25% gewijzigd door [ash] op 21-06-2006 10:36 ]


Acties:
  • 0 Henk 'm!

Anoniem: 163683

Topicstarter
@Scorperito
Bedankt, maar de typfout was het niet
en de $_POST['wedstrijd1'], maakt geen verschil

@Trubo
Nee kan wel, want als ik de query niet met WHERE specificeer, dan werkt ie wel (op alle tabel foto_nr)

@ASH
Dat is idd het idee jah,
maar het kan ook zijn dat foto_nr juist 2, 3, etc is.
In de dropdown kan de bezoeker dus de foto nummer selecteren. Deze is dus bij elke update anders

[ Voor 33% gewijzigd door Anoniem: 163683 op 20-06-2006 22:55 ]


Acties:
  • 0 Henk 'm!

  • scorpie
  • Registratie: Augustus 2001
  • Laatst online: 10-06 21:34

scorpie

Supra Addict

Heb je om te debuggen al bovenaan in de if statement wat variables laten echo'en zodat je zeker weet wat daarin staat? Vind de code er trouwens ook niet echt overzichtelijk uitzien zo met query, query1, queryselect enzo, maar dat kan ook aan mij liggen ;p

wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470


Acties:
  • 0 Henk 'm!

Anoniem: 163683

Topicstarter
Ja ik heb wedstrijd1 door echo gehaald, en wanneer ik foto 1 selecteer, geeft ie ook 1 ni de echo.
Dus het ligt denk ik aan de query

De query is nu:
PHP:
1
$query = "UPDATE admin_foto SET foto_score='$fotoscore'+3 WHERE foto_nr='".$_POST['wedstrijd1']."'";

[ Voor 81% gewijzigd door Anoniem: 163683 op 20-06-2006 23:22 ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Je query gaat je denk ik problemen opleveren als $fotoscore van je pagina komt zie het volgende scenario:
1) ik vraag de pagina op, fotoscore =3
2) iemand stemt ondertussen op de foto, waardoor de score in de db op 6 komt te staan
3) ik stem, fotoscore wordt 3+3 ipv 6+3

je kan overigens beter met mysql_affected_rows kijken of de update gelukt is of niet
PHP:
1
2
3
4
5
6
7
$query = "UPDATE admin_foto SET foto_score=foto_score+3 WHERE foto_nr=".intval($_POST['wedstrijd1']);
$result = mysql_query($query) or die(mysql_error());
if(mysql_affected_rows() > 0) {
  // update gelukt
} else {
  // update mislukt
}

@Hieronder: dan nog wordt de variabele verder niet in het form gebruikt ;)

[ Voor 8% gewijzigd door TheRookie op 21-06-2006 08:34 ]


Acties:
  • 0 Henk 'm!

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 10-06 10:11
Sorry hoor, maar ben ik de enige die dit ziet:
PHP:
1
2
3
$queryselect = 'SELECT DISTINCT foto_nr, foto_score FROM admin_foto WHERE foto_id2 = $wedstrijd_id ORDER BY foto_nr ASC';   
$row = mysql_query($queryselect); 
$foto_score = $row[foto_score];


Volgens mij wil je het zo hebben:
PHP:
1
2
3
4
$queryselect = 'SELECT DISTINCT foto_nr, foto_score FROM admin_foto WHERE foto_id2 = $wedstrijd_id ORDER BY foto_nr ASC';   
$result = mysql_query($queryselect);
$row = mysql_fetch_assoc($result);
$foto_score = $row[foto_score];


Ik weet niet precies wat het probleem is, ik heb meteen naar je code gekeken, en dit viel op.

Probeer anders je query in phpMyAdmin uit te voeren.

[ Voor 7% gewijzigd door Mr. Bondt op 21-06-2006 08:24 ]


Acties:
  • 0 Henk 'm!

Anoniem: 163683

Topicstarter
@Rookie

wat doet die intval precies in de query?
Zo doet ie het idd wel :)

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Ik zou zeggen kijk ff op php.net: intval, 't is niet noodzakelijk, maar zo weet je iig zeker dat je een integer gebruikt voor je ID...
Ik zou ook eens kijken naar mysql_escape_string om eventuele sql injection te voorkomen (vertrouw nooit input die via een form gedaan wordt)

[edit]
Als je het echt netjes wil doen controleer je voordat je de update uit gaat voeren eerst of $_POST['wedstrijd1'] inderdaad een getal is, zo ja: update uitvoeren, zo nee: geef een foutmelding

[ Voor 26% gewijzigd door TheRookie op 21-06-2006 08:53 ]


Acties:
  • 0 Henk 'm!

Anoniem: 163683

Topicstarter
Maar bij een dropdown bepaal ik toch vooraf of het een string of integer is?
Als ik alleen getallen in een dropdown zet, kan de waarde toch niet iets anders worden?
of zie ik dat verkeerd?

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Wat nu als ik jouw pagina/formulier nabouw en in de POST action jouw php file opgeef ?
Je script krijgt 'geldige' $_POST values binnen, maar jij hebt geen invloed op de inhoud ;)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:04

crisp

Devver

Pixelated

Druk ook je queries eens af. Variabelen binnen enkele quotes worden niet geparsed...
Anoniem: 163683 schreef op woensdag 21 juni 2006 @ 08:55:
Maar bij een dropdown bepaal ik toch vooraf of het een string of integer is?
Als ik alleen getallen in een dropdown zet, kan de waarde toch niet iets anders worden?
of zie ik dat verkeerd?
a) het is te faken
b) waarden vanuit een formulier zijn in principe altijd strings

[ Voor 70% gewijzigd door crisp op 21-06-2006 10:13 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • SirQuack
  • Registratie: Juni 2006
  • Laatst online: 26-05 12:37
:? :? ik vat het niet. wat is de code nu. ik wi he m ok op m'n site. :? :? ;) hij is namelijk errug handig!

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Wat heb je er zelf al van geprobeert te maken, en waar zit je vast ?
Pagina: 1