Avatar billede horizon Nybegynder
24. december 2004 - 16:26 Der er 6 kommentarer og
1 løsning

Problemer med "opret nyhed" script

Jeg har et lille problem med mit nyhedsscript, og jeg kan simpelthen ikke finde fejlen, jeg har 2 af disse scripts kørende, og det ene virker fint contra det andet.
Jeg har prøvet at kopiere det script som virker oven i det som ikke virkede, men det hjalp ikke... Den siger stadig i fejlmeddelelse :"du har ikke skrevet overskrift/besked"

her er siden, håber I vil hjælpe

<?php

require("mysql-funktioner.php");

if(is_array($HTTP_POST_VARS)) {
  $overskrift = $HTTP_POST_VARS['overskrift'];
  $ikon = $HTTP_POST_VARS['ikon'];
  $nyhed = $HTTP_POST_VARS['nyhed'];
  $bruger = $_SESSION['vistnavn'];
} elseif (is_array($_POST)) {
  $overskrift = $HTTP_POST_VARS['overskrift'];
  $ikon = $HTTP_POST_VARS['ikon'];
  $nyhed = $HTTP_POST_VARS['nyhed'];
  $bruger = $_SESSION['vistnavn'];
}

function nyhed_fejl($fejl) {

    $generel_tekst = "<p>V&aelig;r venlig at g&aring; tilbage og ret til.</p>";

    $fejlmelding = "<ul>";

    for($i=0;$i<count($fejl);$i++) {
        $fejlmelding .= "<li>". $fejl[$i];
    }

    $fejlmelding .= "</ul>";

    echo "Fejl! Der er fejl i dit input:" . $fejlmelding . $generel_tekst;
    exit;

}

function skriv_nyhed($bruger, $ikon, $overskrift, $nyhed, $dato) {

    $sql = "insert into Nyheder(bruger,ikon,overskrift,nyhed,dato)
        values('$bruger','$ikon','$overskrift','$nyhed',now())";

    forbind();
    sql_spoerg($sql);
    luk_forbindelse();

}

if(!ereg("[A-z0-9]+", $overskrift)) {

    $fejl[] = "Du har ikke skrevet en overskrift";

}

if(!ereg("[A-z0-9]+", $besked)) {

    $fejl[] = "Du har ikke skrevet nogen besked";

}

if(count($fejl) > 0) {
    nyhed_fejl($fejl);
}

skriv_nyhed(addslashes($navn),addslashes($epost),addslashes($besked));

header("Location: ../Nyheder/Skriv.php");

?>
Avatar billede stefmeister Nybegynder
24. december 2004 - 16:28 #1
Jeg er ikke sikker, men jeg mener at $HTTP_POST_VARS['nyhed']; er den gamle måde at skrive det på. Prøv med $_POST['nyhed']; istedet. Selvfølgelig på dem alle sammen.

Kører de begge på samme server, eller hvordan?
Avatar billede morteeart Nybegynder
24. december 2004 - 17:19 #2
og jeg vil bare bekræfte hvad stefmeister siger.

Men fejlen kan også ligge i den form, prøv at komme med formkoden.

Webcafe's eksempelter er genneralt forældede.
Avatar billede horizon Nybegynder
25. december 2004 - 18:22 #3
<?php

function forbind() {
  $server = "XXX";
  $bruger = "XXX";
  $kodeord = "XXX";
  $database = "XXX";

  if (!mysql_connect("$server","$bruger","$kodeord")) {
    udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");
  }

  if(!mysql_select_db("$database")) {
    udskriv_fejl("Kunne ikske vælge databasen: $database");
  }
}

function sql_spoerg_og_faa_svar($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl("Kunne ikke udføre: <em>$query</em>");
  }

  while($raekke = mysql_fetch_array($resultat)) {
    $resultat_array[] = $raekke;
  }

  return $resultat_array;
}

function sql_spoerg($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl("Kunne ikke udføre: <em>$query</em>");
  }
}

function luk_forbindelse() {
  if(!mysql_close()) {
    udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL!");
  }
}

function udskriv_fejl($fejl) {
  echo "<p>$fejl";

  if ($mysql_fejl = mysql_error()) {
    echo "<br>Fejlen er: <em>$mysql_fejl</em>";
  }

  exit;
}
?>

Sådan ser den ud... det andet script som jeg har kørende virker perfekt og det kører også via denne fil...
Avatar billede morteeart Nybegynder
25. december 2004 - 18:23 #4
nej, altså html delen med <form action="...> </form> koden.
Avatar billede horizon Nybegynder
25. december 2004 - 18:27 #5
Nååh... hehe

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<?php
include("../Kilder/access.php");
    $query = "SELECT variabel, vaerdi FROM Indstillinger WHERE variabel = 'titeltekst'";
    $result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
    $log = mysql_fetch_array($result);
?>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <title><?php echo $log['vaerdi']; ?></title>
        <link href="../CSS/Style1.css" rel="stylesheet">
    </head>

    <body bgcolor="#ffffff">
        <form action="../Kilder/PHPSkrivNyhed.php" method="post">
            Overskrift<br>
            <input type="text" name="overskrift" size="24">
            <p>Nyheds ikon:<br>
                <img src="../Billeder/1.gif" alt="" height="16" width="16" border="0"><input type="radio" name="ikon" value="1"><br>
                <img src="../Billeder/2.gif" alt="" width="16" height="16" border="0"><input type="radio" name="ikon" value="2"><br>
                <img src="../Billeder/3.gif" alt="" height="16" width="15" border="0"><input type="radio" name="ikon" value="3"></p>
            <p>Nyhed<br>
                <textarea name="nyhed" rows="4" cols="40"></textarea></p>
            <p><input type="submit" name="Opret" value="Opret"></p>
        </form>
        <p></p>
    </body>

</html>

Der er den skal lige siges at Access bare er Localhost, bruger, pwd, og database... intet andet
Avatar billede horizon Nybegynder
25. december 2004 - 22:46 #6
Nevermind! jeg fandt ud af problemet. Der var nogle variabler i PHPSkrivNyhed som ikke passede ordentligt, men nu virker det i hvert fald næsten... nu er det eneste problem at den ikke vil skrive i feltet "bruger" i min mysql tabel. jeg har brugernavnet gemt i en session ($_SESSION['vistnavn']) og regnede med at jeg kunne skrive $bruger = $_SESSION['vistnavn']; for at trække værdien ud... men det kunne jeg åbenbart ikke... nogle forslag?
Avatar billede horizon Nybegynder
28. december 2004 - 23:34 #7
fandt ud af det... utroligt hvad det kan gøre hvis man glemmer en SESSION_START()...
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