Avatar billede bluffern Nybegynder
06. april 2006 - 22:24 Der er 15 kommentarer og
1 løsning

Det bliver ikke sendt til sql?

Jeg har et lille problem her. Det "virker" fint, der er bare det problem at den ikke bliver sendt til sql databasen.

Filen her:

<?php
session_start();
if (isset($_SESSION['aid'])) {
    include("config.php");
    if($_POST['upload']){
        if ($_POST['pic'] == 1) {
            $files = $_FILES['upfil']['name'];
            $dist = $_SERVER["DOCUMENT_ROOT"] . "/";
            move_uploaded_file($_FILES['upfil']['tmp_name'], $dist . $files);
        }
        elseif ($_POST['pic'] == 2) {
            $files = "maps/de_dust2.jpg";
        }
        elseif ($_POST['pic'] == 3) {
            $files = "maps/de_nuke.jpg";
        }
        elseif ($_POST['pic'] == 4) {
            $files = "maps/aztec.jpg";
        }
        elseif ($_POST['pic'] == 5) {
            $files = "maps/de_cbble.jpg";
        }
        elseif ($_POST['pic'] == 6) {
            $files = "maps/de_clan1_mill.jpg";
        }
        elseif ($_POST['pic'] == 7) {
            $files = "maps/de_train.jpg";
        } else {
            $files = "maps/inferno.jpg";
        }
    $sql = "INSERT INTO `cw` (`id`, `modstander`, `resultat`, `vtl`, `maps`, `dato`, `tekst`) VALUES ('$_POST[id]', '$_POST[modstander]', '$_POST[resultat]', '$_POST[vtl]', '$_POST[maps]', '$_POST[dato]', '$_POST[tekst]')";
    }
    }
include("tjek.htm");
php?>

<html>
<head>
<title>Admin system</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Modstander:<br>
<input name="modstander" type="text" id="modstander"><br>
<br>
Resultat:<br>
<input name="resultat" type="text" id="resultat"><br>
<select size="1" name="vtl">
    <option>Vundet</option>
    <option>Tabt</option>
    <option>Lige</option>
    </select><br>
Dato:<br>
<input name="dato" type="text" id="dato">
Ekstra info:<br>
<textarea rows="3" name="tekst" cols="20"></textarea><br>
Maps:<br>
<input type="radio" value="2" checked name="pic"> de_dust2<br>
<input type="radio" value="3" checked name="pic"> de_nuke<br>
<input type="radio" value="4" checked name="pic"> de_aztec<br>
<input type="radio" value="5" checked name="pic"> de_cbble<br>
<input type="radio" value="6" checked name="pic"> de_clan1_mill<br>
<input type="radio" value="7" checked name="pic"> de_train<br>
<input type="radio" value="8" checked name="pic"> de_inferno<br>
<input name="ny" type="submit" value="send"></form>
</body>
</html>
Avatar billede medions Nybegynder
06. april 2006 - 22:28 #1
Prøv lige sådan:

<?php
session_start();
if (isset($_SESSION['aid'])) {
    include("config.php");
    if($_POST['upload']){
        if ($_POST['pic'] == 1) {
            $files = $_FILES['upfil']['name'];
            $dist = $_SERVER["DOCUMENT_ROOT"] . "/";
            move_uploaded_file($_FILES['upfil']['tmp_name'], $dist . $files);
        }
        elseif ($_POST['pic'] == 2) {
            $files = "maps/de_dust2.jpg";
        }
        elseif ($_POST['pic'] == 3) {
            $files = "maps/de_nuke.jpg";
        }
        elseif ($_POST['pic'] == 4) {
            $files = "maps/aztec.jpg";
        }
        elseif ($_POST['pic'] == 5) {
            $files = "maps/de_cbble.jpg";
        }
        elseif ($_POST['pic'] == 6) {
            $files = "maps/de_clan1_mill.jpg";
        }
        elseif ($_POST['pic'] == 7) {
            $files = "maps/de_train.jpg";
        } else {
            $files = "maps/inferno.jpg";
        }
    $sql = "INSERT INTO `cw` (`id`, `modstander`, `resultat`, `vtl`, `maps`, `dato`, `tekst`) VALUES ('$_POST[id]', '$_POST[modstander]', '$_POST[resultat]', '$_POST[vtl]', '$_POST[maps]', '$_POST[dato]', '$_POST[tekst]')";
    mysql_query($sql);
    }
    }
include("tjek.htm");
php?>

<html>
<head>
<title>Admin system</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Modstander:<br>
<input name="modstander" type="text" id="modstander"><br>
<br>
Resultat:<br>
<input name="resultat" type="text" id="resultat"><br>
<select size="1" name="vtl">
    <option>Vundet</option>
    <option>Tabt</option>
    <option>Lige</option>
    </select><br>
Dato:<br>
<input name="dato" type="text" id="dato">
Ekstra info:<br>
<textarea rows="3" name="tekst" cols="20"></textarea><br>
Maps:<br>
<input type="radio" value="2" checked name="pic"> de_dust2<br>
<input type="radio" value="3" checked name="pic"> de_nuke<br>
<input type="radio" value="4" checked name="pic"> de_aztec<br>
<input type="radio" value="5" checked name="pic"> de_cbble<br>
<input type="radio" value="6" checked name="pic"> de_clan1_mill<br>
<input type="radio" value="7" checked name="pic"> de_train<br>
<input type="radio" value="8" checked name="pic"> de_inferno<br>
<input name="ny" type="submit" value="send"></form>
</body>
</html>

//>Rune
Avatar billede pvtsommer Nybegynder
07. april 2006 - 09:36 #2
Yee, ;D - $sql sender den jo ikke afsted i sig selv ;)
Avatar billede bluffern Nybegynder
07. april 2006 - 13:37 #3
medions, det virker stadig ikke, men tak fordi du vil hjælpe. pvtsommer, hvad skal jeg så skrive for at den sender den afsted?
Avatar billede pvtsommer Nybegynder
07. april 2006 - 13:58 #4
$sql = "INSERT INTO `cw` (`id`, `modstander`, `resultat`, `vtl`, `maps`, `dato`, `tekst`) VALUES ('$_POST[id]', '$_POST[modstander]', '$_POST[resultat]', '$_POST[vtl]', '$_POST[maps]', '$_POST[dato]', '$_POST[tekst]')";
    mysql_query($sql);

^^ Det var den rettelse Medions kom med.

Prøv at ændre nederste linje af ændringen til: mysql_query($sql) or die(mysql_error());

Så får du - ved fejl - selve sql-fejlen, og hvad der er galt. YDermere vil jeg endnu engang pointere at jeg ville benytte:

$modstander = htmlentities($_POST[modstander]); med alle dine posts, og gemme disse variabler, for at undgå eventuelle SQL-injections (hvor man laver rav i databasen)
Avatar billede bluffern Nybegynder
08. april 2006 - 14:35 #5
Nu har jeg smidt "mysql_query($sql) or die(mysql_error());" ind, men det virker stadig ikke. Hvordan vil du skrive den: $modstander = htmlentities($_POST[modstander]);?
Altså det skal vel være inden i VALUES ikke?
Avatar billede eagleeye Praktikant
08. april 2006 - 16:50 #6
Du skal først connete så åbne databasen får du kan indsætte i den:

//Åbner forbindelse til databasen
$link = mysql_connect ('servernavn', 'brugernavn', 'password');
// åber til databasen
$db = mysql_select_db('databasenavnet', $link);


Så kan du bruger mysql_query til at udføre din SQL sætning.




Her er de samme to linier kode hvis du vil havde den til at skrive hvis der sker en fejl.

//Åbner forbindelse til databasen
$link = mysql_connect ('servernavn', 'brugernavn', 'password');
if (!$link) {
  die('Not connected : ' . mysql_error());
}
// åber til databasen
$db = mysql_select_db('databasenavnet', $link);
if (!$db) {
  die ('Can\'t use foo : ' . mysql_error());
}
Avatar billede eagleeye Praktikant
08. april 2006 - 16:51 #7
Eller det ligger måske i config.php?
Avatar billede bluffern Nybegynder
08. april 2006 - 18:52 #8
ja det ligger i config.php, bare ikke skrevet sådan..
Avatar billede eagleeye Praktikant
08. april 2006 - 19:28 #9
Får du ikke en fejl når du har prøvet med?

mysql_query($sql) or die(mysql_error());


Ja dette skal gælde for alle variable der skal i VALUES delen:

$modstander = htmlentities($_POST[modstander]);

og rette SQL sætningen til eks:

  $modstander = htmlentities($_POST['modstander']);
  $resultat = htmlentities($_POST['resultat']);

    $sql = "INSERT INTO `cw` (`id`, `modstander`, `resultat`, `vtl`, `maps`, `dato`, `tekst`) VALUES ('$_POST[id]', '$modstander', '$resultat', ....)";
Avatar billede bluffern Nybegynder
08. april 2006 - 19:39 #10
okay, så prøver jeg at skrive det ind..
Avatar billede bluffern Nybegynder
08. april 2006 - 19:46 #11
det virker stadig ikke.. og nej jeg for ikke en fejl.. :S
Avatar billede eagleeye Praktikant
08. april 2006 - 19:52 #12
og er du så sikker på at session variablen har en værdi i denne if sætning:?

if (isset($_SESSION['aid'])) {



Samt umiddelbart har du ikke et form felt som hedder "upload" som også er en betingelse for den udføre SQL sætningnen:

    if($_POST['upload']){
Avatar billede bluffern Nybegynder
10. april 2006 - 02:14 #13
yes, nu sender den det til sql, MEN jeg har et nyt problem, for det første skriver den 2 hver gang jeg skriver en og den ene er der intet i. Og det med billeder virker ikke - det er måske helt forkert gjordt?
Avatar billede eagleeye Praktikant
10. april 2006 - 09:57 #14
Når man har form og kode på samme side skal man normalt tjekke på om man har mdtaget data fra form. Det kan gøres ved at tjekke på om eksvis et felt eller submit knap indeholder data, eks med din submit knap:

<?php
if (isset($_POST['ny'])) {
  // Gem til database

}

?>
<html>
<!-- vis formen her -->
Avatar billede bluffern Nybegynder
10. april 2006 - 17:55 #15
super så virker det.. Skriv et svar ;)
Avatar billede eagleeye Praktikant
10. april 2006 - 20:07 #16
Ok her er et svar ;)
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