Avatar billede wolstrup Nybegynder
10. august 2005 - 19:34 Der er 15 kommentarer og
1 løsning

Fejl i php

Bruger denne funktion til et nyhedsscript. Den skulle skrive til mysql. Scriptet virker på unoeuro men ikke på b-one???

Fejl:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /customers/free-styling.dk/free-styling.dk/httpd.www/ny_side/nyheder.php on line 69


script:
<?php

include "sql.php";

if ($_POST[action] == "insert"){
    $af = ($_POST[af]);
    $nyhed = ($_POST[nyhed]);
    mysql_query("insert into nyheder set af = '$af',nyhed = '$nyhed',billede = '$billede'");
}
?>
<form action=<?=$PHP_SELF?> method=post>
<center><font face="Verdana" size="1"><input type="hidden" name="action" value="insert"><INPUT class="nyhed" onclick=underline(nyhed) tabIndex=-1 type=button value=Understreget>
<INPUT class=nyhed onclick=bold(nyhed) tabIndex=-1 type=button value=Fed>
<INPUT class=nyhed onclick=makeLink(nyhed) tabIndex=-1 type=button value="Link">
<INPUT class=nyhed onclick="foo=prompt('Skriv en eMail:', ''); if (!foo) return false; else nyhed.value=nyhed.value+'<a target=\'_blank\' href=\'mailto:'+foo+'\'>'+foo+'</a>';" tabIndex=-1 type=button value="eMail"><br>
<input type="hidden" name="kodeordet" value="<?=$realpass?>"><br>
Navn:<br><input type="text" name="af" class="nyhed"><br>
Billede:<br><input type="text" name="billede" value="nopic.gif" class="nyhed"><br>
Nyhed<br><textarea rows="6" name="nyhed" cols="25" class="nyhed"></textarea></font></center>
<p><center><font face="Verdana" size="1"><input type="submit" name="insert" value="Opret" class="nyhed"></font></center></p>
<p><center><font face="Verdana" size="1">Slet nyheder:</font></center></p>
<?
$res_nyheder = mysql_query("SELECT * FROM `nyheder` ORDER BY `id` DESC LIMIT 0 , 900");
while ($row_nyheder = mysql_fetch_assoc($res_nyheder)){
echo "<p><center><font face=Verdana size=1><a href=?kodeordet=$realpass&sletid=$row_nyheder[id]><b>Slet</b></a><br>$row_nyheder[nyhed]</font></center></p>";
if ($sletid == "$row_nyheder[id]") {
mysql_query("DELETE FROM nyheder WHERE id='$row_nyheder[id]'");
echo "<p><center><font face=Verdana size=1><b>Slettet!</b></font></center></p>";
}
}
?>
Avatar billede jaw Nybegynder
10. august 2005 - 19:36 #1
I første omgang, så skift:
mysql_query("insert into nyheder set af = '$af',nyhed = '$nyhed',billede = '$billede'");


til:
mysql_query("insert into nyheder set af = '$af',nyhed = '$nyhed',billede = '$billede'") or die(mysql_error());
Avatar billede jaw Nybegynder
10. august 2005 - 19:37 #2
Og denne her selvf. (der nok er problemet!) :

$res_nyheder = mysql_query("SELECT * FROM `nyheder` ORDER BY `id` DESC LIMIT 0 , 900") or die(mysql_error());
Avatar billede jaw Nybegynder
10. august 2005 - 19:41 #3
Og denne:
if ($sletid == "$row_nyheder[id]") {
skal nok være:
if ($_GET['sletid'] == $row_nyheder['id']) {
Avatar billede jaw Nybegynder
10. august 2005 - 19:44 #4
Og generelt, så synes jeg ikke dine variabler er så pænt sat op.

Det bør være:
$row_nyheder['felt'];
og i en sammenhæng med f.eks. echo bør det være:
echo "her er en test. Dit navn er: ".$row_nyheder['navn'].". Slut på testen";
Samme gælder for $_GET, $_POST etc. at indexet hvis det er en streng bør være omkrænset af ' eller ".

Samme gælder egentlig med dit link:
<a href='?kodeordet=$realpass&sletid=".$row_nyheder['id']."'>
Avatar billede ksoren Nybegynder
10. august 2005 - 19:46 #5
Fejlen ligger nok i din syntax for insert, det er mere korrekt at skrive

insert into tabel (felt1,felt2) values('værdi1','værdi2')
Avatar billede ksoren Nybegynder
10. august 2005 - 19:49 #6
nææ, mysql.com siger sørme begge dele er gyldigt
Avatar billede wolstrup Nybegynder
10. august 2005 - 19:58 #7
Så skriver den: No Database Selected men har valgt en database i sql.php:

<?
$host="localhost";
$user="bruger";
$pass="kode";
$db="free_styling_dk";

/* connect db */

mysql_connect($host,$user,$pass);
mysql_select_db($db);
?>
Avatar billede jaw Nybegynder
10. august 2005 - 20:00 #8
Der bliver ikke connectet i hvert fald. Prøv:

include("sql.php");
...selvom det ikke burde ændre tror jeg.

Og desuden prøv:

mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());

Evt. kan du udskrive noget i sql.php med echo for at se om den bliver korrekt inkluderet.
Avatar billede ksoren Nybegynder
10. august 2005 - 20:00 #9
Måske short tags ikke er aktiveret

<? skal i så fald ændres til <?php
Avatar billede wolstrup Nybegynder
10. august 2005 - 20:11 #10
Nu kommer der ingen fejl, men funktionen virker ikke: http://www.free-styling.dk/ny_side/nyheder.php
Avatar billede jaw Nybegynder
10. august 2005 - 20:16 #11
Har du noget i databasen da?

Hvad angår problemer med opret, så se på min beskrivelse om specielt links kl. 19.44.31.

Når du trykker send ryger du videre til et langt link, hvilket skyldes at din form skal se sådan ud:
<form action='<?=$_SERVER['PHP_SELF']?>' method='post'>

$PHPSELF virker ikke, da B-One har register globals sat off, så det skal være $_SERVER['PHP_SELF'], ligesom du bruger $_GET og $_POST.
Avatar billede wolstrup Nybegynder
10. august 2005 - 20:24 #12
Ok, gal nu virker det næsten. Men hvad er det der gør at jeg ikke kan slette nyhederne igen?
Avatar billede jaw Nybegynder
10. august 2005 - 20:27 #13
Fik du rettet:
if ($sletid == "$row_nyheder[id]") {

til:
if ($_GET['sletid'] == $row_nyheder['id']) {

?
Avatar billede jaw Nybegynder
10. august 2005 - 20:29 #14
Og så mener jeg, at denne:
mysql_query("DELETE FROM nyheder WHERE id='$row_nyheder[id]'");

bør være:
mysql_query("DELETE FROM nyheder WHERE id = ".$row_nyheder['id']);

:)
Avatar billede wolstrup Nybegynder
10. august 2005 - 20:34 #15
Guld! Nu virker det bare! Mange tak for hjælpen! :-)
Avatar billede jaw Nybegynder
10. august 2005 - 20:42 #16
Det var godt, selv tak :)
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