mbst Skrevet 30. april 2005 Del Skrevet 30. april 2005 (endret) Har fikset det nå. Feilen var litt sammensatt. Men om noen skulle få tilsvarende problemer senere, anbefaler jeg like godt å gå gjennom http://www.awtrey.com/tutorials/dbeweb/ og se der. Der forklares ting greit. -- [Oppdatert: har endret litt på siden, den er nå ikke lenger realisert som jeg skrev under her med kun én php-fil, men spørsmålet om hvorfor jeg ikke får lagt inn data gjelder forstsatt. Koden er fra den gamle siden, men de form-relaterte delene er fortsatt som de var.] Tester ut php/sql, har fått hjelp av en kamerat til å komme i gang. Har erfaring fra flere andre språk, så starten har vært relativt uproblematisk. Men har problemer med et kommentar-skjema som skal kunne fylles ut. http://www.stud.ntnu.no/~martis/php/kommentarer.php Måten jeg gjør det på funket greit på en annen test ( http://www.stud.ntnu.no/~martis/test/index.php ) jeg gjorde, men nå legges ikke ting inn i databasen lenger, av ukjent årsak. Lesing fra den funker imidlertid som det skal. Jeg har realisert hele nettsiden som én fil index.php som tar inn en variabel i url'en og etter hvert kjører ned i en if-setning som tar seg av hver av del-sidene separat. Det er altså undersiden "kommentarer" som byr på problemer -- når man har skrevet inn noe i form'en og sendt den, legges som sagt ikke dataene til i databasen. Dessuten er det et problem at etter at man har trykket på knappen for å sende en kommentar, så returneres man til default-siden, og ikke kommentar-siden (hvor jeg hadde regnet med at databasen over innlegg ville lastes), dette til tross for at side-valg-variabelen $p settes til den som gjelder for kommentar-siden. Har lagt inn kommentarer med @@@ for lesbarhet på forumet. Disse linjene er ikke i fila mi. Koden jeg ser etter feil i er altså funksjonen function write_form() i toppen av fila, samt koden i første elseif-setning nedi der. <?php include(<SENSURERT>); function connect_func(){ if (!($connection = mysql_connect($hostName, $userName, $password))) showerror(); if (!mysql_select_db("martis_hp", $connection)) showerror(); } @@@funksjon_start function write_form(){ echo ' <tr> <td>Navn:</td> <td><form name="form" action="index.php" method="post"><input type="text" name="input_navn"></td> </tr> <tr> <td>Kommentar:</td> <td><textarea rows="5" cols="40" name="input_kommentar"></textarea></td> </tr> <tr> <td></td> <td><input type="submit" name="submit" value="Legg inn kommentar"></form></td> </tr> '; } @@@funksjon_slutt ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>martin(2)</title> <style type="text/css"> body { background-color: #ffffff; font-family: "Arial"; font-size: 8pt; } .intro{ color: #000000; font-weight: bold; } .kommentarer, .nyheter{ color: #888888; } #meny{ color: #888888; } a:link { color: #77A1CA; } a:visited { color: #77A1CA; } a:hover { color: #77A1CA; } a:active { color: #77A1CA; } </style> </head> <body> <div align="center"> <table width="600" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="36"><div align="right"><img src="images/fr_ul.gif" width="36" height="36"></div></td> <td><img src="images/fr_uc.gif" width="100%" height="36"></td> <td width="36"><img src="images/fr_ur.gif" width="36" height="36"></td> </tr> <tr> <td width="36"><img src="images/fr_ml.gif" width="36" height="100%"></td> <!-- Midtre tabellcelle start (hovedinnhold) --> <td> <div id="meny" align="right"> <a href="index.php?p=hjem">hjem</a> | <a href="index.php?p=linker">linker</a> | <a href="index.php?p=kommentarer">kommentarer</a> | <a href="index.php?p=admin">admin</a> </div> <table width="600" border="0" cellspacing="5" cellpadding="0"> <tr> <td width="72"><img src="images/mbs01.jpg" width="96" height="101"></td> <td class="intro"> Martin bs<br> Teknisk kybernetikk, 3. år<br> <a href="mailto:martis..stud.ntnu.no">Elektronisk post</a><br> Tlf 41 61 07 25 </td> </tr> </table> <?php if (!($connection = mysql_connect($hostName, $userName, $password))) showerror(); if (!mysql_select_db("martis_hp", $connection)) showerror(); $query = "SELECT dato,nyhet FROM forside_nyheter ORDER BY id DESC"; $result = MySQL_query($query); ?> <table width="600" border="0" cellspacing="5" cellpadding="0"> <?php if( $p=="hjem" || $p==NULL ){ //$rows = MYSQL_fetch_array($result); while ($rows=MYSQL_fetch_array($result)){ $dato=$rows['dato']; $nyhet=$rows['nyhet']; echo '<tr><td colspan="2"><img src="images/line_hz1.gif" width="100%" height="1"></td></tr>'; echo '<tr class="nyheter"><td colspan="2">'.$dato.'</td></tr>'; echo '<tr class="nyheter"><td> </td><td>'.$nyhet.'</td></tr>'; } } @@@elseif_start elseif($p=="kommentarer"){ echo '<tr><td colspan="2"><br></td></tr>'; write_form(); $p=kommentarer; echo '<tr><td colspan="2"><br></td></tr>'; if($submit){ if(is_null($input_navn) || is_null($input_kommentar)){ echo '<tr><td colspan="2"><font color="red">Fyll inn både navn og kommentar!</font></td></tr>'; } else{ $query = "INSERT INTO kommentarer (navn,kommentar) VALUES ('$input_navn','$input_kommentar')"; $result = MySQL_query($query); } } $query = "SELECT navn,kommentar FROM kommentarer ORDER BY id DESC"; $result = MySQL_query($query); while ($rows = MYSQL_fetch_array($result)){ $navn=$rows['navn']; $kommentar=$rows['kommentar']; //$dato=$rows['dato']; echo '<tr><td colspan="2"><img src="images/line_hz1.gif" width="100%" height="1"></td></tr>'; echo '<tr class="kommentarer"><td colspan="2">'.$dato.' '.$navn.'</td></tr>'; echo '<tr class="kommentarer"><td> </td><td>'.$kommentar.'</td></tr>'; } } @@@elseif_slutt ?> </table> <p> </td> <!-- Midtre tabellcelle slutt (hovedinnhold) --> <?php mysql_close(); ?> <!--sideavslutning--> <td width="36"><img src="images/fr_mr.gif" width="36" height="100%"></td> </tr> <tr> <td width="36" height="36"><img src="images/fr_ll.gif" width="36" height="36"></td> <td height="36"><img src="images/fr_lc.gif" width="100%" height="36"></td> <td width="36" height="36"><img src="images/fr_lr.gif" width="36" height="36"></td> </tr> </table> </div> </body> </html> Jeg er klar over at dette sikkert ikke er den beste måten å implementere dette på, synes det blir litt rotete og dårlig strukturert med all kode i én fil, men dette er tross alt mitt første forsøk. Hadde vært fint om noen kunne hjelpe. Endret 13. mars 2009 av mbst Lenke til kommentar
Moul Skrevet 30. april 2005 Del Skrevet 30. april 2005 Jeg kan ikke se at du har noen $_POST til variablene dine fra skjemaet. Slik som dette: $input_navn=$_POST['input_navn']; $input_kommentar=$_POST['input_kommentar']; $submit=$_POST['submit']; Hvis global_variables er satt til off i php.ini fila er dette grunnen til at du ikke får fanget opp inputene fra skjemaet ditt. Lenke til kommentar
mbst Skrevet 30. april 2005 Forfatter Del Skrevet 30. april 2005 Takk for svaret, skal se på det etterpå, må bare spise og se Rocky først Lenke til kommentar
EirikO Skrevet 30. april 2005 Del Skrevet 30. april 2005 (endret) Ser du har siden hos ntnu.. husk at det er ekstremt lett for andre studenter å finne passordet til databasen din... Så du bør tenke over hva du har der, pluss bruke et passord du ikke bruker andre steder... Noe som løser noe av problemet kan være å opprette en bruker som kun kan skrive og lese fra databasen, da kan folk i alle fall ikke slette noe... Du bør heller ikke ha passordet i en *.inc fil.. Endret 30. april 2005 av EirikO Lenke til kommentar
mbst Skrevet 30. april 2005 Forfatter Del Skrevet 30. april 2005 Ser du har siden hos ntnu.. husk at det er ekstremt lett for andre studenter å finne passordet til databasen din... Så du bør tenke over hva du har der, pluss bruke et passord du ikke bruker andre steder... Noe som løser noe av problemet kan være å opprette en bruker som kun kan skrive og lese fra databasen, da kan folk i alle fall ikke slette noe...Du bør heller ikke ha passordet i en *.inc fil.. Jepp, har lurt på det med sikkerhet.. er ikke sikker på hvordan man best løser det.. Jeg har ihvertfall passet på at brukeren som driver på på www ikke kan slette databaser etc, samt at han har et eget, "uviktig" passord. Men har nok for dårlig kjennskap til databaser, php etc til å vite om noen super løsning. Kanskje noen har et par gode tips? Lenke til kommentar
EirikO Skrevet 30. april 2005 Del Skrevet 30. april 2005 Kanskje noen har et par gode tips? Tror ikke det er så mye du får gjort så lenge sidene ligger på ntnu sin server. Alle studentene kan fritt lese kilde-koden... (Altså se kilden til php-fila). Kyb er best! Lenke til kommentar
mbst Skrevet 30. april 2005 Forfatter Del Skrevet 30. april 2005 Jeg kan ikke se at du har noen $_POST til variablene dine fra skjemaet. Slik som dette: $input_navn=$_POST['input_navn']; $input_kommentar=$_POST['input_kommentar']; $submit=$_POST['submit']; Hvis global_variables er satt til off i php.ini fila er dette grunnen til at du ikke får fanget opp inputene fra skjemaet ditt. Har sett på det nå, og ja, det er klart, hvis php er som andre språk jeg kjenner, så skulle jeg tro at man enten måtte returnere variablene fra funksjonen write_form(), eller sette variablene globale. Men som sagt så funker denne koden på en annen test-side. Prøvde allikevel $_POST[]-kommandoene du tipset meg om, var litt usikker på hvor de skulle stå, prøvde meg litt frem, fikk hvertfall ingen feilmeldinger. Men det ser heller ikke ut til å ha hjulpet. Men det er altså som sagt et eller annet rart som skjer når man trykker submit-knappen, for av en eller annen grunn så hopper man da tilbake til default-siden, i stedet for å fortsette på koden som hører til kommentar-siden. Vel, jeg får vel kanskje bite i det sure eplet og stykke opp siden i flere separate filer, tror dette skal hjelpe meg, men det blir dog litt dumt siden jeg har en del av innholdet felles på alle sidene. Da virker det jo greiere å stykke opp "renderingen" i flere grener der det trengs. Lenke til kommentar
mbst Skrevet 30. april 2005 Forfatter Del Skrevet 30. april 2005 Alle studentene kan fritt lese kilde-koden... (Altså se kilden til php-fila). Usj og fysj, ja, ok, takk for tipset (; Kyb er best! Yay! Du går der også? Hvilket klassetrinn går du i? Lenke til kommentar
mikaelandre Skrevet 30. april 2005 Del Skrevet 30. april 2005 Kyb er best! neineinei, datateknikk 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å