marw_the_big_headed_rhino Skrevet 30. august 2007 Del Skrevet 30. august 2007 (endret) Heisann! Trenger litt hjelp nå (igjen). Har en variabel som heter text,som inneholder text. ligger i MySQL. Noen som har et lite skript, eller kan hjelpe meg med å kjapt genere dynamisk en oppdateringsside for variabelen min? det jeg er ute etter, er enkelt og greit update og delete. Har testet et par skript der ute, men uten hell så langt. Håper noen kan hjelpe meg med dette. koden jeg har er: $id = intval( mysql_real_escape_string( $_GET['id'] )); $query = "SELECT * FROM jos_issues WHERE jos_issues.contentid= '$id' ORDER BY text desc"; $result = mysql_query($query); while($row= mysql_fetch_array($result)) { echo"$row[text]<BR>"; } Og lengre nede prøvde jeg et skript jeg fant på Internett: <? include("c:/db.inc"); error_reporting(E_ALL); ini_set('display_errors', '1'); //$id = intval( mysql_real_escape_string( $_GET['id'] )); $id = 12; echo "id = $id"; $query = "SELECT * FROM jos_issues WHERE jos_issues.contentid= '$id'"; $result = mysql_query($query); $num = mysql_numrows($result); //mysql_close(); $i = 0; while($i<$num) { $text = mysql_result($result,$i,"text"); <form action="updated.php" method="post"> <input type="hidden" name="ud_id" value="<? echo $id; ?>"> Text: <input type="text" name="ud_text" value="<? echo $text; ?>"><br> <input type="Submit" value="Update"> </form> ++$i; } ?> Bea Endret 30. august 2007 av bono_head Lenke til kommentar
kakkle Skrevet 30. august 2007 Del Skrevet 30. august 2007 (endret) Her er et eksempel på utdrag fra update.php: $id=mysql_real_escape_string($_POST["ud_id"]); $text =mysql_real_escape_string($_POST["ud_text"]); $sql = "UPDATE jos_issues set text='$text' WHERE contentid=$id"; $res = mysql_query($sql) or die("Mysql error: $sql<br> Mysql sa: ".mysql_error()); if ($res) { echo "Oppdaterte ".mysql_affected_rows()." rad(er)"; } else { echo "NOe skjedde"; } Gitt at databasen du skal oppdatere er jos_issues, feltet hvor teksten skal oppdateres heter text og at if feltet er unikt og heter contentid og er et heltall (integer) for å slette bruker du DELETE FROM blabla where id=enid Endret 30. august 2007 av kakkle Lenke til kommentar
Crowly Skrevet 30. august 2007 Del Skrevet 30. august 2007 Noen små optimaliserings tips, og bedre kode skikk PHP <?php$id = intval( mysql_real_escape_string( $_GET['id'] )); $query = "SELECT * FROM jos_issues WHERE jos_issues.contentid= '$id' ORDER BY text desc"; $result = mysql_query($query); while($row= mysql_fetch_array($result)) { echo"$row[text]<BR>"; } ?> Du bruker SELECT * FROM, men bruker kun ett felt. Hvorfor ikke bruke SELECT text FROM ? Bruk kun SELECT * FROM når du trenger alle feltene i tabellen, hvis ikke så spesifiser. mysql_fetch_array bruker mer minne enn mysql_fetch_assoc eller mysql_fetch_row. mysql_fetch_array inneholder både verdiene fra assoc og row, så jeg ser ikke nytten i å ha den samme informasjonen to ganger i en variabel. Jeg bruker normalt fetch_row når jeg henter få felter, og fetch_assoc når det er mange. Eks på mysql_fetch_array (hentet fra w3schools.com) Array ( [0] => Refsnes [LastName] => Refsnes [1] => Kai Jim [FirstName] => Kai Jim [2] => Taugata 2 [Address] => Taugata 2 [3] => 22 [Age] => 22 ) mysql_fetch_assoc ville ha returnet Array ( [LastName] => Refsnes [FirstName] => Kai Jim [Address] => Taugata 2 [Age] => 22 ) og mysql_fetch_row Array ( [0] => Refsnes [1] => Kai Jim [2] => Taugata 2 [3] => 22 ) echo"$row[text]<BR>";, dette er lovlig, men php må sette inn ' ' selv, så det er like godt å venne seg til å gjøre det med en gang. For å være helt sikker på at php vet hvor variablen begynner og slutter i en streng, så bør man sette den inni { }. Så helt korrekt blir: echo"{$row['text']}<BR>"; evt echo $row['text']."<BR>"; Lenke til kommentar
marw_the_big_headed_rhino Skrevet 30. august 2007 Forfatter Del Skrevet 30. august 2007 Da har jeg faktisk lært noe nytt i dag også :-) Jeg løste problemet på en særdeles uelegant måte. 1. Liste opp (side a.php). Der har jeg edit, delete og insert linker 2. edit.php lister opp et feit tekstfelt som jeg hiver teksten inni, og som kjører en update 3.delete kjører bare en delete kommando basert på at teksten tilhører en og kun en contentid. 4. insert gir bare opp et insert felt, der du kan sette inn ny tekst. Særdeles uelegant, men det fungerer ihvertfall midlertidig til jeg kommer på bedre tanker. Må nok lese mer php ja... Men uansett: Takk for tipsene. og jeg skal huske på å sette inn ' fnutter selv i $row[tekst] neste gang. Lenke til kommentar
Ernie Skrevet 30. august 2007 Del Skrevet 30. august 2007 mysql_fetch_array bruker mer minne enn mysql_fetch_assoc eller mysql_fetch_row. mysql_fetch_array inneholder både verdiene fra assoc og row, så jeg ser ikke nytten i å ha den samme informasjonen to ganger i en variabel. Jeg bruker normalt fetch_row når jeg henter få felter, og fetch_assoc når det er mange. 9393510[/snapback] ev. mysql_fetch_array(..., MYSQL_ASSOC) / mysql_fetch_array(..., MYSQL_NUM) 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å