4588pkdkrikue5c Skrevet 26. april 2009 Del Skrevet 26. april 2009 (endret) Hei, Eg har dei siste dagene slitt med å lage eit redigeringsscript for å redigere tidligere innlegg i sql databasa mi. Å legge til, å fjerne går veldig grett. Men redigere får eg ikkje til.. Først kjem redigeringssida (som fungerer utmerka): <?php header("Content-Type: text/html;charset=UTF-8"); // Koble til database $tilkobling = mysql_connect("lokalserver:1234","brukarnamn","kodeord"); if (!$tilkobling) { die('Det har oppstått en kritisk feil med databasen. <a href="#">Send melding.</a>'); } mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); // ÆØÅ fiks mysql_select_db("databasedøme", $tilkobling); $sidenavn = $_GET['innlegg']; $result = mysql_query("SELECT * FROM portefolje WHERE prosjektnavn = '$sidenavn'"); while($row = mysql_fetch_array($result)) { $kategori = $row['kategori']; $type = $row['type']; $kunde = $row['kunde']; $prosjektnavn = $row['prosjektnavn']; $beskrivelse = $row['beskrivelse']; $bildenavn = $row['bildenavn']; $ident = $row['PORT_ID']; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Admin</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> function advarsel() { var answer = confirm ("Dersom du avslutter nå vil eventuelle data gå tapt."); if (!answer) window.location="http://www.google.no"; } </script> <script language="JavaScript" type="text/javascript"> <!-- function checkform ( form ) { if (form.prosjektnavn.value == "") { alert( "Du må skrive et prosjektnavn!" ); form.prosjektnavn.focus(); return false; } if (form.kategori.value == "tom") { alert( "Du må velge en kategori fra listen!" ); form.kategori.focus(); return false; } if (form.prosjekttype.value == "") { alert( "Du må skrive inn prosjekttype!" ); form.prosjekttype.focus(); return false; } if (form.kunde.value == "") { alert( "Du må skrive inn navn på kunde!" ); form.kunde.focus(); return false; } if (form.beskrivelse.value == "") { alert( "Du må skrive inn en beskrivelse av prosjektet!" ); form.beskrivelse.focus(); return false; } return true; } //--> </script> <script> function change(that, fgcolor, bgcolor){ that.style.color = fgcolor; that.style.backgroundColor = bgcolor; } </script> </head> <body> <br/><br/> <div style="margin-left:135px; position:absolute;" id="form"> <form enctype="multipart/form-data" action="lagre_endringer.php" method="POST"> <input style="color:#666666;" name="prosjektnavn" id="prosjektnavn" type="text" value=" <?php echo $prosjektnavn; ?>"><br/><br/> <select name="kategori" id="kategori" selected="Webdesign/programmering"> <option value="tom">-- VELG KATEGORI --</option> <option <?php if ($kategori == Web) { echo "SELECTED"; } ?> value="Web">Webdesign/programmering</option> <option <?php if ($kategori == Design) { echo "SELECTED"; } ?> value="Design">Grafisk design</option> <option <?php if ($kategori == Video) { echo "SELECTED"; } ?> value="Video">Video og film</option> <option value="Skole">Skolerelatert arbeid</option> </select><br/><br/> <input style="color:#666666;" name="prosjekttype" type="text" onfocus="change(this,'#000000');" onblur="change(this,'#666666');" value=" <?php echo $type; ?> "><br/><br/> <input style="color:#666666;" name="kunde" type="text" onfocus="change(this,'#000000');" onblur="change(this,'#666666');" value=" <?php echo $kunde; ?> "> <br/><br/> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> <input type="hidden" name="referanse" value="<?php echo $ident?>" /> <input name="uploadedfile" type="file" /><br /> <br /><br/> <textarea style="color:#666666; padding:0px; margin:-0px; text-align:left; font-family:arial; font-size:12px" name="beskrivelse" type="text" cols="33" rows="13" value="TEST" onfocus="change(this,'#000000');" onblur="change(this,'#666666');"> <?php echo $beskrivelse; ?> </textarea> <br/><br/> <input type="hidden" name="process" value="1" /> <input type="submit" value="Lagre og last opp"> </form> </div> <ul style="list-style:none; padding:0; margin-left:25px; font-size:12px; text-transform:uppercase;"> <li style="padding-bottom:20px; text-align:right; width:100px;">Prosjektnavn:</li> <li style="padding-bottom:20px; text-align:right; width:100px;">Kategori:</li> <li style="padding-bottom:20px; text-align:right; width:100px;">Type:</li> <li style="padding-bottom:20px; text-align:right; width:100px;">Kunde:</li> <li style="padding-bottom:20px; text-align:right; width:100px;">Thumbnail:</li> <li style="padding-bottom:20px; text-align:right; width:100px;">Beskrivelse:</li> </ul> </body> </html> Og her kjem sida det vart posta til: <?php $ref = $_REQUEST['referanse']; // Where the file is going to be placed $target_path = "uploads/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); $target_path = "uploads/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); $filnavn = basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded."; } else{ echo "There was an error uploading the file, please try again!"; } include('dblogin.php'); if(isset($_POST['process']) and $_POST['process']==1) { $prosjektnavn = trim($_POST['prosjektnavn']); $kategori = trim($_POST['kategori']); $type = trim($_POST['prosjekttype']); $kunde = trim($_POST['kunde']); $beskrivelse = trim($_POST['beskrivelse']); $query = 'UPDATE portefolje WHERE PORT_ID = '$ref' prosjektnavn = "'.$prosjektnavn.'", kategori = "'.$kategori.'", type = "'.$type.'", kunde = "'.$kunde.'", bildenavn = "'.$filnavn.'", beskrivelse = "'.$beskrivelse.'", publisert = NOW()'; if(mysql_query($query)) { echo 'Innlegget er lagret.'; } else { echo 'En feil har oppstått.'; } } ?> Kva gjer eg galt? Det fungerer ikkje, eg får berre opp at ei feil allereie har oppstått. Kan det vere at eg har same variabelnamn i den forrige sida som poste til den nye? Takker for alle svar! Endret 26. april 2009 av steffenz Lenke til kommentar
AlecTBM Skrevet 26. april 2009 Del Skrevet 26. april 2009 (endret) UPDATE portefolje WHERE PORT_ID = '$ref' prosjektnavn = "'.$prosjektnavn.'", kategori = "'.$kategori.'", type = "'.$type.'", kunde = "'.$kunde.'", bildenavn = "'.$filnavn.'", beskrivelse = "'.$beskrivelse.'", publisert = NOW() Du setter ikke noen nye verdier noen plass WHERE er bare hvilken rad det skal være, ikke hva som skal endres. Blir vell UPDATE portefolje SET prosjektnavn = "'.$prosjektnavn.'", kategori = "'.$kategori.'", type = "'.$type.'", kunde = "'.$kunde.'", bildenavn = "'.$filnavn.'", beskrivelse = "'.$beskrivelse.'", publisert = NOW() WHERE PORT_ID = '$ref' Endret 26. april 2009 av AlecTBM Lenke til kommentar
4588pkdkrikue5c Skrevet 27. april 2009 Forfatter Del Skrevet 27. april 2009 Takk for svar! No fungerer det utmerka, bortsett frå automatisk ID. Her kjem koda modifisert slik at den fungerte: $query = 'UPDATE portefolje SET prosjektnavn = "'.$prosjektnavn.'", kategori = "'.$kategori.'", type = "'.$type.'", kunde = "'.$kunde.'", bildenavn = "'.$filnavn.'", beskrivelse = "'.$beskrivelse.'", publisert = NOW() WHERE PORT_ID = "$ref"'; Men eg får dessverre ikkje WHERE PORT_ID = "$ref"'; til å fungere. Uansett korleis eg snur å vender på det fungerer den ikkje. Prøvde å konvertere den til INTEGER, men det verka heller ikkje. Sjå kode: $ref = $_REQUEST['referanse']; $fullref = (integer) $ref; echo $fullref; Endra då koden førstekode til WHERE PORT_ID = "$fullref"'; utan noko resultat av den grunn... Lenke til kommentar
Warz Skrevet 27. april 2009 Del Skrevet 27. april 2009 Må du ikke skrive: '.$ref.''; og ikke "$ref"'; ? Hva får du ved å skrive echo $query; under spørringen? Lenke til kommentar
4588pkdkrikue5c Skrevet 28. april 2009 Forfatter Del Skrevet 28. april 2009 (endret) Må du ikke skrive: '.$ref.''; og ikke "$ref"'; ? Hva får du ved å skrive echo $query; under spørringen? Det er visst akkurat det eg må. Har du noko forklaring på kvifor eg må ha alle desse punktuma, anførselstekna og fnuttane om ein anna? Eg forstår så mykje at eg må ha "" eller '' når eg skriv ut ein streng (avhengig av om skal ha varabler eller ei - noko som fekk meg til å velje "" her), men kvifor må eg ha "'.$variabel.'", på kvar som skal skrivest ut? Og ein anna ting med det same - om nokon av dykk vett: Databasen min kjører UTF-8, men korleis kan eg forsikre meg om at HTML formen sender ut med dette? ÆØÅ fungerer nemleg ikkje, enn dei vises når eg skriv inn i phpMyAdmin. Tips?.. Har prøvd å skrive accept-charset="UTF-8" på formen, utan hell.. Redigert: Tusen takk for hjelp så langt Endret 28. april 2009 av steffenz Lenke til kommentar
AlecTBM Skrevet 28. april 2009 Del Skrevet 28. april 2009 Meta tager i HTML <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Lenke til kommentar
Warz Skrevet 28. april 2009 Del Skrevet 28. april 2009 Må du ikke skrive: '.$ref.''; og ikke "$ref"'; ? Hva får du ved å skrive echo $query; under spørringen? Det er visst akkurat det eg må. Har du noko forklaring på kvifor eg må ha alle desse punktuma, anførselstekna og fnuttane om ein anna? Eg forstår så mykje at eg må ha "" eller '' når eg skriv ut ein streng (avhengig av om skal ha varabler eller ei - noko som fekk meg til å velje "" her), men kvifor må eg ha "'.$variabel.'", på kvar som skal skrivest ut? Og ein anna ting med det same - om nokon av dykk vett: Databasen min kjører UTF-8, men korleis kan eg forsikre meg om at HTML formen sender ut med dette? ÆØÅ fungerer nemleg ikkje, enn dei vises når eg skriv inn i phpMyAdmin. Tips?.. Har prøvd å skrive accept-charset="UTF-8" på formen, utan hell.. Redigert: Tusen takk for hjelp så langt Det er slik at med dobble fnutter "" trenger man ikke ha fnutter rundt variabler. En annen ting som er viktig å huske på er at i alle SQL spørringen må du har fnutter rundt alle "strings/tekst". Eksempel: SELECT * FROM table WHERE username = 'Warz' Når du skal ha dette i en spørring må det derfor bli dobbelt opp... og du må bruke riktig fnutt for å bryte ut av spørringen. $var = "Warz"; eks 1: $sql = "SELECT * FROM table WHERE username = 'Warz'"; eks 2: $sql = "SELECT * FROM table WHERE username = '".$var."'"; I eks 2 starter vi med en dobbel fnutt, men vi må ha fnutt rundt brukernavnet siden dette er en string. Vi setter derfor en fnutt først, så en dobbelfnutt for å gå ut, punktum brukes for å skjøte. en ny dobbelfnutt for å gå inn ingen og en enkel fnutt som skal være rundt brukernavnet før vi avslutter med en dobbel. eks 2 kan forøvrig skrives slik også: eks 2: $sql = "SELECT * FROM table WHERE username = '$var'"; eks 2: $sql = 'SELECT * FROM table WHERE username = "'.$var.'"'; Håper ikke det ble alt for rotete forklart Lenke til kommentar
Martin A. Skrevet 28. april 2009 Del Skrevet 28. april 2009 $sql = "SELECT * FROM table WHERE username = '".$var."'"; Den kan gjøres på en annen, og mer leslig måte (min mening) $sql = "SELECT * FROM table WHERE username = '{$var}'"; Om $ref er en integer, så skal ikke den har fnutter rundt seg. Lenke til kommentar
Warz Skrevet 28. april 2009 Del Skrevet 28. april 2009 $sql = "SELECT * FROM table WHERE username = '{$var}'"; Om $ref er en integer, så skal ikke den har fnutter rundt seg. Jøss, den der var jeg ikke klar over... Har den noen ulemper eller? Lenke til kommentar
Martin A. Skrevet 28. april 2009 Del Skrevet 28. april 2009 Ingen, så vidt meg bekjent. Lenke til kommentar
TheClown Skrevet 29. april 2009 Del Skrevet 29. april 2009 Har ikke hatt noe problem med det jeg heller 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å