- grenhall
- Medlem ●
- Lund
"Kontrollera vilken teckentabell du sparar filen med i Smultron. Använder du UTF-8 ska det inte finnas något Byte Order Mark. Har du aktiverat utskrift av felmeddelanden?"
Det verkar vara UTF-8. Men var aktiverar jag "utskrift av felmeddelanden" i Smultron?
För exempel på vart PHP används så är 99.se programmerat i det, frontend-delen av Facebook, Wordpress (både wordpress.com och alla egeninstallerade wordpress-bloggar), frontend-delen av Tumblr, majoriteten utav alla webbforum och Wikipedia.
Ofta syns det inte i URL:en att sajten kör PHP (filändelsen .php saknas), för det går att dölja, och det går att få samma PHP-fil att utåt verka som flera URL:er. T ex så går alla forumtrådar här på 99.se genom samma fil, och URL:en avgör vilken tråd som hämtas från databasen. (siffrorna efter /forum/t/ är tråd-ID:t)
Dock är hemsidorna för banker, myndigheter och liknande förmodligen inte kodat i PHP, då "enterprise-världen" sällan använder Open Source för det. Mer troligt är Java och .NET (C#).
När man kommer lite längre i programmerandet så börjar man separera dom olika funktionerna mer, och då blir det oftast en minoritet utav filerna som innehåller HTML över huvud taget. Att separera delarna gör koden väldigt mycket lättare att följa, debugga och återanvända. T ex så går Richards kod från tidigare att dela upp så här:
<?php if($price > 4) $header_class = 'large'; elseif($price == 4) $header_class = 'medium'; else $header_class = 'small'; ?> <h1 class="<?php echo $header_class; ?>"><?php echo $price; ?></h1>
I så här enkla exempel så spelar det inte så stor roll, men man når rätt fort en nivå då det lönar sig att tänka på det.
Fortfarande lite fundersam över hur och var php används så undrar jag ju lite smått varför inte php-koden syns när man kollar olika siter med webbgranskaren i safari? Eller det kanske man gör? Var? Inte <?php...........?> i alla fall.
Poängen med php-kod är att generera html-kod. Det görs på servern när du anropar en site skriven i php, så det som skickas till din webbläsare (och därmed det enda du kan se där) är bara den genererade html-koden, inte php-koden. Av samma skäl funkar det inte att öppna en php-fil direkt i en webbläsare för att se resultatet; det krävs en webbserver som kör koden och genererar html-dokumentet.
Jag har nu kommit till chapter8, "Introduction to MySQL". Där ska man använda terminal. Det har jag aldrig gjort innan och nu har jag ett stort problem. Det är rätt invecklade grejer det här.
Jag får meddelandet
ERROR 1227 (42000): Access denied;
Jag har försökt kolla upp det och förstår att jag måste skapa mig en "new user within the MySQL shell". Är jag på rätt spår?
Jag har försökt
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';, där newuser=root och password=root, för det är så det står när jag startar MAMP. Det är här jag får ERROR 1227 (42000): Access denied; och jag tror det är för att jag inte står i shell utan i mysql och då funkar det inte. Eller hur?
När jag startat terminal har jag lyckats ta mig till mysql genom att skriva
/Applications/MAMP/Library/bin/mysql
Men hur kommer jag till shell när jag startat terminal?
PS: jag är oerhört tacksam för er hjälp och tycker att ni förtjänar ett nobelpris var och en.
Jag inser att jag inte har tillgång till att skapa databaser via terminal(men det går utmärkt via phpMyadmin). Jag tror att jag i terminal måste få rättigheter så att jag kan skapa databaser, eller hur?
När jag startat terminal kommer jag till, typ,
[Macintosh:~] kalleanka%
Jag såg det här nedan och trodde jag var på rätt väg. Men hur får man det att stå shell> i terminal?
"
First, use the mysql program to connect to the server as the MySQL root user:
shell> mysql --user=root mysql"
sen ska man skriva följande kommando:
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
-> WITH GRANT OPTION;
Men, sen då? Är det nu jag kan skriva in CREATE DATABASES dbnamn;?
KOL du verkar va uppstressad som en äggsjuk höna och ska lära dig allt samtidigt, blir bara soppa av allt känns det som.
Är det inte bättre att hitta en lämplig kurs och gå från A till Ö lugn och ro och lära sig klientsidan ordentligt först, dvs HTML, CSS & eventuellt lite javascript.
Tack för den insikten snigel1. Jag tycker jag har de kunskaper om html och css som verkar krävas(gjort fem hemsidor, dock bara med html och css) och sen var nästa steg javascript, php och mySQL. Sagt och gjort, jag köpte boken som vi nämnt(O'reilly-litteratur) och resten har du förmodligen läst om här på forumet. Att jag startade e-kursen var för att jag fick möjlighet till det och för att jag kände att den kunde komplettera boken. E-kursen tog inte upp terminal, utan körde med program som fanns på den tiden då ursen gjordes, 2006. Boken kör med modernare program och terminal. Det blev lite rörigt och för någon som aldrig grejat med php och mySQL så är det ett ganska stort område och ja, jag uppfattas säkert som stressad. Jag fastnar ju liksom hela tiden.
Jag hade tänkt lära mig php och mySQL och bygga upp ett par databaser som jag kan använda på ett par hemsidor. Inget avancerat.
Givetvis så vill jag i slutändan kunna skriva i mitt CV att jag har kunskaper och erfarenheter i php och mySQL.
Jag inser att jag inte har tillgång till att skapa databaser via terminal(men det går utmärkt via phpMyadmin). Jag tror att jag i terminal måste få rättigheter så att jag kan skapa databaser, eller hur?
När jag startat terminal kommer jag till, typ,
[Macintosh:~] kalleanka%
Jag såg det här nedan och trodde jag var på rätt väg. Men hur får man det att stå shell> i terminal?
"
First, use the mysql program to connect to the server as the MySQL root user:
shell> mysql --user=root mysql"
sen ska man skriva följande kommando:
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
-> WITH GRANT OPTION;
Men, sen då? Är det nu jag kan skriva in CREATE DATABASES dbnamn;?
Förenklat kan man säga att shell> är bara ett sätt för författarna att skriva att du är i Terminalen. De behöver ett sätt att särskilja att du är inne i Mysql-programmet (som då representeras av mysql>) och din kommandotolk (som representeras av shell>). Tycker du att det blir enklare om det står shell> innan? Då kan man lösa det genom att köra
export PS1="shell> "
i Terminalen.
Jag vet inte vilken dokumentation du tittar i, men på MySQLs sida har de en Tutorial för att man ska kunna komma igång. De går igenom hur man ansluter, skriver in kommandon och skapar databaser.
Suddgummi, tack där. Det får stå precis vad som helst, bara det funkar.
Det är denna sajt jag har försökt förstå och köra efter
http://dev.mysql.com/doc/refman/5.1/en/adding...
1. Jag startar terminal och det står, typ, [Macintosh:~] kalleanka%
2. jag skriver in så att det blir, [Macintosh:~] kalleanka% mysql --user=root mysql
3. "mysql: Command not found."
4. Jag skriver så att det blir [Macintosh:~] kalleanka% /Applications/MAMP/Library/bin/mysql
5. Det står mysql>
6. Jag avslutar terminal och startar igen.
7. Jag skriver in så att det står [Macintosh:~] kalleanka% export PS1="shell> "
8. "export: Command not found."
Vad göra?
Innan boken tyckte man skulle vara inne o greja i terminal borde man kanske ha en länk som visar hur terminal fungerar:).
27sidor i boken täcker MySQLhantering via "the command-line interface". Man bygger två databaser och går igenom olika commandon. Sen ska man jobba vidare med dessa databaser i phpMyAdmin och i terminal.
Just nu står det stilla, jag kan alltså inte göra migsjälv till, jag tror det heter, "superuser" i terminal och kan alltså inte skapa några databaser. Men skam den som ger sig. Ensamseglare mitt ute på Atlanten kan ju inte bara ge upp och lägga ner, de måste ju ta sig till land på nåt sätt.:)
kenjon, jag bytte plats på 2 o 4
1. Jag startar terminal och det står, typ, [Macintosh:~] kalleanka%
2. Jag skriver så att det blir [Macintosh:~] kalleanka% /Applications/MAMP/Library/bin/mysql
3. Det står
"Welcome to the MySQL monitor. blablablabal.....
4. Nu klistrar jag in så att det står, mysql> mysql --user=root mysql
5. Det står ->
6. I min bok så står det att -> betyder "Waiting for the next line of a command".
Vad ska jag skriva?
kenjon, jag bytte plats på 2 o 4
1. Jag startar terminal och det står, typ, [Macintosh:~] kalleanka%
2. Jag skriver så att det blir [Macintosh:~] kalleanka% /Applications/MAMP/Library/bin/mysql
3. Det står
"Welcome to the MySQL monitor. blablablabal.....
4. Nu klistrar jag in så att det står, mysql> mysql --user=root mysql
5. Det står ->
6. I min bok så står det att -> betyder "Waiting for the next line of a command".
Vad ska jag skriva?
Du ska starta mysql med användaren root, eller hur?
Se det som såhär: mysql är filen du ska köra, vet inte Terminalen vart den ska hitta den får man peka på hela sökvägen så som du gör när du matar in hela /Applications/MAMP/Library/bin/mysql.
Om du då startar mysql med argumenten -u root -p talar du om för mysql att du vill logga in som root och bli ombedd att mata in ett lösenord.
I Terminalen kör du då
/Applications/MAMP/Library/bin/mysql -u root -p
Du bör då bli ombedd att mata in ett lösenord, som i MAMP är root om jag inte minns helt fel.
Jag känner det som ett mer grundläggande behov för dig kanske är en introduktion i hur man använder Terminalen? Det finns en UNIX / Linux tutorial här: http://www.ee.surrey.ac.uk/Teaching/Unix/
Ignorera hur de startar sin Terminal, det viktiga är att lära sig lite hur man kör kommandon och hur man navigerar i filsystemet. Eftersom grunden i Mac OS X är en UNIX-variant så är grunderna lika.
Edit:
Du verkar köra tcsh som skal (vilken OS X version har du?) och då skriver man in:
set prompt = "shell> "
som kommando om man vill ha en annan prompt (det där som står innan man matar in kommandon). Men det är som sagt frivilligt.
suddgummi, jag vet inte hur jag ska kunna tacka dig. Det här funkade! Tack för hjälpen. Jag håller med dig och jag ska absolut läsa länken. Tack igen!
Jag skulle vilja rekommendera http://www.webdesignskolan.se. Här existerar det väldigt fina guider för oss som är nybörjare med php och mysql. Dock är det en årsavgift. Men guiderna är helt suveräna att använda och följa. Har liksom du "KOL" ett eget intresse att lära mig php och mysql. Har gjort en egen enkel databas för alla Rakt Över Disc sändningar mellan åren 1979-1992.
Nu har jag kommit till chatper 10, "Accessing MySQL Using PHP". Stort tack till den som orkar hjälpa mig.
Jag tror problemet ligger i att jag lyckas inte skapa kontakt mellan php och mysql, trots att det är precis så här boken tycker att man ska göra.
De vill först att man ska skapa en egen login-fil till MySQL, "login.php". Den ska se ut så här
<?php //login.php
$db_hostname = 'localhost';
$db_database = 'databas';
$db_username = 'username';
$db_password = 'password';
?>
Jag tror detta ska vara en separat fil som inte innehåller något annat än det ovan. Har jag rätt?
När jag skriver denna kod i netbeans, så står det en liten triangel före varje rad. När jag kollar vad det handlar om står det att "Variabel $db_hostname seems to be unused in its scope" och så alltså vidare även för databas, username och password.
Vad är felet?
Nästa fråga gäller de nästkommande stegen för att fråga en databas och få svaren. Följande kod för att visa innehållet i tabellen countries som jag gjorde i MySQL-kabpitlet. I en ny fil som heter hejhej.php.
<?php
recuire_once('login.php');
$db_server = mysql_connect($db_hostname, $db_username, $_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
$query = "SELECT * FROM countries"; //tabellen i databasen heter countries
$result = mysql_query($query);
if (!result) die ("Database acces failed: " . mysql_error());
$rows = mysql_num_rows($result);
for ($j = 0 ; $j < $rows ; ++$j)
{
echo 'cities: ' . mysql_result($result,$j,'cities') . '<br />';
echo 'population: ' . mysql_result($result,$j,'population') . '<br />';
echo 'continent: ' . mysql_result($result,$j,'continent') . '<br />';
echo 'mustsee: ' . mysql_result($result,$j,'mustsee') . '<br />';
echo 'skala: ' . mysql_result($result,$j,'skala') . '<br /><br />';
}
?>
En triangel framför raden
$db_server = mysql_connect($db_hostname, $db_username, $_password);
Förklaringen från netbeans är "variabel $db_hostname seems to be uninitialized" och så vidare för varje variabel.
Triangel framför raden
mysql_select_db($db_database)
Förklaringen från netbeans är samma som för variablerna ovan. Sen står det "Surround with....-----"
Sist men inte minst triangel och liten lampa framför raden
$result = mysql_query($query);
Förklaringen från netbeans är "Variabel $result seems to be unused in its scope"
"Surround with ... --"
När jag vill se filen i en browser blir sidan helt vit. Vet någon vad felet kan vara?
$db_database = 'databas';
$db_username = 'username';
$db_password = 'password';
Till att börja med så måste du byta ut 'databas', 'username' och 'password' mot de riktiga värdena - dvs namnet på din databas, inloggningsnamnet och lösenordet till databasen.
Andra raden ska vara require_once, inte recuire_once.
Sen kan det vara värt att se till att error-loggning är på i php och kolla error-loggen för din webbserver när du stöter på problem.
Oj, den koden är verkligen gammaldags skriven. Lite mer up-to-date hade den sett ut så här:
<?php $db = new PDO("mysql:host={$db_hostname};dbname={$db_database}", $db_username, $db_password); $countries = $db->query('SELECT * FROM countries'); ?> <?php foreach($countries as $country): ?> cities: <?= $country['cities']; ?><br/> population: <?= $country['population']; ?><br/> continent: <?= $country['continent']; ?><br/> mustsee: <?= $country['mustsee']; ?><br/> skala: <?= $country['skala']; ?><br/> <?php endforeach; ?>