Avatar billede holm76 Nybegynder
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 :)
Avatar billede doc404 Novice
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.
Avatar billede jakobdo Ekspert
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)
Avatar billede holm76 Nybegynder
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??
Avatar billede doc404 Novice
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.....
Avatar billede holm76 Nybegynder
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>&nbsp;</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 :)
Avatar billede doc404 Novice
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.
Avatar billede holm76 Nybegynder
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..
Avatar billede jakobdo Ekspert
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
Avatar billede doc404 Novice
18. december 2005 - 13:32 #9
Hov... Har du en redirect efter din kode? Så når du ikke at se en eventuel fejl.
Avatar billede holm76 Nybegynder
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 :(
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester