aenima Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Jeg holder på med et match result script til websiden min, men får ikke lov å bruke 0 som resultat. I formen som lar meg legge inn resultater har jeg denne koden for registrering av resultatet: <td><b>Us:</b></td><td><input type=\"text\" name=\"us\" size=\"15\" maxlength=\"30\" value=\"".$_POST['us']."\"><p></td> </tr> </tr> <tr> <td><b>them:</b></td><td><input type=\"text\" name=\"them\" size=\"15\" maxlength=\"30\" value=\"".$_POST['them']."\"><p></td> Jeg har så laget en check om alle postene er fylt ut. Her er koden for hvordan jeg sjekker om resultatet vi fikk er skrevet inn. Jeg har en helt lik check om resultatet til motstanderen er skrevet inn. //check for a us if (empty($_POST['us'])) { $na = FALSE; $message .= '<p>you forgot to enter our score!</p>'; } else { $na = $_POST['us']; } Problem kommer når jeg vil skrive inn 0 som resultat. Noen som kan hjelpe meg her? Lenke til kommentar
Ernie Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Det kommer av at empty gir 1 hvis variablen bare er 0 altså egentlig false. Det som nok er løsningen er if(!isset($_POST['us'])) Lenke til kommentar
aenima Skrevet 14. mai 2006 Forfatter Del Skrevet 14. mai 2006 Så slik? if (!isset($_POST['us'])) { $na = FALSE; $message .= '<p>you forgot to enter our score!</p>'; } else { $us = $_POST['us']; } Jeg prøvde dette men får fortsatt feil. Må jeg kanskje ha satt noen attributter i db tabellen? slik den ser ut nå for resultatet: Field Type Length/Values1 Attributes Null Default2 us INT 10 not null Lenke til kommentar
The Red Devil Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Vist det er eit resultat du skal legge inn, altså tall. Så kan du bruke: if (!is_numeric($_POST['us'])) $error = 'Please add the score'; Lenke til kommentar
aenima Skrevet 14. mai 2006 Forfatter Del Skrevet 14. mai 2006 (endret) Vist det er eit resultat du skal legge inn, altså tall. Så kan du bruke: if (!is_numeric($_POST['us'])) $error = 'Please add the score'; 6100901[/snapback] Resultatet skrives inn i 2 input felt. 1 for vår score og 1 for motstanderens score. Grunnen er at jeg har en check som finner ut hvilken score som er høyest og legger inn farge på scoren om vi vant (grønt), spilte uavgjort (gult) eller tapte (rødt). Problemet er at jeg ikke får legge inn 0 i tabellen. selv uten den checken. har prøvd: $us == $_POST['us']; men da skjer det ikke noe. kan feilen ligge her?: if ($game && $u && $na && $us && $them && $ho && $l && $map1 && map2 && $irc && $txt) { //everything is OK. require_once ('mysql_connect.php'); // Connect to the db //make the query $query = "INSERT INTO OND_result (game, opponent, spilldag, us, them, type, demo, map1, map2, irc, postTXT ) VALUES ('$game', '$u', '$na', '$us', '$them', '$ho', '$l', '$map1', '$map2', '$irc', '$txt')"; $result = @mysql_query ($query); //run the query if ($result) { //if it ran OK echo '<p><b>Clan war result has been registrered!</b></p>'; } else { //if it didnt run ok $message = '<p>result could not be registrered due to a system error. We apologize for any inconvenience.</p><p>' . mysql_error() . '</p>'; } } else { $message.= '<p>Please try again</p>'; } } //end of message if there is one Feil mld som kommer opp er: please try again Endret 14. mai 2006 av aenima Lenke til kommentar
The Red Devil Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Grunnen er som nevnt tidligere at skriver du 0 så blir den variablen reknet som false. Prøv med å bruke is_numeric på dei verdiene som har bare tall. Lenke til kommentar
Peter Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 isset returnerer ikke false selv om variabelen er satt til 0. if(isset(...) && is_int(..)) { gjør noe } (bruk is_numeric dersom du bare vil sjekke at det er er numerisk verdi, men merk at dette også tillater flyttall) Her er en kjekk link som har blitt postet tidligere: http://www.deformedweb.co.uk/php_variable_tests.php Lenke til kommentar
The Red Devil Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Nei, du har rett isset lar 0 gå igjennom. Men du skal aldri bruke isset på form verdier, for isset vil ALLTID være sant. Med unntak av checkboxes som ikkje er krysset av. aenima: Vist du ikkje har sjekekt det ut ennå, så bør du ta ein titt på denne setningen: if ($game && $u && $na && $us && $them && $ho && $l && $map1 && map2 && $irc && $txt) { Lenke til kommentar
aenima Skrevet 14. mai 2006 Forfatter Del Skrevet 14. mai 2006 (endret) aenima:Vist du ikkje har sjekekt det ut ennå, så bør du ta ein titt på denne setningen: if ($game && $u && $na && $us && $them && $ho && $l && $map1 && map2 && $irc && $txt) { 6101501[/snapback] Vet ikke helt hva jeg skal se etter.... Dette funka ikke... if (!is_numeric($_POST['us'])) { $error = 'Please add the score'; } else { $us = $_POST['us']; } Endret 14. mai 2006 av aenima Lenke til kommentar
Peter Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Nei, du har rett isset lar 0 gå igjennom. Men du skal aldri bruke isset på form verdier, for isset vil ALLTID være sant. Med unntak av checkboxes som ikkje er krysset av. 6101501[/snapback] Du burde dog sjekke at array-indeksen er satt, ellers får du en klassisk "undefined index", derfor isset() og is_numeric/int() Lenke til kommentar
Zic0 Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 (endret) EDIT: Leste ikke godt nok. glem det Endret 14. mai 2006 av Zic0 Lenke til kommentar
The Red Devil Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 I akkurat det tilfellet trenger du ikkje å sjekke det Ein input verdi såframt det ikkje er ein checkbox vil alltid returnere ein verdi. Vist du ikkje setter den til ein verdi så vil den returnere ein tom string. Dvs. at $_POST['us'] vil alltid være der, så framt at den rette formen blir brukt. Så dermed vil ein enkel !is_numeric fungere like godt, selvfølgeleg kan du legge ein isset framføre men det er strengt tatt ikkje nødvendig. Lenke til kommentar
The Red Devil Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 aenima:Vist du ikkje har sjekekt det ut ennå, så bør du ta ein titt på denne setningen: if ($game && $u && $na && $us && $them && $ho && $l && $map1 && map2 && $irc && $txt) { 6101501[/snapback] Vet ikke helt hva jeg skal se etter.... Dette funka ikke... Vist du har denne koden i skriptet: if ($game && $u && $na && $us && $them && $ho && $l && $map1 && map2 && $irc && $txt) { Så feiler den der, på grunn av at nummer 0 blir rekna som false. Du bør ikkje bruke denne måten for å skjekke om verdiene er satt. Du kan prøve dette: (Note... eg veit ikkje kva verdier som er string eller kva som er int, bruk "!empty()" på alle string variablene og "is_numeric()" på alle int verdiene if (!empty($game) && !empty($u) && $na && is_numric($us) && is_numric($them) && !empty($ho) && !empty($l) && !empty($map1) && !empty(map2) && !empty($irc) && !empty($txt)) { Lenke til kommentar
aenima Skrevet 14. mai 2006 Forfatter Del Skrevet 14. mai 2006 if (!empty($game) && !empty($u) && $na && is_numric($us) && is_numric($them) && !empty($ho) && !empty($l) && !empty($map1) && !empty(map2) && !empty($irc) && !empty($txt)) { fikk denne feilen: Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /hsphere/local/home/aenima/mindgapmusic.com/results.php on line 117 Lenke til kommentar
The Red Devil Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 For kvar av variablene du skal sjekke om er der, tar du og og gjør dette: Vist verdien skal være tekst, bruk !empty() Vist verdien skal være eit nummer bruk is_numeric() Deretter går du over kvar av verdiene du bruker og legger til dei to kodene. Vil også anbefale deg å skru av register_globals og bruker $_POST istedenfor. Lenke til kommentar
Peter Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 feilen der oppe er at du skriver is_numric og ikke is_numeric (tipper jeg) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå