Gå til innhold

ikke utføre query om $ er tom


Anbefalte innlegg

jeg vil poste noe i en database bare om en av strengene inneholder en verdi. er den tom skal det ikke postes noe i databasen, men jeg får det ikke helt til.

<?php 
$dbname=$_POST["dbname"];
$frontpage=$_POST["frontpage"];
include "dbconnect.php";
if($dbname==""){die;}
else{
$q="INSERT into category (`dbname`,`frontpage`)
VALUES ('$dbname','$frontpage')";
$result= mysql_query($q, $connection) or die ("Could not execute query : $query." . mysql_error()); ; 
}
?>

Det er nok en logisk svikt et eller annet sted, men jeg finner ikke helt ut av det.

håper noen kan ta en titt :)

Endret av Smidt
Lenke til kommentar
Videoannonse
Annonse

Prøv med:

SQL  
<?php 
$dbname=$_POST['dbname'];
$frontpage=$_POST['frontpage'];
include "dbconnect.php";
if(!empty($dbname)){
$q="INSERT into category (`dbname`,`frontpage`)
VALUES ('$dbname','$frontpage')";
$result= mysql_query($q, $connection) or die ("Could not execute query : $query." . mysql_error());; 
}
?>  

 

edit skrivefeil./

Endret av joffar
Lenke til kommentar

Som ?????? sier, burde alle variablene som settes inn i en query sjekkes...

 

Litt på siden... en annen ting som kan være til hjelp dersom en kjører flere queryer lag forskjellige feilmeldinger slik at det blir lettere å finne ut hvilken query som kræsjer..

 

SQL  
<?php 
$dbname=$_POST['dbname'];
$frontpage=$_POST['frontpage'];
include "dbconnect.php";
if(!empty($dbname) || !empty($frontpage)){
$q="INSERT into category (`dbname`,`frontpage`)
VALUES ('$dbname','$frontpage')";
$result= mysql_query($q, $connection) or die ("Could not execute INSERT query : $q." . mysql_error());; 
}
?>  

 

rettet på feil variable i feilmeldingen din

Lenke til kommentar

Har du prøvd å kjøre en echo før spørringen?

 

SQL

<?php

$dbname=$_POST['dbname'];

$frontpage=$_POST['frontpage'];

include "dbconnect.php";

echo 'dbname'.$dbname.'frontpage'.$frontpage;

if(!empty($dbname) || !empty($frontpage)){

$q="INSERT into category (`dbname`,`frontpage`)

VALUES ('$dbname','$frontpage')";

$result= mysql_query($q, $connection) or die ("Could not execute INSERT query : $q." . mysql_error());

}

?>

 

Da får du iallefall se hva som overføres... evt om det er noe i den andre koden din som overføres uten at du vet om det.

Lenke til kommentar

Husk alltid å sjekke variabler før du setter de inn i mysql - mysql_escape_string()

dette var nytt for meg, gjeldder dette alt som skal inni en database? bør jeg kjøre mysql_escpae_string() hver gang jeg skal kjøre en insert eller update spørring? uansett verdier som skal inn?

Lenke til kommentar

det som er poenget er at lengre oppe på samme siden har jeg et skjema som variablene hentes fra, og det har action="<?php $_SERVER['PHP_SELF'] ?>".

når siden lastes vil jo php koden automatisk prøve å sette inn informasjonen fra skjemaet (som ikke er fylt ut) inn i databasen, men det vil jeg ikke at skal skje.

noen som har en glup idè som kan forhindre posting av tomme strenger?

Lenke til kommentar

Testet du med echo for å se hva som var i variablene?

 

 

Dersom du har en submit knapp, kan du jo kjøre en test på den,.

 

Feks..

 

Submit knappen har name='lagre'

 

if (!empty($_POST['lagre'])){deretter tester du om noen av felten er tomme, deresom alle er fylt ut, kjør query streng.}

 

virker iallefall hos meg...

Endret av joffar
Lenke til kommentar

Husk alltid å sjekke variabler før du setter de inn i mysql - mysql_escape_string()

dette var nytt for meg, gjeldder dette alt som skal inni en database? bør jeg kjøre mysql_escpae_string() hver gang jeg skal kjøre en insert eller update spørring? uansett verdier som skal inn?

Absolutt, da escaper den alle tegn som kan avslutte spørringen din.

Lenke til kommentar
action="<?php $_SERVER['PHP_SELF'] ?>".

action="<?= $_SERVER['PHP_SELF'] ?>"

 

AND - du skal sjekke at begge variablene er satt, ikke enten eller. OR vil kun kreve at en er satt.

Oops... litt for mye hastverk i kveld!

Endret av ????????
Lenke til kommentar
action="<?php $_SERVER['PHP_SELF'] ?>".

action="<?= $_SERVER['PHP_SELF'] ?>"

 

AND - du skal sjekke at begge variablene er satt, ikke enten eller. OR vil kun kreve at en er satt.

Oops... litt for mye hastverk i kveld!

Jepp... tenkte på det, men ble nok litt bakvendt her også :blush:

Lenke til kommentar

for å sjekke om det i det hele tatt er trykket på en knapp "submit" eller "send data", pleier jeg å bruke request method og sette den til "post" i skjemaet, omtrent slik:

 

i skjemaet:

 

<form method="post" ... >

flere <input>'s

<input type="submit">

</form>

 

 

Så i den delen av skriptet hvor du tar imot data:

 

if($_SERVER['REQUEST_METHOD'] == "POST"){

// put all kode relatert til innsetting av data her

}

 

EDIT: sql mode var ikke så verst for phpkode! takk for tips.

 

da kan du gå inn på siden uten at den dør hver gang fordi den forventer data. nå vil den kun prøve å sette inn data hvis du har trykket på knappen.

Endret av Torbjørn
Lenke til kommentar

Torbjørn, det der er totalt unødvendig. bare sett et navn xor id på submit, og deretter sjekke om den er satt i php.

<form method="post" ... >
flere <input />'s
<input type="submit" name="sende" id="sende" />
</form>

 

<?php
if($_POST['sende']) {
//osv
} else {

//osv
}?>

Lenke til kommentar

forslaget til navnebroren min virket.

<?php 
$dbname=$_POST['dbname'];
$frontpage=$_POST['frontpage'];
require "dbconnect.php";
if(!empty($dbname)){echo"you need to add a category name";}
if($_SERVER['REQUEST_METHOD'] == "POST"){
$q="INSERT into category (`dbname`,`frontpage`)
VALUES ('$dbname','$frontpage') ";
$result= mysql_query($q, $connection) or die ("Could not execute INSERT query : $q." . mysql_error());; 
}
else
{echo"you need to add a category name";}


?>

nå legges det ikke til noe info om jeg refresher siden og det ikke er trykket på submit.

men derimot om jeg trykker på submit kommer teksten "you need to add a category name" opp, men det postes noe selv om. kan jeg legge inn en die i den første if setningen?

Lenke til kommentar
Torbjørn, det der er totalt unødvendig. bare sett et navn xor id på submit, og deretter sjekke om den er satt i php.

<form method="post" ... >
flere <input />'s
<input type="submit" name="sende" id="sende" />
</form>

 

<?php
if($_POST['sende']) {
//osv
} else {

//osv
}?>

 

 

Det er en dårlig løsning å sjekke submit knappen - den sendes kun når den blik klikket på. Scriptet vil derfor ikke fungere om de klikker enter!

Endret av ????????
Lenke til kommentar
Det er en dårlig løsning å sjekke submit knappen - den sendes kun når den blik klikket på. Scriptet vil derfor ikke fungere om de klikker enter!

ser det ikke virker om jeg trykker enter ja.

har du et forslag til løsning ?????? ?

sånn du mente jeg kunne bruke exit?

if(!empty($dbname)){echo"you need to add a category name";
exit;}

Lenke til kommentar

Plasserer du exit der så vil den avsluttet scriptet der og ikke lagre noe i databasen.

 

Løsningen Torbjørn skrev er bra for å sjekke om det er sendt et skjema med POST. Det beste er å rett og slett sjekke at de varaiblene som skal lagres ikke er tomme, da må det være sendt noe.

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å
×
×
  • Opprett ny...