WebKnight Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 Har laget en side for å endre data fra mySQL database. Problemet er når jeg har en " i databasen så stopper teksten ved dette. Hvordan kan man løse dette ? Takker for svar. Lenke til kommentar
LoS Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 (endret) Tar jeg ikke helt feil skal vel mysql_real_escape_string() fikse dette problemet. Endret 22. januar 2005 av LoS Lenke til kommentar
WebKnight Skrevet 22. januar 2005 Forfatter Del Skrevet 22. januar 2005 Ser ut til at det kan være riktig, men når jeg forsøker å legge til dette får jeg bare opp en blank side $result = mysql_query("SELECT * FROM nyheter WHERE ID='{$_GET['ID']}'", mysql_real_escape_string($intro)); Lenke til kommentar
LoS Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 Jeg antok ihvertfall at du skulle kjøre en update funksjon i mysql? Poenget er at du skal escape variabler og tekst før du setter de inn i en spørring. Slik at du ikke kan kjøre en såkalt "SQL-injection". Som jeg igjen antar at er grunnen til at update-spørringen ikke virker skikkelig. Lenke til kommentar
WebKnight Skrevet 22. januar 2005 Forfatter Del Skrevet 22. januar 2005 Takker for at du tar deg tid til å hjelpe, er som du sikkert skjønner rimelig fersk på dette Her er hele koden slik den er nå : Først har jeg en side med en liste over alle nyhetene, og trykker jeg på en av disse komer jeg til en side som henter opp innholdet i databasen og setter det inn i et skjema slik at det kan endres. Det er her jeg har problemer med at strengen kuttes ved ". Denne siden ser slik ut: <?php include 'felles/config.php'; include 'felles/opendb.php'; $result = mysql_query("SELECT * FROM nyheter WHERE ID='{$_GET['ID']}'"); while($myrow = mysql_fetch_assoc($result)) { ?> <form action ="nyhet_oppdater.php" method = "post"> <table> <tr> <td>OVERSKRIFT</td> <td><input type ="text" name = "overskrift" value="<? echo $myrow['overskrift']; ?>" </td> </tr> <tr> <td>INTRO</td> <td><input type ="text" name = "intro" value="<? echo $myrow['intro']; ?>" </td> </tr> <tr> <td>ARTIKKEL</td> <td><TEXTAREA NAME="tekst" ROWS=10 COLS=30><? echo $myrow["tekst"] ?></TEXTAREA> </td> </tr> <tr> <td>FORFATTER</td> <td><input type ="text" name = "forfatter" value="<? echo $myrow['forfatter']; ?>" </td> </tr> <tr> <td><input type="submit" value="OPPDATER"></td><td> <input type = "reset" value="SLETT INNHOLD"></td> </tr> </table> </form> <? Og nyheter_oppdater.php ser ut som dette : <?php include 'felles/config.php'; include 'felles/opendb.php'; $result = mysql_query("SELECT * FROM nyheter WHERE ID = '{$_GET['ID']}'"); $result = "UPDATE nyheter SET overskrift = '$overskrift', intro = '$intro', tekst = '$tekst', forfatter = '$forfatter' WHERE id = '$ID'"; mysql_query($result) or die('Error : ' . mysql_error()); echo "Article '$overskrift' saved"; echo "<b>OPPDATERT<br>DU blir nå sendt tilbake til nyhets listen"; //header("location: admin.php"); echo "<meta http-equiv=Refresh content=4;url=nyhet_liste.php>"; ?> Og som du sikkert kan se så fungerer ikke dette, dvs. ingen endringer blir gjort selv om scriptet kjøres... Lenke til kommentar
LoS Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 (endret) Dette skyldes vel mest sannsynlig at register_globals er skrudd av. Slik at du må bruke $_POST['overskrift'] isteden for $overskrift. Gode kodevaner gjør at du bruker dette enten det virker uten, eller ikke. For å omgå problemet kan du bruke extract($_POST); men det er ikke anbefalt. edit: omgås med extract(), løses med å bruke $_POST på samme måte som du har brukt $_GET Endret 22. januar 2005 av LoS Lenke til kommentar
LateFot Skrevet 22. januar 2005 Del Skrevet 22. januar 2005 tror ikke du sender id med formet som det er der. Prøv å sett inn dette i formet ditt: <input type="hidden" name="id" value="<? echo $DIN_ID_VARIABEL; ?>"> så sammenligner du id med $_POST['id'] i queryen. Lenke til kommentar
WebKnight Skrevet 23. januar 2005 Forfatter Del Skrevet 23. januar 2005 (endret) Ja noen ganger ser man ikke skogen for bare trær.. Var det at jeg ikke sendte ID'en som var galt, nå fungerer scriptet, men jeg har ikke fått til det med å se " tegnet i teksten jeg vil endre. all teksten fra og med dette tegnet kommer ikke med. Hvilken syntax skal jeg bruke for å få til dette, noen som kan hjelpe ? Jeg prøver med $result = mysql_query("SELECT * FROM nyheter WHERE ID='{$_GET['ID']}'", mysql_real_escape_string($myrow["intro"]), mysql_real_escape_string($myrow["bilde"]) Men da blir bare siden blank når jeg trykker oppdater og ingenting skjer. Takker for GOD hjelp så langt Endret 23. januar 2005 av WebKnight Lenke til kommentar
LateFot Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 ikke helt sikker på om det vil ha noe å si, men prøv: $myrow['bilde'] istedet for $myrow["bilde"] Lenke til kommentar
LoS Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 (endret) Du blander bruken av sprintf-eksempelet med en vanlig mysql_query fra manualen. Se her for bedre eksempel på hvordan du kan bruke den på en måte som fungerer. Denne gjør omtrent det samme som mysql_real_escape_string, men grunnen til at man ikke skal bruke det er denne notisen fra php.net Note: This function has been deprecated since PHP 4.3.0. Do not use this function. Use mysql_real_escape_string() instead. edit: det er ikke nødvendig å bruke hverken printf eller sprintf, til dette. Endret 23. januar 2005 av LoS Lenke til kommentar
WebKnight Skrevet 23. januar 2005 Forfatter Del Skrevet 23. januar 2005 ikke helt sikker på om det vil ha noe å si, men prøv: $myrow['bilde'] istedet for $myrow["bilde"] Liten leif fra meg det der, forsøkte med ' istedenfor, men det hjalp ikke. Det jeg sliter med er altså: I tabellen har jeg f.eks teksten - han sa "Dette funker ikke" Når jeg så skal laste dette inn i form'en hvor dette skal endres så forsvinner teksten f.o.m den første ". Lenke til kommentar
LoS Skrevet 23. januar 2005 Del Skrevet 23. januar 2005 htmlspecialchars($myrow['var']); ? Lenke til kommentar
LateFot Skrevet 24. januar 2005 Del Skrevet 24. januar 2005 hm hvordan ser insert queryen din ut? bruker du mysql_real_escape_string på variablene du setter inn der. Lenke til kommentar
WebKnight Skrevet 24. januar 2005 Forfatter Del Skrevet 24. januar 2005 hm hvordan ser insert queryen din ut? bruker du mysql_real_escape_string på variablene du setter inn der. Sent i seng, eller tidlig oppe Insert går greit, så jeg bruker ikke noe der. Problemet oppstår som sagt når jeg laster verdiene inn i et form for å redigere. Skal teste din løsning LoS når jeg kommer meg hjem! 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å