Gå til innhold

Problemer med mysql_fetch_array i ett nyhetsscrit


Anbefalte innlegg

Jeg har laget ett nyhetsscript, men så er det en error jeg får. Det funker helt fint fra index siden hvor man ser bildet, overskriften og innledingen, men når jeg trykker på les mer så får jeg kun denne feil meldingen:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/megaspill.net/subdomains/olav/httpdocs/nyheter/les.php on line 38

 

 

Her er nyhetsscriptet jeg bruker:



<?php include ("./config.php"); ?>
<?php




if (isset($_GET["lesmer"]) && is_numeric($_GET["lesmer"])){
   $ID=$_GET["lesmer"];
   $sql="select * from this where ID='$ID'";
   $result=mysql_query($sql);

   while($result1=mysql_fetch_array($result)){
 print("
 <fieldset>

 <legend>" . $result1["overskrift"] . " - " . date("d.m.Y - H:i:s",$row["tidspunkt"]) . "</legend>
" . $result1["tekst"] . " <br>

</fieldset>
<br>
 	<fieldset>

 <legend></legend>
" . $result1["tekst2"] . " <br>

</fieldset>
 
 " );}
   }

else{
   $sql="select * from this where 1 order by (id) DESC limit ".$limit.",5";
   $result=mysql_query($sql);

  while($result1=mysql_fetch_array($result)){
       $BILDE=$result1["abilde"];
       $ID=$result1["ID"];
       
 print("
 <fieldset>

 <legend>" . $result1["overskrift"] . " - " . date("d.m.Y - H:i:s",$row["tidspunkt"]) . "</legend>
" .$result1["tekst"] ."<img src=\"images/".$BILDE."\" alt=\"Bilde\"> <br>

<a href=\"./index.php?side=nyheter&lesmer=".$ID."\">les mer</a>
</fieldset>
 
 
 
 " );}
   }{

 
if($limit >0){
 echo "<a href=./index.php?side=nyheter&limit=".($limit-5).">Forrige Side   </a>   ";
}else{
 echo "  ";//er allerede på første side..
}
 echo "  <a href=\"./index.php?side=nyheter&limit=".($limit+5)."\">    Eldre nyheter</a>";
  }
?> 

 

 

Håper noen her kan hjelpe meg med dette, på forhånd takk!

Lenke til kommentar
Videoannonse
Annonse

Du skal ikke ha ' rundt id, dersom id er et tall...

 

Du kan forøvrig bytte denne linjen:

$result=mysql_query($sql);

med denne:

$result=mysql_query($sql) or die("FEIL i spørring: $sql<br>".mysql_error());

Så ser du om spørringen er slik du vil den skal være, pluss at du får en feilmelding fra mysql

Lenke til kommentar

Takk! Men fant ut at feilen var at på tabelen så hadde jeg skrvet id med småe bokstaver... Men når jeg byttet ut dette med store og de i sql spørringa med store så funka det..;) Men har greid å finni ut hvordan jeg sletter nyheter jeg legger til..Men hvordan kan jeg endre nyheter?

Her er det jeg legger til nyhter...:

<?php include ("../config.php"); ?>
<?php
if((isset($_GET['VisMer']))&&(!empty($_GET['VisMer']))){
   	//Vis mere her! :)
 }
 
  # Funksjon som skriver ut $errarr variabelen i form av en liste
  function errarr($array)
  {
     if(count($array))
     {
        print("<ul>");
        for($i = 0;$i < count($array);$i++)
           print("<li>" . $array[$i] . "</li>");
        print("</ul>");
     }
  }

  if(isset($_POST["submit"]))
  {
     # Opprette et array som beskjeder kan lagres i
     $errarr = array();

     if($_POST["overskrift"] == "" || $_POST["message"] == "")
        array_push($errarr,"Du må fylle ut begge feltene.");

     # Ingen feil har skjedd. Sett inn nyhet i databasen
     if(!count($errarr))
     {

$query = "insert into this(
           overskrift,
 	abilde,
           tekst,
 	tekst2,
 	tidspunkt
        ) values(
           '" . $_POST["overskrift"] . "',
 	'" . $_POST["Bilde"] . "',
           '" . $_POST["message"] . "',
 	'" . $_POST["message2"] . "',
            now() 
        )";
        if(!@mysql_query($query))
           array_push($errarr, mysql_error());

        else
           array_push($errarr,"Takk! Meldingen ble lagt til. Din melding vil snart ligge i gjesteboken");
     }
  }
?>
  
     <?php errarr($errarr); ?>
     <?php
function hyperlink(&$text)
{
  // match protocol://address/path/
  $text = ereg_replace("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);

  // match www.something
  $text = ereg_replace("(^| )(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\">\\2</a>", $text);
}
?>
     <script language="JavaScript" type="text/javascript">
<!--
// bbCode control by
// subBlue design
// www.subBlue.com

// Startup variables
var imageTag = false;
var theSelection = false;

// Check for Browser & Platform for PC & IE specific bits
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);

// Define the bbCode tags
bbcode = new Array();
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]',','[list]','[/list]','[list=]','[/list]','[img=',']','[url]URL her[/]','Tekst her[/url]');
imageTag = false;

// Replacement for arrayname.length property
function getarraysize(thearray) {
for (i = 0; i < thearray.length; i++) {
if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))
return i;
}
return thearray.length;
}

// Replacement for arrayname.push(value) not implemented in IE until version 5.5
// Appends element to the array
function arraypush(thearray,value) {
thearray[ getarraysize(thearray) ] = value;
}

// Replacement for arrayname.pop() not implemented in IE until version 5.5
// Removes and returns the last element of an array
function arraypop(thearray) {
thearraysize = getarraysize(thearray);
retval = thearray[thearraysize - 1];
delete thearray[thearraysize - 1];
return retval;
}
function bbstyle(bbnumber) {
var txtarea = document.post.message;

txtarea.focus();
donotinsert = false;
theSelection = false;
bblast = 0;

if (bbnumber == -1) { // Close all open tags & default button names
while (bbcode[0]) {
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
imageTag = false; // All tags are closed including image tags :D
txtarea.focus();
return;
}

if ((clientVer >= 4) && is_ie && is_win)
{
theSelection = document.selection.createRange().text; // Get text selection
if (theSelection) {
// Add tags around selection
document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
txtarea.focus();
theSelection = '';
return;
}
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
return;
}

// Find last occurance of an open tag the same as the one just clicked
for (i = 0; i < bbcode.length; i++) {
if (bbcode[i] == bbnumber+1) {
bblast = i;
donotinsert = true;
}
}

if (donotinsert) { // Close all open tags up to the one just clicked & default button names
while (bbcode[bblast]) {
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
imageTag = false;
}
txtarea.focus();
return;
} else { // Open tags

if (imageTag && (bbnumber != 14)) { // Close image tag before adding another
txtarea.value += bbtags[15];
lastValue = arraypop(bbcode) - 1; // Remove the close image tag from the list
document.post.addbbcode14.value = "Img"; // Return button back to normal state
imageTag = false;
}

// Open tag
txtarea.value += bbtags[bbnumber];
if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
txtarea.focus();
return;
}
storeCaret(txtarea);
}

// From http://www.massless.org/mozedit/
function mozWrap(txtarea, open, close)
{
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
if (selEnd == 1 || selEnd == 2)
selEnd = selLength;

var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + open + s2 + close + s3;
return;
}

function storeCaret(textEl) {
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}

//-->
</script>
     <form action="index2.php?side=adminnyhet" form name="post" method="post">
  
       <p>
 <input type="button" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onClick="bbstyle(0)" />
 <input type="button" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onClick="bbstyle(2)" />
 <input type="button" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onClick="bbstyle(4)" />
 <input type="button" name="addbbcode0" value=" IMG " style="font-weight:bold; width: 30px" onClick="bbstyle(0)" />
 <a href="javascript:bbstyle(-1)" class="genmed">Lukk Tagger</a> </p>
       <p>          <br>
         <input name="overskrift" type="text" class="post" id="overskrift" style="width:450px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" value="Navn på artikkel" size="35">
         <br>
         <input name="Bilde" type="text" class="post" id="Bilde" style="width:450px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" value="Bilde til Artikkel" size="35">
         <br />
         <textarea name="message" cols="35" rows="15" wrap="OFF" class="post" style="width:450px" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">Innledning</textarea>
         <textarea name="message2" cols="35" rows="15" wrap="OFF" class="post" style="width:450px" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);">Fullstory</textarea>
</p>
       </p>
       <input type="submit" name="submit" value="Legg til" />  
       Trykk <a href="index2.php?side=slettnyhet">her</a> for å slette en nyhet.
       <p align="left">        
       <p> </p>
     </form>
  
  
  


 

 

Takk

Lenke til kommentar

For å redigere eksisterende data i mysql brukes UPDATE.

F.eks:

UPDATE this set bilde='bilde' where id=8

Her blir feltet bilde endret til 'bilde' i posten som har id 8.

 

Selve siden hvor du taster inn endringene blir veldig lik, men du må først hente ut verdiene fra mysql, som du da setter som value i de riktige feltene i skjemaet.

 

Mulig dette var forklart på en kryptisk måte. Men prøv deg litt fram, og spør på nytt dersom du står fast.

 

ref.:

UPDATE dokumentasjon på mysql.org

Lenke til kommentar

Hm..Tror jeg skjønte det meste dær..Men er enda litt usikker på alt som har med php å gjøre... Hadde det funket å bruke noe sånt?:

 $query = "UPDATE this where id = '" . $_POST["id"] . "'"(
           overskrift,
 	abilde,
           tekst,
 	tekst2,
 	tidspunkt
        ) values(
           '" . $_POST["overskrift"] . "',
 	'" . $_POST["Bilde"] . "',
           '" . $_POST["message"] . "',
 	'" . $_POST["message2"] . "',
            now() 
        )";

 

Hvor overskrift er tekstboksen med navnet overskrift osv..? Men har du noen tips til hvordan jeg kan få listet opp alle nyhetene for så at man kan velge en av de som automatisk blir lagt inn i en hvor hvor man kan endre på ting? Takk

Endret av oblomsoe
Lenke til kommentar

Det er veldig nærme, da... Men ved update må du bruke :

UPDATE table SET field1='value1', field2='value2' ... fieldn='valuen'" WHERE id=<id>

Slik at din spørring blir slik:

$query="UPDATE this SET overskrift='".$_POST["overskrift"]."' WHERE id=".$_POST["id"];

Dette er kun for å endre feltet overskrift.

 

For å liste ut alle nyhetene, kan det f.eks brukes en tabell, med hver nyhet på en linje. MEd en liten link på slutten av raden med link til delete eller edit. edit og delete må ha id på posten i urlen. Når du trykker på lenken edit, så komer du til en side, hvor du henter ut data fra mysql utfra id'en som er spesifisert i urlen, og skriver dette ut i de rette feltene i skjemaet.

 

Evt. Så kan du jo også bare ha en liten edit link på slutten av hver nyhet, som kun er synlig for en innlogget admin.

 

/Kakkle

Lenke til kommentar

$QY = mysql_query("SELECT * FROM nyheter ORDER BY id desc") or die("feil");
echo '<table width="100%"><tr><td width="60%"><b>Tittel</b></td><td width="30%"><b>Dato</b></td><td><b>Endre</b></td></tr>';
while ($ROW = mysql_fetch_array($QY)) 
{$id = $ROW["id"];
$tittel = $ROW["tittel"];
$dato = $ROW["dato"];
$kategori = $ROW["kategori"];
echo '<tr><td>' .$tittel.'</td><td> ';
setlocale(LC_TIME, 'no_NO');
echo strftime(" %e. %b %R", $dato);
echo("</td><td>[<a href=\"endrenyhet.php?id=" . $id . "\">Endre</a>]</td></tr>");
}
echo '</table>';

 

Denne lister alle nyheter, og lar deg velge en du vil endre...

Lenke til kommentar

Har laget noe som jeg tror skal stemme nå... Brukte den thomfre hadde laget til å liste nyheten tusen takk! Det funker knall..Men det er der som jeg skal endre nyhetene at jeg har problemer.. Her er koden jeg har skrevet som skal forandre på tingene:

 

<?php
include ('config.php');




if((isset($_GET['VisMer']))&&(!empty($_GET['VisMer']))){
   	//Vis mere her! :)
 }
 
  # Funksjon som skriver ut $errarr variabelen i form av en liste
  function errarr($array)
  {
     if(count($array))
     {
        print("<ul>");
        for($i = 0;$i < count($array);$i++)
           print("<li>" . $array[$i] . "</li>");
        print("</ul>");
     }
  }

  if(isset($_POST["submit"]))
  {
     # Opprette et array som beskjeder kan lagres i
     $errarr = array();

  

     # Ingen feil har skjedd. Sett inn nyhet i databasen
     if(!count($errarr))
     {

$query="UPDATE this SET tekst='".$_POST["message2"]."' WHERE ID=".$_POST["ID"];
        if(!@mysql_query($query))
           array_push($errarr, mysql_error());

        else
           array_push($errarr,"Nyheten ble lagt til");
     }
  }
?>
  
     <?php errarr($errarr); ?>


<?php

if (isset($_GET["lesmer"]) && is_numeric($_GET["lesmer"])){
   $ID=$_GET["lesmer"];
   $sql="select * from this where ID='$ID'";
   $result=mysql_query($sql);

   while($result1=mysql_fetch_array($result)){
$id = $result1["ID"];
$tittel = $result1["overskrift"];
$dato = $result1["tekst"];
$kategori = $result1["tekst2"];}}
?>
<form action="endre.php" form name="post" method="post">
 <p>          
   <input name="overskrift" type="text" class="post" id="overskrift" style="width:300px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" value="<?php echo $tittel ?>"overskrift"] .'">
         <br>
   <input name="Bilde" type="text" class="post" id="Bilde" style="width:300px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);"" size="35">
   <br />
         <textarea name="message2" cols="10" rows="15" wrap="OFF" class="post" style="width:300px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);"></textarea>
         <br>
         <textarea name="message" cols="10" rows="15" wrap="VIRTUAL" class="post" style="width:300px" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);"></textarea>
</p>
       </p>
       <p>
         <input type="submit" name="submit" value="Legg til" />  
 
</form>

<FORM METHOD=POST ACTION="<?php echo $PHP_SELF ?>">
<INPUT TYPE="hidden" name="ID" value="<?php echo $id ?>">
<INPUT TYPE="hidden" name="action" value="edit_two">
</form>

 

 

 

Det funker, og jeg får opp det gammle i edit boksene osv..Men når jeg trykker på submit knappen så får jeg bare denne erroren:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Endret av oblomsoe
Lenke til kommentar

Fikk til den erroren nå, og jeg får til å updata nyheten.. Men problemet jeg har nå er at det ikke bare er den ene nyheten jeg skal oppdatere som blir oppdatert.. Alle nyhetene blir oppdatert... Her er koden jeg har nå:

 

<?php

include ( 'config.php' ) ;

 

 

 

 

 

# Funksjon som skriver ut $errarr variabelen i form av en liste

function errarr ( $array )

{

if ( count ( $array ) )

{

print ( "<ul>" ) ;

for ( $i = 0 ; $i < count ( $array ) ; $i ++ )

print ( "<li>" . $array [ $i ] . "</li>" ) ;

print ( "</ul>" ) ;

}

}

 

if ( isset ( $_POST [ "submit" ] ) )

{

# Opprette et array som beskjeder kan lagres i

$errarr = array ( ) ;

 

 

 

# Ingen feil har skjedd. Sett inn nyhet i databasen

if ( ! count ( $errarr ) )

{

 

 

$query = "UPDATE this " .

"SET tekst='" . $_POST [ "message2" ] . "'" ;

"WHERE ID = '" . $_POST [ "ID" ] . "'" ;

if ( ! @ mysql_query ( $query ) )

array_push ( $errarr , mysql_error ( ) ) ;

 

else

array_push ( $errarr , "Nyheten ble lagt til" ) ;

}

}

?>

 

<?php errarr ( $errarr ) ; ?>

 

 

<?php

 

if ( isset ( $_GET [ "lesmer" ] ) && is_numeric ( $_GET [ "lesmer" ] ) ) {

$ID = $_GET [ "lesmer" ] ;

$sql = " select * from this where ID =' $ID ' " ;

$result = mysql_query ( $sql ) ;

 

while ( $result1 = mysql_fetch_array ( $result ) ) {

$id = $result1 [ "ID" ] ;

$tittel = $result1 [ "overskrift" ] ;

$dato = $result1 [ "tekst" ] ;

$kategori = $result1 [ "tekst2" ] ; } }

?>

<form action="endre.php" form name="post" method="post">

<p>

<input name="overskrift" type="text" class="post" id="overskrift" style="width:300px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" value=" <?php echo $tittel ?> "overskrift"] .'">

<br>

<input name="Bilde" type="text" class="post" id="Bilde" style="width:300px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);"" size="35">

<br />

<textarea name="message2" cols="10" rows="15" wrap="OFF" class="post" style="width:300px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(thi s);" onKeyUp="storeCaret(this);"></textarea>

<br>

<textarea name="message" cols="10" rows="15" wrap="VIRTUAL" class="post" style="width:300px" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);"></textarea>

</p>

</p>

<p>

<input type="submit" name="submit" value="Legg til" />

 

</form>

 

<FORM METHOD=POST ACTION=" <?php echo $PHP_SELF ?> ">

<INPUT TYPE="hidden" name="ID" value=" <?php echo $ID ?> ">

<INPUT TYPE="hidden" name="action" value="edit_two">

</form>

Endret av oblomsoe
Lenke til kommentar

Hei

 

Når alle poster blir endret, så betyr det at WHERE clausen ikke funker som den skal, eller ikke er med. Du har ikke fått med WHERE i $query virabelen din... Du avslutter strengen vha ; her:

$query = "UPDATE this " .
"SET tekst='" . $_POST [ "message2" ] . "'"; 

Du kan evt på neste linje sette:

$query .= "WHERE ID = '" . $_POST [ "ID" ] . "'"; 

 

 

EDIT: Legg også til spørringen ($query) i feilmeldingen dersom noe går galt, så ser du hvordan spørringen ser ut. Alltid veldig greit :)

/kakkle

Endret av kakkle
Lenke til kommentar

Jeg har jo med den where:

 $query = "UPDATE this ".
           "SET tekst='".$_POST["message2"]."'";
           "WHERE ID = '" .$_POST["ID"] ."'";

 

Men jeg prøvde å fjerne den siste linja som inneholder where å laget ende en $query linje rett under den dær hvor jeg la inn det du skrev, men da ble ingen oppdatert...

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...