Avatar billede xirox Nybegynder
03. maj 2008 - 22:01 Der er 15 kommentarer og
1 løsning

En slags if funktion

Hej eksperter

Jeg skal bruge en if funktion til min mysql query, men jeg kan ikke helt finde ud af hvordan jeg skal klare den.

Det den skal gøre er at tjekke om det nye tal som er tastet ind i tal boksen er større end det som allerede var i boxen. Hvis det er det samme eller lavere end det tal der allerede står skal den nemlig ikke kunne lave min query. Så kan man ikke lave en slags if funktion til det?

/XiroX

Hvordan gør jeg
Avatar billede erikjacobsen Ekspert
03. maj 2008 - 22:03 #1
Er det en update?

  UPDATE dintabel SET felt=7 WHERE id=7913 AND felt<7
Avatar billede xirox Nybegynder
03. maj 2008 - 22:07 #2
Det er en kombi. Det er både med update og insert
Avatar billede xirox Nybegynder
03. maj 2008 - 22:08 #3
<?

mysql_query("INSERT INTO now (id, auctionid, user, pass, price, start, stop, aktiv) VALUES ('$id','$id','$user','$pass','$bud','$date','$stop','1')");
mysql_query("UPDATE action set pricenow = '$price' WHERE id='$id' ");
?>
Avatar billede xirox Nybegynder
03. maj 2008 - 22:11 #4
Ja ok jeg kan godt se pointen i det, faktisk meget simpelt hehe. Prøver lige engang
Avatar billede xirox Nybegynder
03. maj 2008 - 22:16 #5
Jeg kan godt få det til at virke på updaten men ikke på Insert. Hvordan der?
Avatar billede erikjacobsen Ekspert
03. maj 2008 - 22:25 #6
Du kan ikke sætte en WHERE på en INSERT, hvis det er hvad du prøver på. Men hvorfor er det egentlig, at den kontrol skal ske i SQL-en, og ikke i din PHP-kode?
Avatar billede xirox Nybegynder
03. maj 2008 - 22:29 #7
Det var faktisk fordi jeg troede det var nemmest at lave den som en if under indsættelsen
Avatar billede xirox Nybegynder
03. maj 2008 - 23:21 #8
Hvordan kan jeg klare den så?
Avatar billede erikjacobsen Ekspert
03. maj 2008 - 23:45 #9
Jeg ville nok bare lave det i PHP-koden.
Avatar billede wuggawugga Nybegynder
04. maj 2008 - 01:31 #10
Du bliver nok nødt til at lave et ekstra udtræk, for at chekce det nuværende max. bud, i forbindelse med at du indsætter det nye bud. Det kunne jo være at en anden bruger i mellemtiden har afgivet et højere bud:

mysql_query('BEGIN');
$res = mysql_query('SELECT pricenow FROM action WHERE id =?');
$row = mysql_fetch_assoc($res);
if($row['pricenow'] < $bud) {
    // INSERT
    // UPDATE
}
Avatar billede xirox Nybegynder
04. maj 2008 - 12:17 #11
SÅ har jeg lavet den sådan her

<?

mysql_query('BEGIN');
$res = mysql_query('SELECT pricenow FROM mmauktion_auction WHERE id ='$id'');
$row = mysql_fetch_assoc($res);
if($row['pricenow'] < $bud) {
mysql_query("INSERT INTO mmauktion_winner_now (id, auctionid, user, pass, price, start, stop, aktiv) VALUES ('$id','$auctionid','$user','$pass','$bud','$date','$stop','1')");
mysql_query("UPDATE mmauktion_auction set pricenow = '$bud' WHERE id='$auctionid' AND pricenow<$bud ");
}
?>

Men får en fejl der hedder
Parse error: syntax error, unexpected T_VARIABLE in budok.php
Avatar billede wuggawugga Nybegynder
04. maj 2008 - 13:08 #12
- Der er lidt rod i dine gåseøjne
- BEGIN er ikke strengt taget nødvendig med mysql (jeg bruger selv en anden database - har ikke brugt mysql i 100 år)
- Du skal huske at escape dine variable inde i din query med mysql_escape_string()
Avatar billede xirox Nybegynder
04. maj 2008 - 13:38 #13
Hvor skal jeg putte den ind henne? Bare lige efter.
mysql_query("UPDATE mmauktion_auction set pricenow = '$bud' WHERE id='$auctionid' AND pricenow<$bud ");
mysql_escape_string()

}
?>
Avatar billede wuggawugga Nybegynder
04. maj 2008 - 13:50 #14
For eksempel:

mysql_query("UPDATE mmauktion_auction set pricenow = '"..mysql_escape_string($bud)."' WHERE id='".mysql_escape_string($auctionid)."' AND pricenow < ".mysql_escape_string($bud));
Avatar billede xirox Nybegynder
07. maj 2008 - 19:45 #15
Jeg kan simpelhend ikke få det til at du, altså selv update virker skam fint nok, men kan ikke få den til at lave min insert
Avatar billede xirox Nybegynder
16. april 2011 - 21:25 #16
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester