NH
-
Innlegg
190 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Hendelser
Blogger
Om forumet
Innlegg skrevet av NH
-
-
Ikke for å være frekk, men i mine øyne er dette kansje spørsmål du burde kunne svaret på FØR du tar på deg et såpass stort prosjekt, selv om lagring av produkter i seg selv kansje ikke er det vanskeligste.
PHP og ASP er i seg selv omtrent LIKE sterke så vidt jeg vet, men som nevnt over er PHP blitt veldig populert blant oss selvlærte da det er lisensfritt, dessuten også sansynligvis et av de letteste språk å lære seg.
PHP er jo ikke spesielt gammelt, så er nok en del eldre løsninger laget i ASP rett og slett fordi det er det litt eldre utviklere har lært seg.
Nå er ikke jeg noen stor ekspert på .NET programering, men så vidt jeg vet innebærer ASP flere språk, ikke bare ett som i PHP. Du kan bruke C#, Visual Basic og Java Script som SSI.
Det hele er vel egentlig en smakssak. Dessuten kjører vel neppe ASP på en linux server?
Som et tips til videre når det gjelder betalingssystemer (Noe jeg anser som det mest knotete ved å lage egen nettbutikk) er kansje paypal et godt alternativ da det er relativt lett å sette opp og du slipper VISA og mastercard systemer selv da paypal tar for seg allt dette. En god guide til hvordan bruke PayPal på siden din har faktisk Zend laget for deg:
http://www.zend.com/zend/tut/tutorial-paypal.php
Huk å sett deg godt inn i SQL, du trenger å kombinere mange tabeller. Her holder ikke en vanlig SELECT
-
jeg har laget denne klassen:
http://norskwebforum.no/pastebin/2426
klassen er i utgangspunktet for php5, men tar 2sek å skrive om.
Klassen bruker mysql som log db, tabellen ser slik ut:
CREATE TABLE `online` ( `ip` varchar(20) collate latin1_general_ci NOT NULL default '', `time` int(15) default NULL, `dato` date NOT NULL default '0000-00-00' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
et eksempel på bruk:
<?php //helt øverst på alle sider som skal telle/vise statestikken require_once('online.class.php'); //includer klassen $online = new online(); //tilordne den til et objekt //der du vil det skal vises kan du bruke disse klasse komandoene echo '<br />'; echo "Online: ". $online->visonline() ."<br />"; //vis antall online ATM echo "Besøk i dag: ". $online->visidag() ."<br />"; //vis antall treff i dag (unike) echo "Unike treff:". $online->visunike() ."<br />"; //Vis totalt unike treff ?>
-
mysql funksjonene og mysql 4.x støtter ikke SQL komandoer adskilt med semikolon. For dette må du bruke mysqli funksjonene til PHP5.
Om det går med mysql5x og mysql funksjonene har jeg aldri prøvd,p
-
Jeg har i allefall alrdri fått disse funksjonene til å kjøre på noen av mine windows maskiner
* Only valid on systems supporting the st_blksize type - other systems (e.g. Windows) return -1. -
din br() vil selfølgelig virke, men er noe unødvendig spør du meg.
Men når det kommer til din bruk av while så er det selfølgelig ikke riktig måte å gjøre den jobben på, her vil en for() løkke gjøre jobben langt lettere, men while løkken gjør jobben like godt om du bytter ut ett = med en !
function br($a = 1) { $i = 0; while($i != $a) { echo '<br />'; $i++; } }
eventuelt
while($i < $a){...}
det er mange måter å få gjort en jobb, men er vel ingen grunn til å finne opp hjulet på nytt?
(PHP har rundt 750 ferdigskrevne funksjoner + PEAR pakkene(som forøvrig er metoder og klasser, ikke funksjoner)
-
merk deg:Funksjonene filemtime(), filectime() og stat() fungerer utelukkende på unix maskiner...
Har du en unix server er dette de tre alternativene du har (stat() henter all informasjon)
-
i mysqli funksjonene kan du kjøre flere queries på en gang. er bare å separere dem med ;p
-
det må man da gjerne gjøre.
I php har alle variabler uansett verdien null.
Om du ønsker å legge til mere til null blir null automatisk borte da det ikke er null info der lenger,. (rotete forklart)
$var++; (fungerer utmerket og vil resultere i at $var blir opprettet med verdien en da alle variabler i php standard er 0
$var2 .= 'en variabel'; //Fungerer også utmerket
-
dette kan vel hjelpe?
<!-- I <head> --> <script language="javascript"> var lastElementId = 0; function viewNhide(elementId){ var element = document.getElementById(elementId).style; if(lastElementId != 0 && lastElementId != elementId){ viewNhide(lastElementId); } if(element.display == "block"){ element.display = "none"; } else { element.display = "block"; } lastElementId = elementId; } </script> <!-- dropdownen --> <form> <select name="grønt" id="gront" onchange="viewNhide(this.value)"> <option value="0" selected>-- Velg --</option> <option value="frukt">Frukt</option> <option value="gronnsaker">Grønnsaker</option> </select> <select name="grønnsaker" id="gronnsaker" style="display:none"> <option value="agurk" selected>Agurk</option> <option value="kål">Kål</option> </select> <select name="frukt" id="frukt" style="display:none"> <option value="appelsin" selected>Appelsin</option> <option value="eple">Eple</option> </select> </FORM>
merk:
her har jeg valgt å bruke value i første formen som ID på de andre formene
-
klart du kan skrive før og etter header():
<?php ob_start(); //Start caching av headere ?> <script type="javascript"> window.open(_Dine_config_her_); <!-- slå opp på w3schools.com om du ikke husker/veit alle settings i open() --> </script> <?php // Go to a random URL $url[0] = "http://finn.no/eiendom/"; $url[1] = "http://finn.no/bil"; srand ((double)microtime()*1000000); $randomnum = rand(0, count($url)-1); header ("Location: $url[$randomnum]"); ob_flush(); //Tøm cache og kjør alle headers. ?>
eventuelt kan du drite i php på denne siden og bare bruke JS. alltid en løsing på ting
-
for det første er det et noe merkelig format du har valgt. hvor får du det fra?
når det gjelder svaret:
-Del opp tallet ditt med substr() rokker om på rekkefølgen og legg til eventuelle tegn og vis ut igjen:
//.... $year = substr($unformatedDate, 0, 4); $month = substr($unformatedDate, 0,2); //... printf("%d-%d-%d klokka %d:%d", $day, $month, $year, $hour, $minutes);
orket igge lage en fulverdig kode, men det klarer du sikkert selv
legg det i en funksjon som returnerer en ferdig formatert dato og tar imot den uformaterte som input. så slipper du dette mere enn en gang...
-
beklager. hadde javascript deaktivert. så jeg så ikke koden...
if ( !$_POST['passord'] == $_POST['passord_bekreft'] ) {}else{ echo '<script>alert("Passordene du skrev var ikke like. Prøv igjen!");</script>'; echo '<script>history.back(1);</script>'; exit; }
dette er jo HELT feil. prøv med:
if ( $_POST['passord'] != $_POST['passord_bekreft'] ) { echo '<script>alert("Passordene du skrev var ikke like. Prøv igjen!");</script>'; echo '<script>history.back(1);</script>'; exit; }
du hadde en ! (not) der og hadde feilmeldingen i else. altså fikk du en felmelding om passordene var like...
-
hvamed å gi os litt kode å tygge på? Har du sjekket at action er satt riktig i form taggen din?
-
har laget en for deg her:
Var jo dette som var meningen i forrige post, men brukte feil JS. HAHA.
<html> <head> <?php jsClock('myClock'); ?> </head> <body onload="startTime()"> <div id="myClock"> <!-- Her vises klokka --> </div> </body> </html> <?php function jsClock($element){ $js_script = <<<EOF <script type="text/javascript"> var h = "null"; var m = "null"; var s = "null"; function startTime() { var hf="{h}" var mf={m} var sf={s} if(h == "null" || m == "null" || s == "null"){ h = hf; m = mf; s = sf; } else { if(s != 59){ s = checkTime(++s); } else { s = 00; m = checkTime(++m); if(m == 59){ m = 00; h = checkTime(++h); if(h == 23){ h = "00"; } } } } // add a zero in front of numbers<10 document.getElementById('{element}').innerHTML=h+":"+m+":"+s t=setTimeout('startTime()',1000) } function checkTime(i) { if (i<10) {i="0" + i} return i } </script> EOF; $js['h'] = date("H"); //Start time $js['m'] = date("i"); //Start minutt $js['s'] = date("s"); //start sekund $js['element'] = $element; //ID navn på tag til klokka foreach($js as $key => $val){ $js_script = str_replace('{'.$key.'}', $val, $js_script); } print($js_script); } ?>
eventuelt kan du bruke GD til dette. Som da ikke er en teller men som henter ny date() fra php hvert sekund.
for dette trenger du to scripts.
clockimage.php
<?php header("Content-type: image/png"); $width = 50; $height = 20; $img = imagecreate($width, $height); $string = date("H:i:s"); $tekstColor = imagecolorallocate($img, 0, 0, 0); $backgroundColor = imagecolorallocatealpha($img, 0,0,0, 127); imagefill($img, 0,0, $backgroundColor); imagestring($img, 2, 0,0, $string, $tekstColor); imagepng($img); imagedestroy($img); ?>
javascriptet
<script language="javascript" type="text/javascript"> teller = 1 function clock(){ clockElement = document.getElementById('clockimage'); clockElement.src = "clockimage.php?" +teller; clockElement.alt = ++teller; t = setTimeout('clock()', 1000); } </script>
så er det bare å lage en <img> tag med riktig id( i forrhold til getElementById() ) der du ønsker telleren
-
dette eksemplet burde sende deg på rett vei.
<html> <head> <?php $js_script = <<<EOF <script type="text/javascript"> function startTime() { var today=new Date() var h={h} var m={m} var s={s} // add a zero in front of numbers<10 m=checkTime(m) s=checkTime(s) document.getElementById('{element}').innerHTML=h+":"+m+":"+s t=setTimeout('startTime()',500) } function checkTime(i) { if (i<10) {i="0" + i} return i } </script> EOF; $js['h'] = date("h"); //Start time $js['m'] = date("i"); //Start minutt $js['s'] = date("s"); //start sekund $js['element'] = 'myclock'; //ID navn på tag til klokka foreach($js as $key => $val){ $js_script = str_replace('{'.$key.'}', $val, $js_script); } print($js_script); ?> </head> <body onload="startTime()"> <div id="myclock"> <!-- Her vises klokka --> </div> </body> </html>
Dettte er en klokka basert på en teller. hvor php skriver JS'en til kildekoden og endrer innholdet i variablene med date
-
er det nå jeg skal quote qutesene med mange quotes i for ser ut som det er om å gjøre å quote mest. WHY? må jo scrolle som en idiot for å komme meg helt ned. Ingen vits i å quote posten over deg. fjern i det minste all info du ikke svarer på!
eventuelt lagre allt i et array med id'n i db som index.
$resultat = mysql_query("SELECT tekst, pris, id FROM priser"); while($rad = mysql_fetch_array($resultat)) { $prod[$rad['id']] = array('tekst' => $rad['tekst'], 'pris'] => $rad['pris']); }
da kan du hente ut tekst slik:
echo $prod[1]['tekst']
som vil gi deg teksten fra produktet med id 1.
-
ereg() funksjonene er ikke annbefalt da perl regXPn er raskere. dvs preg funksjonene.
uansett
manualen er vår venn:
Perl regXP:
http://no.php.net/manual/en/reference.pcre...tern.syntax.php
Pattern modifiers (Som f.eks i en på eksemplet over som betyr case-insensitiv)
http://no.php.net/manual/en/reference.pcre...n.modifiers.php
RegXp er veldig "treg" måte å søke i en string på og burde utelukkende _kun_ benyttes når det er nødvendig, dvs avanserte søk som validering av e.post, om en streng har en viss struktur etc.
For sjekking om en variabel er en integer, en string eller om den består kun av bokstaver/tall samt enkel replace har vi egne funksjoner for.
-
finn denne linjen nesten nederst:
$antal = count($f);
og bytt ot med:
$antal = count($f)+44819;
-
last ned klassen min her:
http://norskwebforum.no/pastebin/2060
den kan med LETTHET mombinerers med scriptet til anners. Bare include() klassen min. Så bytter du ut move_uploaded_file med
move_resized::move
(la parantesene hans stå.)
Endre configen øverst i klassen min og sett $dir og $thumbs_dir til '' (så klassen ikke legger til subfolders)
Endre resten av config og du er i boks... move() funksjonen i klassen har nemlig akkurat samme parametere som move_uploaded_file() og gjør samme jobben,men pluss resizing, thumb_making og adding av logo (støtter ikke mere enn 8-bit PNG filer grunnet palettfeil i nåvernde GD version)
-
Manualen er ekstremt brukervenlig og du har litt basic innsikt i php.
Om du kan forskjellen på int/string/mixed og bool burde ikke dette by på noen problemer overhodet.
-
det du eventuelt kan gjøre er å lagre bildet fra db inn i en tempfil for så hente den ut med imagecreatefromJPEG/GIF/PNG
eventuelt som du nevnte resize før du lagrerbildet. (burde ikke by på store problemer)
-
timestamp i mySQL er UNIX_TIMESTAMP()
denne kan du bruke sammen med DATETIME kolonnen i mySQL
SELECT noe FROM tabell where UNIX_TIMESTAMP('2006-04-19') < UNIX_TIMESTAMP('upcomming_events');
dette burde fungere utmerket. om du vil trekke fra et vist antall dager kan det bli slik:
SELECT noe FROM tabell where UNIX_TIMESTAMP('2006-04-19') > UNIX_TIMESTAMP('news_written_time')-(60*60*24*10); --Dette vil hente ut alle "nyheter" som er nyere enn 10 dager
-
er ikke det fra haikerens guide til galaksen?
så vidt jeg vet er svaret: 42
google it ffs!
-
kan annbefale deg å ta en titt på min klasse for dette her:
http://norskwebforum.no/viewtopic.php?t=22753&start=0
(første post er min)
om du ønsker å lære dette har jeg skrevet en tutorial her:
Hvordan hente ut bare litt fra en .txt fil?
i Programmering og webutvikling
Skrevet
Som nevnt over er tekstfiler veldig tungvindt, og ofte helt unødvendig. Det du gjør ved å lagre info i txt filer er å finne opp hjulet på nytt. Du må selv lage deg funksjoner som lagrer, henter, oppdaterer og sletter data. Hvorfor gjøre allt dette om igjen når det finnes ferdige produkter som gjør jobben raskere, lettere og langt mere effektivt en noen av oss her på HW forumet noen gang kommer til å klare å lage?
Har du ikke tilgang til mySQL så finnes det da andre databasesystemer som er både raskere og noen ganger bedre.
husk at SQLite er inkludert i PHP5 og ikke spesielt vanskelig å bruke, er dessuten bevist raskere enn mySQL, men er jo ikke så avansert, fungerer derimot perfekt til slik lagring fu ønsker her.
I SQLite lagres infoen i .db filer på webhotellet ditt. Og støtter alminnelig SQL kode