oblomsoe Skrevet 30. juni 2005 Del Skrevet 30. juni 2005 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
kakkle Skrevet 30. juni 2005 Del Skrevet 30. juni 2005 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
oblomsoe Skrevet 30. juni 2005 Forfatter Del Skrevet 30. juni 2005 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
kakkle Skrevet 30. juni 2005 Del Skrevet 30. juni 2005 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
oblomsoe Skrevet 30. juni 2005 Forfatter Del Skrevet 30. juni 2005 (endret) 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 30. juni 2005 av oblomsoe Lenke til kommentar
kakkle Skrevet 30. juni 2005 Del Skrevet 30. juni 2005 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
thomfre Skrevet 30. juni 2005 Del Skrevet 30. juni 2005 $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
oblomsoe Skrevet 1. juli 2005 Forfatter Del Skrevet 1. juli 2005 (endret) 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 1. juli 2005 av oblomsoe Lenke til kommentar
thomfre Skrevet 2. juli 2005 Del Skrevet 2. juli 2005 bytt ut "UPDATE this" med "UPDATE <navn på tabell>" Lenke til kommentar
oblomsoe Skrevet 2. juli 2005 Forfatter Del Skrevet 2. juli 2005 Navnet på tabelen er this:) Lenke til kommentar
thomfre Skrevet 2. juli 2005 Del Skrevet 2. juli 2005 hehe.. da er det noe annet.... Lenke til kommentar
oblomsoe Skrevet 2. juli 2005 Forfatter Del Skrevet 2. juli 2005 (endret) 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 2. juli 2005 av oblomsoe Lenke til kommentar
kakkle Skrevet 2. juli 2005 Del Skrevet 2. juli 2005 (endret) 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 2. juli 2005 av kakkle Lenke til kommentar
oblomsoe Skrevet 3. juli 2005 Forfatter Del Skrevet 3. juli 2005 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
thomfre Skrevet 3. juli 2005 Del Skrevet 3. juli 2005 Prøv $query = "UPDATE this SET tekst='".$_POST["message2"] ."' WHERE ID = '" .$_POST["ID"] ."'"; Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå