Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Php server

Tråden skapades och har fått 30 svar. Det senaste inlägget skrevs .
  • Medlem
  • Luleå
  • 2013-03-05 11:18

Jag vill lära mig php. Jag förstår att jag behöver en server. På olika nätsajter o böcker finns tips om vilken server man ska ha. Det finns en i datorn, apache, och så finns till exempel mamp. Har ni några tips om vad jag ska ha? Jag är nybörjare så det får gärna vara enkelt att hålla på med.

/KOL

Mamp lär räcka bra. börja med det!

  • Medlem
  • Malmö
  • 2013-03-05 12:30

Jag har tidigare pillat en del med Apache och PHP så jag hade rekommenderat Apache. När du väl har servern installerad är det bara för dig att installera stödet för PHP.

A:et i MAMP står för just Apache. MAMP är bara en smidigt förpackad kombination utav Apache, PHP och MySQL, anpassat för Mac OS X. (LAMP kallas motsvarande kombination för Linux, WAMP för Windows, etc)

Det går att få igång PHP relativt enkelt med Apache-installationen som följer med OS X, men MAMP är ännu enklare.

  • Medlem
  • Luleå
  • 2013-03-05 14:05

Ok, tack!

  • Medlem
  • Luleå
  • 2013-03-20 23:48

Jag har fått problem. Jag skaffade MAMP och när jag klickar på "Open start page" får jag meddelandet att "If you can see this page, MAMP is installed "on your Mac and everything is working! Bra!
Jag har gjort övningarna på webbdesigna.se. Där står att när man skaffat sig en server och skriver http://localhost/ i webbläsaren, så ska något hända i denna. Men i min webbläsare, Safari, så står bara att "Safari kunde inte ansluta till servern".
Vidare: jag lägger mina filer i htdocs och tror att jag ska kunna kolla på dem genom att dubbelklicka på dem i finder. Funkar inte. Då kommer filerna upp i programmet Smultron, där jag kodat filerna.
Som sagt så har jag följt exemplena webbdesigna.se. När jag gjorde övningarna "bygga hemsida" så funkade allt oklanderligt. Jag inser själv att det jag nu försöker lära mig, php, är i den lite högre skolan. Hur får jag igång hemsidan när alla filerna ligger i MAMP-htdocs-filnamn? Jag gissar att jag startar MAMP, eller? Sen då?

Tacksam för svar som bara svarar på mina frågor, kommentarer undanbedes.

En URL av typen http://localhost består av två delar, en protokollanvisning "http" som säger på vilket sätt kommunikationen mellan webbläsare och server ska ske, samt ett dns-namn (eller ip-nummer) som talat om vilken maskin kommunikationen ska ske med. Vanligtvis följer också t.ex. Ett filnamn, t.ex. " index.html". De flesta servrar är förinställda att gå till en särskild startsida "index.html" om ett filnamn inte finns, men det gäller bara just startsida. Vill du titta på en egen sida du gjort så måste du ange filnamnet också, t.ex: "http://localhost/minegensida.html". En liten detalj till behöver du veta, och det är att dator i princip kan köra en himla massa webbservrar (och andra webbtjänster) och därför kan man också behöva ange ett portnummer direkt efter dns-namnet. Mamp har om jag inte minns fel port 8888 som standard, så en riktig adress till dina egna filer borde se ut ungefär så här "http://localhost:8888/minegensida.html"

När väl du skrivit rätt adress och slår retur i din webbläsare börjar kommunikationen med webbservrar och webbläsaren tolkar och visar upp det webbservern skickat.

Öppnar du en php-fil på något annat sätt, t.ex. genom att dubbelklicka kommer den, även om den skulle ha öppnats i webbläsaren, sakna information om http-protokollet (eller rättare sagt, tro att du vill använda ett lokalt file-protokoll), portnumner, sidans relativa placering på webbservern etc.

Med andra ord: för att betrakta en webbsida måste du öppna den på rätt sätt i en webbläsare. Inga andra metoder kommer att fungera.

Jag vill också ge dig tipset att du tidigt lär dig söka relevant information på nätet. Just när det gäller mamp finns det hur mycket som helst, och det är verkligen den lättaste biten, när du sen börjar koda så är det A och O att veta hur man hittar dokumentation.

Senast redigerat 2013-03-21 08:27
  • Medlem
  • Luleå
  • 2013-03-21 07:27

Ok, ska kolla. Tack
Lite svårt att veta vad som är relevant information om man aldrig hållt på med php förut;)

Just de problem du har beskrivit här har egentligen ingenting att göra med PHP, det har bara med själva webbservern och hur du ska komma åt den att göra.

Börja med att få en superenkel vanlig, statisk, html-sida att visas, innan du börjar fundera på att skapa sidorna dynamiskt med php.

  • Medlem
  • Luleå
  • 2013-03-21 08:52

Det var det jag gjorde. Jag gjorde övningen, byggde en hemsida, på webbdesigna.se. Under fliken php kunde man använda den hemsida man gjort och lägga till en meny. Sagt och gjort, jag följde det som stod. Jag har en Mac, övningarna var i windowsmiljö. Men jag tror jag ändå fick till det. Jag ska kolla upp lite mer om det du nämnde. Tack för tipsen.

  • Medlem
  • Luleå
  • 2013-03-22 07:00

Nu funkar det. Tänk vad lite tips kan göra susen. Tack Rickard och ni andra:)

  • Medlem
  • Luleå
  • 2013-05-20 00:00

Nu är jag på`t igen. Dax att lära sig MySQL och PHP. I e-kursen jag går använder man windows vista, XAMP Control panel och MySQL Qery Browser. Inte för att jag kan mycket om det här och rätta mig gärna om jag har fel men det känns lite gammalt. Jag tror att jag kan åstadkomma samma med MAMP och phpMyAdmin, som jag har nu. Rätt, fel?

Ursprungligen av KOL:

Nu är jag på`t igen. Dax att lära sig MySQL och PHP. I e-kursen jag går använder man windows vista, XAMP Control panel och MySQL Qery Browser. Inte för att jag kan mycket om det här och rätta mig gärna om jag har fel men det känns lite gammalt. Jag tror att jag kan åstadkomma samma med MAMP och phpMyAdmin, som jag har nu. Rätt, fel?

Rätt.

  • Medlem
  • Luleå
  • 2013-05-20 00:11

Tack ska du ha, då var det som jag trodde. Tycker du att MAMP är okej verktyg för att lära sig MySQL och PHP? Jag har hört talas om MySQL workbench men det känns lite för avancerat än så länge, eller?

Ursprungligen av KOL:

Tack ska du ha, då var det som jag trodde. Tycker du att MAMP är okej verktyg för att lära sig MySQL och PHP? Jag har hört talas om MySQL workbench men det känns lite för avancerat än så länge, eller?

Workbench kan du använda istället för phpMyAdmin.
Det är en klient och inte något webbgränssnitt som phpMyAdmin är.

  • Medlem
  • Luleå
  • 2013-05-20 10:30

Okej!
Nu har jag kommit igång med kursen. Jag kör alltså i phpAdmin och kursen är i XAMP Control panel och MySQL Qery Browser. Inget är likadant och jag få helt enkelt försöka köra med learning-by-doing och hänga med så gott det går. Det går ganska bra. Vi har gjort två tabeller. Det handlar om Hundar och hussar i en bostadsrättsförening. Alltså två tabeller.
Jag har stött på problem. Jag håller på att försöka skapa en relation mellan de två tabellerna. Redan när jag klickar på "visa relationer" så står det högst upp "Begränsning av främmande nyckel (INNODB)", när jag sedan går vidare, skapar relationen mellan husseid och hundid och klickar spara, så står det högst upp
"Fel vid skapande av främmande nyckel för HundID (kontrollera datatyper)"

Var har jag gjort fel?

Ursprungligen av KOL:

Okej!
Nu har jag kommit igång med kursen. Jag kör alltså i phpAdmin och kursen är i XAMP Control panel och MySQL Qery Browser. Inget är likadant och jag få helt enkelt försöka köra med learning-by-doing och hänga med så gott det går. Det går ganska bra. Vi har gjort två tabeller. Det handlar om Hundar och hussar i en bostadsrättsförening. Alltså två tabeller.
Jag har stött på problem. Jag håller på att försöka skapa en relation mellan de två tabellerna. Redan när jag klickar på "visa relationer" så står det högst upp "Begränsning av främmande nyckel (INNODB)", när jag sedan går vidare, skapar relationen mellan husseid och hundid och klickar spara, så står det högst upp
"Fel vid skapande av främmande nyckel för HundID (kontrollera datatyper)"

Var har jag gjort fel?

Har fälten samma datatyp? Kan du köra följande kommandon och klistra in resultatet här?

DESCRIBE tableA;
DESCRIBE tableB;
  • Medlem
  • Luleå
  • 2013-05-20 16:29

Eh, okej....nu använder jag ju phpMyAdmin. Det är ju som sagt ett gränssnitt. Jag är ju nybörjare och vet liksom inte var jag skulle skriva in kommandona du nämnde.
Men din fråga: har fälten samma datatyp? Frågan är vilka fält? Jag är högst osäker på fälten med Standardvärde, Kollationering, Attribut, Null, Index och A_I.
Fälten med Namn, Typ, Längd/Värden har jag kopierat från lektionen på e-kursen. Det enda som skiljer sig är att i MAMP finns typen int, och i kursens MySQL Qery Browser, heter det INTEGER. Eller hur är dessa två samma?

Ursprungligen av KOL:

Eh, okej....nu använder jag ju phpMyAdmin. Det är ju som sagt ett gränssnitt. Jag är ju nybörjare och vet liksom inte var jag skulle skriva in kommandona du nämnde.
Men din fråga: har fälten samma datatyp? Frågan är vilka fält? Jag är högst osäker på fälten med Standardvärde, Kollationering, Attribut, Null, Index och A_I.
Fälten med Namn, Typ, Längd/Värden har jag kopierat från lektionen på e-kursen. Det enda som skiljer sig är att i MAMP finns typen int, och i kursens MySQL Qery Browser, heter det INTEGER. Eller hur är dessa två samma?

Du kan skriva in egna kommandon i SQL-fliken (se demositen), men eftersom att du behöver kopiera resultatet som text är det antagligen lättare att bara ansluta via terminalklienten. Det viktiga är att vi på något sätt får reda på hur du har deklarerat dina tabellers fält och index.

Gissningsvis har du ett fält liknande Husse.HusseID INTEGER för att identifiera hundarnas ägare, och ett fält liknande Hund.HusseID INTEGER som du vill koppla samman. Ditt problem kan uppstå om fälten är av olika typ eller storlek, exempelvis INTEGER och TINYINT, eller om det ena fältet är UNSIGNED medans det andra inte är det.

INTEGER är ett alias för INT: 11.1.1. Numeric Type Overview

Exempel på DESCRIBE:

mysql> DESCRIBE Husse;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| HusseID | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| Namn    | varchar(255)     | NO   |     | NULL    |                |
+---------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> DESCRIBE Hund;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| HundID  | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| HusseID | int(10) unsigned | NO   | MUL | NULL    |                |
| Namn    | varchar(255)     | YES  |     | NULL    |                |
+---------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

SHOW CREATE TABLE är också användbart för att visa andra hur dina tabeller ser ut.

Senast redigerat 2013-05-20 19:24
  • Medlem
  • Luleå
  • 2013-05-20 18:41

Wow, mycket info där. Ska försöka reda ut begreppen. Återkommer. Tack så väldigt så länge:)

  • Medlem
  • Luleå
  • 2013-05-20 23:29

Luftvargen, du ska ha stort tack. Det där var nyttig information som gjorde susen. Nu till nästa nybörjarfrågor:
Jag har två tabeller, hundar och hussar. Var matar jag in deras namn och så vidare? I phpMyAdmin?
I kursen klickar läraren(i MySQL Qery Browser) på "open script" och en fil som heter "skapa data till hundar och hussar". Där har läraren redan skrivit in alla hussars och hundars namn och så vidare. Men var ska jag göra det?
Sen bläddrar han från detta scriptfönster till ett resultatfönster där namnen står ännu tydligare. Var kan jag se sådant i phpMyAdmin?

Eller måste jag kanske ha nåt annat program för att se informationen jag funderar över ovan?

Ursprungligen av KOL:

Luftvargen, du ska ha stort tack. Det där var nyttig information som gjorde susen. Nu till nästa nybörjarfrågor:
Jag har två tabeller, hundar och hussar. Var matar jag in deras namn och så vidare? I phpMyAdmin?
I kursen klickar läraren(i MySQL Qery Browser) på "open script" och en fil som heter "skapa data till hundar och hussar". Där har läraren redan skrivit in alla hussars och hundars namn och så vidare. Men var ska jag göra det?
Sen bläddrar han från detta scriptfönster till ett resultatfönster där namnen står ännu tydligare. Var kan jag se sådant i phpMyAdmin?

Eller måste jag kanske ha nåt annat program för att se informationen jag funderar över ovan?

Antar att det är en .sql-fil? Rekommenderar att du börjar med att öppna den i valfri texteditor för att få en känsla för vad den innehåller och vad resultatet av den bör bli. I #phpMyAdmin bör du sedan kunna öppna den via Import-fliken och bläddra genom raderna genom att markera tabellerna i sidospalten.

  • Medlem
  • Luleå
  • 2013-05-21 00:18

Ja, det där skulle kunna fungera om hundtabellen jag gjort hade litet h. Nu har den stort H. Jag försöker döpa om den under operationer och då kommer det en text om att det redan finns en tabell som heter hundar. Det fanns en sådan tabell och jag tog bort den. Startade sedan om MAMP, men det fungerar ändå inte. Det dyker ännu en gång upp en text som säger att det redan finns en tabell som heter hundar.
Hm, vad gör jag nu?

  • Medlem
  • Luleå
  • 2013-05-21 00:18

Luftvargen, jag uppskattar verkligen din hjälp.

Ursprungligen av KOL:

Ja, det där skulle kunna fungera om hundtabellen jag gjort hade litet h. Nu har den stort H. Jag försöker döpa om den under operationer och då kommer det en text om att det redan finns en tabell som heter hundar. Det fanns en sådan tabell och jag tog bort den. Startade sedan om MAMP, men det fungerar ändå inte. Det dyker ännu en gång upp en text som säger att det redan finns en tabell som heter hundar.
Hm, vad gör jag nu?

Du ska inte behöva starta om MAMP för att ta bort en tabell, men om phpMyAdmin av någon anledning misslyckas så prova via terminalen. Kommandot är DROP TABLE databasnamn.hundar;. Efter det bör du antingen ha fått ett felmeddelande, eller kunna skapa en ny tabell.

  • Medlem
  • Luleå
  • 2013-05-21 09:42

DROP: Command not found.

Jag har inte hållit på alls med terminalen, men jag anar att det inte räcker med att jag bara startar terminalen och kopierar in kommandot DROP TABLE databasnamn.hundar;. Eller hur? Nu håller jag på att göra om båda tabellerna en tredje gång. Något bra ger det säkert att behöva nöta om allt det här ytterligare en gång.
Tack än en gång.

Du måste köra mysql först, sen kan du använda mysql-kommandona.

  • Medlem
  • Luleå
  • 2013-05-21 10:43

Eh, nu ska vi se här. Jag klickar nere i Dock på terminal. Då dyker fönstret upp. Hur skriver jag sen?

Det här med importera filen gick inte så bra. Jag stöter på det ena problemet efter det andra. Jag anar att konsekvens är temat. Man bör ha koll på stora och små bokstäver, eller hur? Det verkar inte läraren ha haft. När han skapade tabellerna skrev han, Hundnamn, Ras, Vikt...... och så vidare. I filen som jag ska importera, är dessa ord istället hundnamn, ras, vikt.

Så här ser .sql-filen ut

use KDkurs1;

delete from hundar; -- hundarna måste bort först
delete from hussar;

INSERT INTO `hussar` VALUES (1,'Bengt','Byvägen 1','78-08-11'); -- (husseId, hussenamn,adress,Fodelsedatum)
INSERT INTO `hussar` VALUES (2,'Nils','Rågstigen 2','82-08-11');
INSERT INTO `hussar` VALUES (3,'Stina','Rågstigen 2','78-11-11');
INSERT INTO `hussar` VALUES (4,'Olof','Rågstigen 4','78-09-21');
INSERT INTO `hussar` VALUES (5,'Lisa','Rågstigen 4','88-08-11');

INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Rex','Tax', 1,10);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Karo','Pudel',2,12);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Fido','Pudel',2,15);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Plutten','Tax', 4,3);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Fiffi','Tax', 2,19);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Viff','Pekines',2,4);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Plutt','Pudel',4,5);
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Vimsan','Tax', 4,20);

och så här ser meddelandet ut när jag har försökt importera.

Fel
SQL-fråga:

INSERT INTO `hussar`
VALUES ( 1, 'Bengt', 'Byvägen 1', '78-08-11' ) ;

MySQL sa:

#1452 - Cannot add or update a child row: a foreign key constraint fails (`KDkurs1`.`hussar`, CONSTRAINT `hussar_ibfk_1` FOREIGN KEY (`husseId`) REFERENCES `hundar` (`hundid`) ON UPDATE CASCADE)

Men jag undrar ju dessutom hur jag skulle ha matat in hundägarna och all annan info om jag inte haft sql-filen. Jag menar, kan jag inte mata in informationen manuellt. Jag kanske måste lägga till en hundägare någonstans.

@KOL:

Citat:

Eh, nu ska vi se här. Jag klickar nere i Dock på terminal. Då dyker fönstret upp. Hur skriver jag sen?

Om MAMP har lagt till mysql i path ska det räcka att skriva mysql, annars borde den ligga i /Applications/MAMP/Library/bin/mysql. Använd växlarna -u och -p för användarnamn och lösenord.

Citat:

INSERT INTO `hussar` VALUES (1,'Bengt','Byvägen 1','78-08-11'); -- (husseId, hussenamn,adress,Fodelsedatum)
INSERT INTO `hundar` (hundnamn,ras,husseId,vikt) VALUES ('Rex','Tax', 1,10);

[...]

#1452 - Cannot add or update a child row: a foreign key constraint fails (`KDkurs1`.`hussar`, CONSTRAINT `hussar_ibfk_1` FOREIGN KEY (`husseId`) REFERENCES `hundar` (`hundid`) ON UPDATE CASCADE)

Kontrollera att du har skapat din FK på rätt tabell och fält. Nu ser det ut som om Hussar.HusseID pekar på Hundar.HundID, och då måste det finnas en hund med samma ID som en husse för att raden ska kunna sparas. Nyckeln borde vara från Hund.HusseID till Husse.HusseId.

Citat:

Men jag undrar ju dessutom hur jag skulle ha matat in hundägarna och all annan info om jag inte haft sql-filen. Jag menar, kan jag inte mata in informationen manuellt. Jag kanske måste lägga till en hundägare någonstans.

För att mata in data manuellt använder du samma kommandon som i filen ovan: INSERT. I praktiken kommer du sällan göra det själv. Du kommer dock behöva en förståelse av SQL för att skriva program som använder sig av databasen, så jag rekommenderar att du lär dig det direkt.

Du kan dock infoga flera rader med samma kommando, det går att göra så av flera orsaker, men en bieffekt är att det blir mindre att skriva:

INSERT INTO
	`hundar`
	(hundnamn,ras,husseId,vikt)
VALUES
	('Rex','Tax', 1,10),
	('Karo','Pudel',2,12),
	('Fido','Pudel',2,15),
	('Plutten','Tax', 4,3),
	('Fiffi','Tax', 2,19),
	('Viff','Pekines',2,4),
	('Plutt','Pudel',4,5),
	('Vimsan','Tax', 4,20);
  • Medlem
  • Luleå
  • 2013-05-21 13:27

Luftvargen, jag är oerhört tacksam för din hjälp. Tack

Bevaka tråden