05. marts 2011 - 01:57Der er
14 kommentarer og 1 løsning
PHP problem med at sende til database?
Jeg kan ikke lige se hvorfor jeg ikke kan få det til at fungere, dog siger den i en fejlmeddelse af variablerne gront, brod, etc etc. ikke er defineret..? Her er koden:
START
<?php echo" <center> <h2> Her kan du udfylde din helt egen indkøbsliste </h2> </center> "; // her kommer jeg i kontakt med databasen $connect = mysql_connect ("localhost", "root", "") or die("Error connecting to db"); // her vælger jeg vores database mysql_select_db("indkob") or die ("Error selecting db"); // her vælger jeg hvilke værdier jeg vil sætte ind i tabellen $sql = "INSERT INTO liste (gront, brod, fryseren, koledisken, hus, andet) VALUES ('$_POST[gront]','$_POST[brod]','$_POST[fryseren]','$_POST[koledisken]','$_POST[hus]','$_POST[andet]')"; // Her laver jeg min form til at sende data til databasen echo " <form action='indkoebsliste.php' method='POST'> <center> <table> <tr> <td> <center><p> Frugt og Grønt: </p></center> <TEXTAREA NAME='gront' COLS=20 ROWS=14></textarea> </td>
<td> <center><p> Brød og boller: </p></center> <TEXTAREA NAME='brod' COLS=20 ROWS=14></textarea>
</td> <td> <center><p> Fra fryseren: </p></center> <TEXTAREA NAME='fryseren' COLS=20 ROWS=14></textarea>
<center> <input type='submit' name='submit' value='Klik her for at se din færdige indkøbsliste' onClick='window.open('print.php','popup','width=500,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false' > </center>
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Ups, nu er det gamle "cacheproblem" vist tilbage. Så ikke Arne's svar, før jeg havde klikket på 'opret' :( Igår kunne jeg ikke komme videre før jeg havde oprettet christian_belgiens svar, som var under min preview??? Må være noget session id kaos.
<center> <input type='submit' name='submit' value='Klik her for at se din færdige indkøbsliste' onClick='window.open('print.php','popup','width=500,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false' > </center>
Her får jeg fejlmeddelsen, når jeg prøver at indsætte værdier i min form: Undefined variable $gront, og det siger den til alle de andre variabler, at de ikke er defineret. Nogle ideer?
creldemaster: Det jeg noterer mig er at submit knappen "name='submit'" sidder udenfor formular med de tekstfelter brugerne udfylder. Derfor vil POST['groent'] o.s.v. ikke indeholde vaerdier hvilket sandsynligvis er grunden til at $groent er undefined.
Jeg kan ikke umiddelbart gennemskue din onclick event, saa jeg lader den ligge og koncentrerer mig om hoved-problemet, at faa brugernes input sendt til databasen. Proev at aendre formularen saaledes hvilket flytter submitknappen indenfor formularen:
echo " <form action='indkoebsliste.php' method='POST'> [de naeste 30 linier kode med tabel og textarea'erne uforandret] <input type='submit' name='submit' value='submit indkoebsliste'> </form></center> ";
..og michael_stim, et indlaeg jeg forsoegte at lave i gaar forsvandt paa mystisk vis. Det maa vaere det som dukkede op hos dig. (Da jeg ville lave det igen var der en anden der allerede havde lavet lignende kommentarer, saa jeg undlod.)
Hej tak for svaret.. men det havde desværre ingen indvirkning.. Jeg satte din submit knap ind i stedet for, men det onclick event, åbner et popopvindue med en browser med uden værktøjslinjer, scroll bar etc. det er der jeg smider dataen fra databasen ind til display. men det er ikke vigtigt i forhold til mit problem lige nu :)
Som sagt, satte jeg din submit ind, og jeg får samme fejlmeddelse på:
<?php echo" <center> <h2> Her kan du udfylde din helt egen indkøbsliste </h2> </center> "; // her kommer jeg i kontakt med databasen $connect = mysql_connect ("localhost", "root", "") or die("Error connecting to db"); // her vælger jeg vores database mysql_select_db("indkob") or die ("Error selecting db"); if (isset($_POST['submit'])) { $gront = $_POST ['gront']; $brod = $_POST['brod']; $fryseren = $_POST ['fryseren']; $koledisken = $_POST ['koledisken']; $hus = $_POST ['hus']; $andet = $_POST ['andet']; } if($gront||$brod||$fryseren||$koledisken||$hus||$andet) { $sql = "INSERT INTO liste (gront, brod, fryseren, koledisken, hus, andet) VALUES ('" . $_POST['gront'] . "','" . $_POST['brod'] . "','" . $_POST['fryseren'] . "','" . $_POST['koledisken'] . "','" . $_POST['hus'] . "','" . $_POST['andet'] . "')";
"; //disabled: //<center> <input type='submit' name='submit' value='Klik her for at se din færdige indkøbsliste' onClick='window.open('print.php','popup','width=500,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false' > </center>
Jamen saa foreslaar jeg at du forenkler videre og midlertidigt skipper valideringen. Nu er det vel saaledes at filen hedder indkoebsliste.php saa action i formularen kalder den rigtige side? Du kunne ogsaa forenkle til sige: <form action='' method='POST'>. Og naar du udskriver $_POST[] vaerdierne til simple variable kan du bruge disse variable i mysql forespoergslen. Det goer det lettere at overse. Og udskrive vaerdier for test. For eksempel noget i denne henretning:
og proev foerst at fylde noget i alle tekstfelterne i formularen. Hvis nogle vaerdier saa stadig er ukendte saa skulle det blive klart precis hvor det gaar galt hvilket vil hjaelpe til at debugge. Naar du saa kan poste til databasen kan du gaa tilbage og indsaette validering og onclick event o.s.v.
Så har jeg prøvet, den printer svarene fint, men sender ikke til databasen, den siger dog at 'submit' ikke er defineret.. Det kan jeg ikke lige se meningen med.
Her er ændringen:
<?php echo" <center> <h2> Her kan du udfylde din helt egen indkøbsliste </h2> </center> "; // her kommer jeg i kontakt med databasen $connect = mysql_connect ("localhost", "root", "") or die("Error connecting to db"); // her vælger jeg vores database mysql_select_db("indkob") or die ("Error selecting db"); //if (isset($_POST['submit'])) //{ //$gront = $_POST ['gront']; //$brod = $_POST['brod']; //$fryseren = $_POST ['fryseren']; //$koledisken = $_POST ['koledisken']; //$hus = $_POST ['hus']; //$andet = $_POST ['andet']; //} //if($gront||$brod||$fryseren||$koledisken||$hus||$andet) //{ //$sql = "INSERT INTO liste (gront, brod, fryseren, koledisken, hus, andet) //VALUES //('" . $_POST['gront'] . "','" . $_POST['brod'] . "','" . $_POST['fryseren'] . "','" . $_POST['koledisken'] . "','" . $_POST['hus'] . "','" . $_POST['andet'] . "')"; // //echo "Please wait... <meta http-equiv='refresh' content='2'> "; //} //else //echo " Fyld venligst mindst et felt ud" ; if($_POST['submit']) { $gront = $_POST ['gront']; $brod = $_POST['brod']; $fryseren = $_POST ['fryseren']; $koledisken = $_POST ['koledisken']; $hus = $_POST ['hus']; $andet = $_POST ['andet'];
echo "gront = $gront brod = $brod fryseren = $fryseren koledisken = $koledisken hus = $hus andet = $andet <br>";
//disabled: //<center> <input type='submit' name='submit' value='Klik her for at se din færdige indkøbsliste' onClick='window.open('print.php','popup','width=500,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false' > </center>
// lukker forbindelsen mysql_close($connect); ?>
alt det i // (commentary) er bare ting jeg disabled, til hvis jeg får brug for det senere. og ja formaction kalder den rigtige side.
hej igen, jeg fik det til at virke ved at sætte if løkken til en if isset. Mange tak for hjælpen, det virker endelig :D Post et svar så jeg kan afgive point :)
Nu kommer jeg i tvivl - du siger "den printer svarene fint" - mener du at den printer gront=blomkaal brod=rugbrod o.s.v. (hvis $gront er 'blomkaal' og $brod er 'rugbord'). Jamen det sidder i if($_POST['submit']{} og skulle kun printe hvis der modtages en $_POST vaerdi 'submit'. Hvornaar faar du beskedden at 'submit' ikke er defineret og hvordan lyder beskedden? Kunne du proeve at koere koden igen og saa vise det noejagtige output her?
Er ikke ligefrem en haj, i dette fag :) Men det jeg kan sige er at den virker med en if Isset og ikke med en if, det var det eneste jge skulle ændre i koden :)
creldemaster, forventer du flere indlaeg paa dette spoergsmaal? Ellers afslut det venligst, enten ved at acceptere mit svar (som du bad om) eller, hvis du har aendret mening, ved selv at oprette et svar og acceptere det. Men under alle omstaendigheder faa det afsluttet. Lad mig (og andre) ikke blive haengende i et aabent spoergsmaal. Please.
Synes godt om
Ny brugerNybegynder
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.