Gå til innhold

Hjelp til å legge inn SQL data ved hjelp av forms


Anbefalte innlegg

Hei,

 

Prøver å legge inn SQL data ved å bruke forms på hjemmesiden, men får det ikke helt til å funke.

 

Tabellen i databasen heter 'news' og den har følgende felt:

 

ID auto_increment, primærnøkkel

Title text

News text

Date date

 

Men når jeg prøver å legge inn nyheter ved å bruke form'en skjer det ingenting, har sjekket SQL databasen og ingen nye data har blitt lagt inn. Noen som klarer å se ha jeg har gjort feil?

 

 <?php
require_once("db.php");
 if($submit)
 {
     $ID = mysql_real_escape_string($_POST['ID']);
     $Title = mysql_real_escape_string($_POST['Title']);
     $Date = mysql_real_escape_string($_POST['Date']);
     $News = mysql_real_escape_string($_POST['News']);
        $result = mysql_query("INSERT INTO news (ID, Title, Date, News)
                      VALUES ('','$Title','$Date','$News')");
         echo "<b>News added Successfully!";
         echo "<meta http-equiv=Refresh content=4;url=index.php>";
 }
else
 {
     ?>
     <br>
     <h3>Add News</h3>
     <form method="post" action="<?php echo $PHP_SELF ?>">
     Title: <input name="Title" size="40" maxlength="255">
     <br>
     Date: <input name="Date" size="40" maxlength="255">
     <br>
     News: <textarea name="News" rows="20" cols="40"></textarea>
     <br>
     <input type="submit" name="submit" value="Add News">
     </form>
     <?
 }
?>

 

EDIT: Kanskje denne burde vært postet i PHP forumet?

Endret av lobstah
Lenke til kommentar
Videoannonse
Annonse
Men selv om jeg fjerner ID'en fra scriptet vil den ikke adde verdiene til tabellen.

5710088[/snapback]


  •  
  • Har du fjernet den begge steder i scripet?
     
  • Har du lagt til feilhåndtering, og i så fall: hvilken feilmelding får du?
     

5710501[/snapback]

 

 

hva er $submit? Mener du $_POST['submit'], som er post-variabel av submitknappen din? Mulig du ikke har tatt med all relevant kode, men et sted må $_POST['submit'] gjøres om til en variabel ($submit) eller brukes slik den er.

 

Og db.php inneholder databasetilkoblingen? Og den returnerer ingen feil?

 

Og ja - dette er nok mer en php-ting

Lenke til kommentar
Ja, jeg fjernet såklart ID fra begge stedene. db.php fungerer helt fint, bruker den i en annen fil til å hente verdier ut fra databasen.

 

Har ikke peiling på hvordan man bruker feilhåndtering.

5710741[/snapback]

 

 

i filen db.php kan du feks lage koblingen slik:

$myConnection = mysql_connect('host', 'username', 'password') or die("Kunne ikke koble til server: ".mysql_error());

$myDB = mysql_select_db('dbnavn') or die("Kunne ikke koble til databasen: " . mysql_error());

 

Spørringene dine kan være slik:

$result = mysql_query("INSERT INTO news  VALUES ('','{$Title}','$Date','{$News} ')") or die("Feil under utføringen av spørringen: " .mysql_error());

 

Die() avbryter utførelser av etterfølgende script, og det anses som god skikk å håndtere feilene på en mer brukervennlig måte.

 

Feks slik:

//øverst på siden om inkluderer db.php:
session_start();

[b]db.php[/b]
$myConnection = mysql_connect('host', 'username', 'password');
if(!myConnection){
$_SESSION['errorMsg'] = "Kunne ikke koble til databasen";
header('location:error.php');
exit;

 

og i error.php

session_start();
print $_SESSION['errorMsg'];
// lenke til eksempelvis index.php eller der spørringen startet

Lenke til kommentar

<?php
require_once("db.php");
 if($submit) // Kan ikke du endre denne til if(isset($_POST['submit'])
 {
     $ID = mysql_real_escape_string($_POST['ID']);
     $Title = mysql_real_escape_string($_POST['Title']);
     $Date = mysql_real_escape_string($_POST['Date']);
     $News = mysql_real_escape_string($_POST['News']);
        $result = mysql_query("INSERT INTO news (ID, Title, Date, News)
                      VALUES ('','$Title','$Date','$News')");
         echo "<b>News added Successfully!";
         echo "<meta http-equiv=Refresh content=4;url=index.php>";
 }
else ...

 

Forsøk å endre $submit til if(isset($_POST['submit']))

Endret av CruellaDeVille
Lenke til kommentar

Det som du mangler er å qvotere tabellene ^^

 

så ingen hadde gitt det hintet her så jeg gjør det nå..

 

INSERT INTO tabell(`rad1`, `rad2`) VALUES('value1', 'value2');

 

 

om den du hadde ikke funka vil den funke om du bruker ` quotes rundt radnavna

 

VIKTIG ' != ` det er to forskjellige ` er heller ikek ´ .. det er ` ikke ' eller ´ eller " men `!! :p

Lenke til kommentar
 <?php
require_once("db.php");
if(isset($_POST['submit']))
{
    $ID = mysql_real_escape_string($_POST['ID']);
    $Title = mysql_real_escape_string($_POST['Title']);
    $Date = mysql_real_escape_string($_POST['Date']);
    $News = mysql_real_escape_string($_POST['News']);
// COMMENT: Du trenger ikke å sette noe inn i id siden den er primaery og autoincrement! Lykke til videre med php og mysql, du kan tjene rått på det, jeg gjør det vertfall ^^
       $result = mysql_query("INSERT INTO news (`Title`, `Date`, `News`)
                     VALUES ('$Title','$Date','$News')");
        echo "<b>News added Successfully!";
        echo "<meta http-equiv=Refresh content=4;url=index.php>";
}
else
{
    ?>
    <br>
    <h3>Add News</h3>
    <form method="post" action="<?php echo $PHP_SELF ?>">
    Title: <input name="Title" size="40" maxlength="255">
    <br>
    Date: <input name="Date" size="40" maxlength="255">
    <br>
    News: <textarea name="News" rows="20" cols="40"></textarea>
    <br>
    <input type="submit" name="submit" value="Add News">
    </form>
    <?
}
?>

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...