kakkle
-
Innlegg
731 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Hendelser
Blogger
Om forumet
Innlegg skrevet av kakkle
-
-
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
-
Du må sette $main til blogg også...
Kanskje like greit å sjekke om $_GET["h"] er satt eller ikke. Er den satt, sett $main til den verdien, hvis ikke, sett den til blogg.
Prøv dette:
if(isset($_GET["h"])) { $main = $_GET["h"]; } else { $main = "blogg"; } if(isset($_GET["s"])) { $includefile = "inc/".$_GET["s"].".inc"; } else { $includefile = "inc/$main.php"; }
istedetfor:
if (isset($_GET["h"])) { $main = $_GET["h"]; if (isset($_GET["s"])) { // varibel s er fra submenu $submenu = $_GET["s"]; } else { $includefile = "inc/$main.inc"; } } else { $includefile="inc/hjem.inc"; }
Ikke testet i det hele tatt... Du kan forsåvidt fjerne variablen $submenu, tror jeg.
-
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
-
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.:
-
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
-
Ligger alle include filene i folderen inc ?
Da må du isåfall endre $includefile til dette:
$includefile = "inc/$main.php"
Forutsatt at filene dine har en .php endelse. evt kan de bytte stil inc eller hva du måtte ha.
Du kan jo forsåvidt bake inn denne snutten i koden din, som du hadde fra før:
$mappe = 'inc/'; $dir = opendir($mappe); $filer = array(); while (($filename = readdir($dir)) !== false) { if (is_file($mappe.$filename)) { $filer[$filename] = $mappe.$filename; } }
Da kan du fjerne filendelsen fra $includefile og bruke $files[$includefile]
I linkene i submenyen, må du skrive <a href="?h=$main&s=[side som submeny skal vise]">
EDIT: Se forøvrig i .sub eksempelet som jeg la med i forrige innlegg
EDIT2: Ser også at du setter den variabelen som kommer fra submenu til $submenu. Sett denne til $includefile = "inc/".$_GET["s"] foreksempel, eller bare $_GET["s"] dersom du velger å benytte array metoden din.
-
Her er bare et kjapt eksempel
<? // Her kommer litt variabel innhenting først if (isset($GET["h"])) { $main = $_GET["h"]; if(isset($_GET["s"])) { // varibel s er fra submenu $includefile = $_GET["s"]; } else { $includefile = $main; } } else { $include_file="hovedside.php"; } ?> //Her er hovedmenyen <div class='mainmenu'> <li><a href='?h=blogg'>Blogg</a></li> <li><a href='?h=side2'>Side2</a></li> </div> <div class='maincontent'> // Her er hovedinnholdet include ("$includefile.php"); </div> <div class='submenu'> <? if(file_exists("$main.sub")) { include "$main.sub"; } ?>
Her blir submeny vist etter hvilken link du har trykket i hovedmenyen, og er det samme ved trykk på submenu. Dersom det ikke er valgt noe fra hovedmenyen, vises hovedsiden (hovedside.php) og dersom det er valgt noe fra hovedmenyen, men ikke fra submenyen, vises filen med samme navn som hovedmenyen (F.eks. blogg.php)
Og her er et eksempel på submenu fil:
blogg.sub:
<div id=\"sidebar_r\"> <ul> <h3>Kategorier:</h3> <li><a class=\"meny_r\" href=\"?h=$main&s=blogg_personlig_blogg\">Personlig blogg</a></li> <li><a class=\"meny_r\" href=\"?h=$main&s=ferie_2005\">Ferie 2005</a></li> <li><a class=\"meny_r\" href=\"?h=$main&s=Skoleblogg\">Skoleblogg</a></li> </ul> </div>
Men den submenu tingen du har, funker egentlig like greit.
Koden er ikke tilpasset din side. Dette er ment som et forslag om hvordan du kan gjøre det. Koden er heller ikke testet, og det kan være småfeil innimellom. Anbefaler ikke copy paste her. Mangler nok sikkert noen {, }, /(, ) og ; rundt omkring. Bør i teorien funke.
Det som er litt viktig, er at du tar vare på hvilken link som er valgt i hovedmenyen, slik at koden heletiden vet hvilken submeny som skal vises.
Håper du ble litt klokere. Si fra dersom dette ikke fungerer i det hele tatt
EDIT: Fikset litt på submenyen, og tok kun med tre submeny punkter.
/Kakkle
-
Det er nok flere løsninger her, men her er en mulig:
I submenu, må du benytte en annen variabel enn den du bruker i hovedmenyen. Velg så hvilken side som skal inkluderes utifra variabel i submeny. Dersom ikke noe er valgt i submeny, viser du default siden, som er den som skal vises når linken i hovedmenyen trykkes på.
Ville kanskje latt hver submeny være en egen fil, slik at submenyen til f.eks blogg heter blogg.sub som inkluderes dersom blogg er valgt i hovedmenyen.
Si fra dersom forklaringen ble litt kryptisk, så kan jeg muligens knote ned litt enkel kode som forklarer bedre.
/Kakkle
-
Det mangler en } på slutten. Enten til foreach løkken, eller for if($already_counted). Det går for det samme...
-
jupp... $displayfilename blir ikke definer før etter spørringen. Så du må bruke $filename i spørringen istedetfor. Og det er vel den verdien som også ligger lagret i databasen ?
-
Og da kan det være greit å bytte denne linjen:
$sql = mysql_query("SELECT * FROM `nyheter` ORDER BY ID DESCLIMIT $from, $max_results");
til:
$sql = mysql_query("SELECT * FROM `nyheter` ORDER BY ID DESC LIMIT $fra, $maks_resultater");
/Kakkle
-
litt mer nøyaktig hva som jeg vil skal skje:
Dropdownlisten skal brukes til å forandre når brukerens fødselsdato, nærmere bestemt måned.(kanskje litt porngløst men). Jeg har da to "<option>" verdier i scripte(: 1. den verdien som er satt kommer som default. 2. Etter defaultverdien kommer for loopen som ramser opp de andre tolv månedene. Da kommer jo en måned opp opp to ganger, en fra dabasen og en fra oppramsingen av de månedene(ligger i en array). Jeg vil at tallet bare skal komme opp en gang. Etter å ha tenkt litt har jeg kommet fram til et forslag:
while($row[]=$array(hvor alle månedene ligger lagret))
{
if ($month(hentet fra databasen)!=$row) {
echo $row;
}}
men det ser ikke ut til å funke, men er jeg på riktig spor?
Hmmm...
Hvis jeg skjønner deg riktig, vil du at måneden som står i databasen skal vises i option feltet som default. Kan du ikke bare gjøre en test på om måneden som er i while løkken er den samme som er i databasen, og hvis den er det, setter du det option-elementet til default, eller selected.
Eksempel: Si at alle månedene ligger lagret i arrayet $maneder, og måneden fra databasen ligger i variabelen $db_maned.
for($i=0;$i<count($maneder);$i++) { if ($maneder[$i] != $db_maned) { echo "<option value='$maneder[$i]'>$maneder[$i]</option>"; } else { echo "<option value='$maneder[$i]' selected='selected'>$maneder[$i]</option>"; }
EDIT:
evt:
for($i=0;$i<count($maneder);$i++) { $selected = ($maneder[$i] != $db_maned)?"";" selected='selected'"; echo "<option value='$maneder[$i]".$selected.">$maneder[$i]</option>"; }
som gjør akkurat det samme; Setter selected = "" Dersom det er ulik måned og $selected = " selected='selected'" dersom det er lik måned
-
Er det hele koden ?
Ser isåfall en del feil i login.php. Mangler endel }. Men da er det isåfall merkelig at det fungerer i firefox, forsåvidt. header() og session_start() må settes helt i toppen av scriptet, før noe output (<HTML> osv...)
-
Jeg tror nok jeg ville skilt på ord istedetfor tegn, slik at ikke en del av ordet blir på side en, og andre del av ordet på side to.
Et aldri så lite eksempel på teorien
//databsekobling, spørrinng, osv // $text = teksten fra mysql... $ord_pr_side = 100; if(!isset($_GET["side"])) $side = 0; else $side = $_GET["side"] $start = $side*$ord_pr_side; $slutt = $start + $ord_pr_side; $ant_ord = str_word_count($text); if($slutt > $ant_ord) $slutt = $ant_ord; $ant_sider = ceil($ant_ord / $ord_pr_side); $ord = str_word_count($text, 2); for($i=$start;$i<$slutt;$i++) { print $ord[$i]." "; } if($ant_sider > 1) { $nesteside = $side+1; print "<a href='?side=$nesteside'>neste side</a>"; }
Ikke helt 100, men omtrent noe sånt, kanskje ? Ikke testet, da...
Du bør lese litt om str_word_count på php.net
er usikker på om den tar med æøå. Den teller ihvertfall ikke med tall. Dette må legges til i et tredje argument. Se eksempel på php.net
-
Hvis du skal ha alle ordene i en fil i et array, bare skilt av mellomrom, f.eks, så tror jeg at jeg ville brukt implode etterfulgt av str_word_count, som telle antall ord i en variabel, og om ønskelig returnerer et array med alle ordene.
eks:
$filarray = file("ord.txt"); $fil = implode("", $filarray); $ord = str_word_count($fil, 1); // returnerer alle ord til srray $ord, med 0 - ant ord som key $ord = str_word_count($fil, 2); // returnerer alle ord til array $ord med posisjon i variabelen som key
Se evt godt ekempel på php.net. Link over.
-
Det er en funksjon som du limer inn i en fil, og kaller f.eks. mkdirr.php, og inkluderer i toppen av dokumentet. Evt. Legg den sammen med andre funksjoner som du benytter. F.eks i en functions.php fil
-
Det er ihvertfall en feil i if setningen din. Regner med at du vil teste om $_SESSION['innlogget'] er lik 'ja'. Da må du isåfall bruke to likhetstegn, slik du har gjort på if setningen over.
if($_SESSION['innlogget'] == 'ja') echo'<h4>Du er nå logget inn!</h4><br><a href="webadmin.php">webadmin</a>';
Gå igjennom og sjekk redirection koden din (header("loaction:ajh")). Det virker som om det er en loop som går. f.eks i side1.php redirecter du til side2.php. På side2.php er det feil i en if setning, som gjør at den alltid er sann, og redirecter tilbake til side1.php, og slik går det i en loop, til grensen er nådd...
Kan være det bare er den if setningen din.
-
Ta enl liten kikk på den første kommentaren på zip sidene på php.net
Den funksjonen krever mkdirr, som du kan finne her
-
For å browse filssytemet:
File system functions på php.net
Kjøres det linux på webserver, vil jeg anbefale å ta en titt på ImageMagick. Rett og slett genialt (vha exec kommando i php)
Har du linux, lærer du mye med "man ImageMagick". Der får du oversikt over alle kommandoer som er tilgjengelig...
Manualen på web finner du bl.a her: man ImageMagick
-
Så du skal ikke erstatte hele filen, er det slik å forstå ? Du vil bare endre deler av filen ?
Her er et konkret eksempel for lagring av $data (filen omperson.txt) i en variabel:
$filelines = file($data); // Her er $data="omperson.txt" iflg config filen din $helefilen = implode ("", $filelines);
Dersom du vil se litt mer på filer, og lesing fra dem, og endring av filer, så kan du kikke på følgende sider på php.net:
Andre sider som er nyttige:
http://www.php.net/str_replace
http://www.php.net/ereg_replace
for å ha med noen... Det er masse å lære på php.net, så jeg anbefaler deg å lese litt der. Se også på kommentarene som er under funksjonsbeskrivelse. Kan hende det ligger en funksjon for akkurat det du leter etter der.
EDIT: Tok med link til Filesystem reference også, og slettet den siste file linken...
/KMS
-
-
Tror Sir Ice tenkte litt på de tidligere innleggene dine også.
Tilbake til topic.
Finn den nye høyden slik:
$bilde = ($_FILES['BILDE']); // husk at imagesx er bredden på bildet... $hoyde = imagesy($bilde); // Unngå æøå i variabellnavn $bredde = imagesx($bilde); $nybredde = 600; $nyhoyde = $hoyde * ($nybredde / $bredde); $img = imagecreate($nybredde, $nyhoyde);
Sånn ca... Ikke i det hele tatt testet...
-
Evt gjør denne snutten jobben for deg (Krever ImageMagick installert på server):
exec("convert -resize $thumbsizex$thumbsize $img_source $img_savepath")
hvor $thumsize er maksstørrelse på thumbnails, $img_source er bildet som skal lages thumbnail av, og $img_savepath er det nye bildet.
PS x mellom $thumsize er et gangetegn som i 75x75
-
du kan fint bruke "w" forå skrive over et dokument, men det du gjør her, er jo at du først leser innholdet i filen inn i arrayet $comfile, så legger du til det nye, også legger du inn hver linje som var i det gamle dokumentet... Derfor får du det gamle i tillegg..
Dersom du ikke skal bytte ut hele filen med nytt innhold, bør de sette inn noen kommentar-tags som sier hvor forskjellige ting starter.. F.eks <!-- Profil Start --> og <!-- Profil Slutt --> og hvis du har noen kommentarer under der igjen, som skal legges til (virker sånn), så kan du f.eks bruke <!-- komm start --> og <!-- komm slutt -->, også bytter du bare ut teksten mellom start og slutt av profil med den nye profilen, og skriver hele teksten på nytt...
Tips: For å lagre hele innholdet i en variabel, kan du bruke: implode("", file($data)); Så kan du bare erstatte alt mellom profil start og profil slutt
En annen ting; Du siter at det er en tekstfil pr bruker... Men ifølge koden, så henter du alltid inn filen omperson.txt. stemmer det eller ? Er det kanskje litt kode som ikke vises her...
UFF Seint ! Må få lagt meg
Lete i flat filer etter noe…
i Programmering og webutvikling
Skrevet
Hmmm...
Skjønner problemer, tror jeg. Filen er altså slik hele veien:
HVa med å gjøre et søk etter rett brukernavn først, når den finner rett brukernavn, bruker du linjenumeret som det brukernavnet står i, til å sjekke passordet, som skal ligge i neste linje.