Smidt Skrevet 3. august 2004 Del Skrevet 3. august 2004 (endret) 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 3. august 2004 av Smidt Lenke til kommentar
joffar Skrevet 3. august 2004 Del Skrevet 3. august 2004 (endret) 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 3. august 2004 av joffar Lenke til kommentar
???????? Skrevet 3. august 2004 Del Skrevet 3. august 2004 Du burde sjekke begge variablene dersom kravet kun er at den ene skal ha en verdi. if(!empty($dbname) or !empty($frontpage)){ Husk alltid å sjekke variabler før du setter de inn i mysql - mysql_escape_string() Lenke til kommentar
joffar Skrevet 3. august 2004 Del Skrevet 3. august 2004 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
Smidt Skrevet 3. august 2004 Forfatter Del Skrevet 3. august 2004 greit, jeg skulle brukt empty() i stedenfor, men jeg trenger en bit som avbryter insettingen av info til tabellen om en av stringene er tom. Jeg testet koden din joffar og det gikk an å poste med tomme stringer fortsatt. Lenke til kommentar
joffar Skrevet 3. august 2004 Del Skrevet 3. august 2004 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
mikaelandre Skrevet 3. august 2004 Del Skrevet 3. august 2004 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
Smidt Skrevet 3. august 2004 Forfatter Del Skrevet 3. august 2004 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
joffar Skrevet 3. august 2004 Del Skrevet 3. august 2004 (endret) 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 3. august 2004 av joffar Lenke til kommentar
???????? Skrevet 3. august 2004 Del Skrevet 3. august 2004 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
???????? Skrevet 3. august 2004 Del Skrevet 3. august 2004 (endret) 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 3. august 2004 av ???????? Lenke til kommentar
joffar Skrevet 3. august 2004 Del Skrevet 3. august 2004 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å Lenke til kommentar
Torbjørn Skrevet 4. august 2004 Del Skrevet 4. august 2004 (endret) 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 4. august 2004 av Torbjørn Lenke til kommentar
dabear Skrevet 4. august 2004 Del Skrevet 4. august 2004 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
Torbjørn Skrevet 4. august 2004 Del Skrevet 4. august 2004 å sjekke en variabel er vel like totalt nødvendig/unødvendig som å sjekke en annen variabel? Lenke til kommentar
Smidt Skrevet 4. august 2004 Forfatter Del Skrevet 4. august 2004 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
???????? Skrevet 4. august 2004 Del Skrevet 4. august 2004 (endret) 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 4. august 2004 av ???????? Lenke til kommentar
???????? Skrevet 4. august 2004 Del Skrevet 4. august 2004 if(!empty($dbname)){echo"you need to add a category name";} Den gjør jo ikke noe annet enn å skrive teksten. Legg til f.eks. exit; Lenke til kommentar
Smidt Skrevet 4. august 2004 Forfatter Del Skrevet 4. august 2004 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
???????? Skrevet 4. august 2004 Del Skrevet 4. august 2004 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
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å