16. december 2005 - 09:38
Der er
10 kommentarer
Vil ikke skrive ned i databasen
Hejsa Jeg har lavet dette nyhedsscript men, kan jeg kan simpelthen ikke finde fejlen, det der er er at jeg ikke får noget indhold ned i databasen, nogen der kan hjælpe med at finde fejlen??? *********** Min opret_nyhed.php <?php require_once('../mysql_connect/hv04_mysql.php'); ?> <form action="?side=nyhed_pub" method="POST" enctype="application/x-www-form-urlencoded"> <table> <tr> <td colspan="2">Skriv en nyhed her:</td> </tr> <tr> <td>Overskrift:</td> <td><input type="text" size="40" name="overskrift"/></td> </tr> <tr> <td>Nyhed:</td> <td><textarea cols="40" rows="3" wrap="OFF" name="nyhed"></textarea></td> </tr> <tr> <td>Forfatter:</td> <td><input type="text" size="40" name="forfatter" /></td> </tr> <tr> <td>Kategori:</td> <td><select name="kategori"> <option>1 division</option> <option>Jyllandsserie</option> <option>Serie 2</option> <option>Junior 1</option> <option>Junior 2</option> <option>HV04 nyhed</option> </select></td> </tr> <tr> <td>Billede 1:</td> <td> <?php if (isset($_FILES['filnavn'])) { $query = "INSERT INTO billeder SET billednavn='".$_FILES['filnavn']['name']."'"; $Result1 = mysql_query($query) or die(mysql_error()); } { $tempfile = $_FILES['filnavn']['tmp_name']; $destination = "../billeder/nyhedsbilleder/{$_FILES['filnavn']['name']} "; copy($tempfile, $destination); } ?> <form action="?side=nyhed_pub" method="POST" enctype="multipart/form-data"> <input name="filnavn" type="file" id="filnavn" size="30" /> </p> </td> </tr> <tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td> </tr> <tr> <td><input type="submit" value="Publiser" /></td> <td></td> </tr> </table> </form></form> ************* ************* Min publiser_nyhed.php <?php require_once('../mysql_connect/hv04_mysql.php'); ?> Nyheden: <? echo $_POST[overskrift]; ?> er tilføjet <?php if(isset($_POST[overskrift]) && isset($_POST[nyhed]) && isset($_POST[forfatter]) && isset($_POST[kategori]) && isset($_POST[billede])) { mysql_query( "INSERT INTO nyhed" . "(id, overskrift, nyhed, forfatter, kategori, billede, dato) " . "VALUES ('$_POST[id]', " . "'$_POST[overskrift]', '$_POST[billede]', " . "'$_POST[nyhed]', '$_POST[forfatter]', " . "'$_POST[kategori]', '$_POST[dato]')"); } ?> ********************* ***************** MIN DATABASE for nyhed CREATE TABLE `nyhed` ( `id` int(10) NOT NULL auto_increment, `overskrift` varchar(100) NOT NULL default '', `nyhed` text NOT NULL, `billede` varchar(255) NOT NULL default '', `forfatter` varchar(100) NOT NULL default '', `kategori` enum('1 division','Jyllandsserie','Serie 2','Junior 1','Junior 2','HV04 nyhed') NOT NULL default 'HV04 nyhed', `dato` timestamp NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ******************* ****************** Min database for billeder CREATE TABLE `billeder` ( `billedid` int(255) NOT NULL auto_increment, `billednavn` varchar(255) NOT NULL default '', PRIMARY KEY (`billedid`), KEY `billedid` (`billedid`) ) ********************* Jeg har selv en ide om at det drejer sig om at jeg mangler noget omkring ID'en På forhånd tak :)
Annonceindlæg fra Deloitte
16. december 2005 - 10:14
#1
Først og fremmest er det en strålende ide, at tilføje 'or die...' til alle databasekald. mysql_query($sql) or die("Database error : " . mysql_error()); Så kommer den nemlig og fortæller dig, hvad du har gjort galt... Når du har et auto_increment felt må du ikke indsætte noget i dette - det gør databasen selv. Så fjern ID fra dine inserts og se om det ikke hjælper.
16. december 2005 - 14:38
#2
Omvendt kan mysql_error() være en dårlig ide i prod. system. En evt hacker vil kunne få en masse nyttig info ved at få en SQL til at fejle. Men som debug er die(mysql_error()); genial! :o)
16. december 2005 - 15:48
#3
doc404 Beklager med selvom jeg fjerner ID så virker det ikke.. Er der en der evt. vil prøve at skrive den om??
16. december 2005 - 16:15
#4
$_POST[xxx] skal være $_POST["xxx"]. Du mangler "... Og så skal du bygge din sql streng lidt anderledes for ikke, at ende i " kaos. $sql = "VALUES ('" . $_POST["overskrift"] . "','" . $_POST[billede] osv.. mysql_query($sql) or die.....
17. december 2005 - 18:31
#5
Jeg har nu prøvet at omskrive det hele med følgende kode: <?php require_once('../mysql_connect/hv04_mysql.php'); ?> <form action="?side=nyhed_pub" method="post" name="nyhed" id="nyhed"> <table> <tr> <td colspan="2">Skriv en nyhed her:</td> </tr> <tr> <td>Overskrift:</td> <td><input type="text" size="40" name="overskrift"/></td> </tr> <tr> <td>Nyhed:</td> <td><textarea cols="40" rows="3" wrap="OFF" name="nyhed"></textarea></td> </tr> <tr> <td>Forfatter:</td> <td><input type="text" size="40" name="forfatter" /></td> </tr> <tr> <td>Kategori:</td> <td><select name="kategori"> <option>1 division</option> <option>Jyllandsserie</option> <option>Serie 2</option> <option>Junior 1</option> <option>Junior 2</option> <option>HV04 nyhed</option> </select></td> </tr> <tr> <td>Billede 1:</td> <td> </td> </tr> <tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td> </tr> <tr> <td><input type="submit" value="Publiser" /></td> <td></td> </tr> </table> </form> <?php if (isset($_POST["overskrift"]) && isset($_POST["nyhed"]) && isset($_POST["kategori"]) && isset($_POST["forfatter"])){ mysql_query( "INSERT INTO nyhed" . "(overskrift, nyhed, kategori, forfatter) " . "VALUES ('" . $_POST["overskrift"] . "','" . $_POST["nyhed"] . "','" . $_POST["forfatter"] . "','" . $_POST["kategori"] ."')"); } ?> Men når jeg IKKE tilføjer if isset koderne så kommer der ID og dato i databasen, men når de er tilføjet skriver den ikke noget.. Jeg er ved at stirre mig blind på det, så håber der er en der vil hjælpe mig med at skrive det korrekt :)
17. december 2005 - 23:33
#6
isset($_POST["xxx"]) vil altid være sand. Brug !empty($_POST["xx"]) istedet. Så du burde ALTID få udført din mysql_query. Prøv at sætte or die... efter din query.
18. december 2005 - 11:12
#7
Har nu rettet if isset til !empty men lige lidt hjælper det, får stadig ikke noget tilføjet i min database.. Og ved tilføjelse af or die .. sker der ikke andet end at jeg bliver sendt videre til den side jeg har lavet der fortæller at nyheden er tilføjet..
18. december 2005 - 12:44
#8
Prøv lige i toppen af din kode at lav: echo "<pre>"; print_r($_POST); echo "</pre>"; Og se hvilke data du rent faktisk har i din $_POST
18. december 2005 - 13:32
#9
Hov... Har du en redirect efter din kode? Så når du ikke at se en eventuel fejl.
18. december 2005 - 14:09
#10
Jakob den skriver noget i de 4 POST der er iflg scriptet du har lavet doc ja det var meningen at den skal fortælle at der er tilføjet noget til databasen.. Men den sender oj desværre stadig ikke noget ned i den :(
Vi tilbyder markedets bedste kurser inden for webudvikling