Gå til innhold

Legge inn 0 i en mysql db


Anbefalte innlegg

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
Videoannonse
Annonse

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
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 av aenima
Lenke til kommentar

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:

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.... :blush:

 

Dette funka ikke...

 

if (!is_numeric($_POST['us'])) { $error = 'Please add the score';
}	else {
 $us = $_POST['us'];
}

Endret av aenima
Lenke til kommentar
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

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
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.... :blush:

 

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...