31. oktober 2005 - 19:59Der er
21 kommentarer og 1 løsning
Oprette ting i databaser + filer på hjemmesiden med php
Hej. Jeg har et, for mig, meget svært spørgsmål.
Jeg er igang med at lave et system, hvor dem der besøger hjemmesiden kan gå ind på et specifik grafikkort, og så skrive deres erfaringer med det grafikkort, og hvor meget de har fået i 3dMark01 og 03. Så skal systemet så selv regne gennemsnittet ud osv.
Det fungerer alt sammen, men nu er jeg stødt på et større problem.
Jeg skal have gjort sådan at ham som er admin på hjemmesiden skal kunne gå ind og oprette et nyt grafikkort til listen. Så hvis han nu synes at Geforce xx grafikkortet mangler at stå på listen, så folk også kan gå ind på det grafikkort og skrive deres erfaringer med det kort, så skal han kunne gøre det fra hjemmesiden.
Det betyder at jeg skal bruge et system som når admin skriver på hjemmesiden "Geforce xx" som er navnet på det grafikkort han vil oprette, så skal der blive lavet en ny tabel i databasen, som hedder det som grafikkortet hedder. Udover det skal der blive oprettet 3 php filer på hjemmesiden, som hedder xxx_navnet på grafikkortet.php.
Det lyder meget avanceret, men håber der er nogen som kan hjælpe?
forstår ikke din idé i at den skal lave 3 PHP filer, hvorfor laver du ikke bare en fil som standard, der "getter" $_GET['id'] og henter den ud fra databasen med navn og det hele?
coldgate's løsning med en dynamisk løsning vil klart være at foretrække! F.eks. kunne du have en grafik_kort_tabel. Den kunne indeholde: id, navn, specs, fabrikat, og meget mere...
Så opretter du en kommentar tabel: grafik_kort_kommentar id, grafik_kort_id, kommentar, evt bruger og meget mere...
Så har du det så dynamisk du overhovedet kan ønske dig.
Coldgate: Hvis man kan holde det på 1 fil, ville det jo klart være at foretrække. Jeg er bare ikke særlig god til PHP, så derfor ved jeg ikke hvordan sådan noget skal laves.
Ja, jeg kan godt finde ud af at oprette tabel i databasen, indsætte data fra en hjemmeside, trække ud af databasen og connecte til en database. Alt det har jeg styr på.
Det der skal gemmes i databasen er følgende: CREATE TABLE `HER**` ( `id` int(11) NOT NULL auto_increment, `dato` date NOT NULL default '0000-00-00', `navn` varchar(100) NOT NULL default '', `mail` varchar(100) NOT NULL default '', `resultat` varchar(100) NOT NULL default '', `billede` varchar(100) NOT NULL default '', `resultat2` varchar(100) NOT NULL default '', `billede2` varchar(100) NOT NULL default '', `kommentar` text NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=2 ;
HER** = Her skal der stå det navn som admin skriver på siden at grafikkortet hedder, fx Geforce XX
Så er tabellen lavet. Det der nu skal oprettes er følgende:
Så skal den lave en php fil hvor der skal være følgende i:
Jeg ser ingen grund til at oprette en tabel til et grafikkort. Hvorfor ikke lave en tabel som indeholder samtlige grafikkort? Og så lave en tabel med billeder, som f.eks. kan "forbindes" til et grafikkort via grafikkortets unikke id? Og lige en kommentar/test/3dmark tabel, som kobles til grafikkortet via unikt id?
Der findes sikkert også smartere måder at lave det på, end jeg har skrevet, men da jeg ikke er så helt vild til php, så er jeg kommet op med den klodsede måde. Men jeg kan jo prøve at forklare hvad systemet skal kunne:
Jeg har lavet et system nu, hvor der er 1 grafikkort ind i systemet. Så kan man gå derind og så kan man skrive sin kommentar og test resultater, eget navn osv osv derind, så andre folk kan gå ind og se hvor godt / dårligt grafikkortet er. Lidt ligesom en gæstebog.
Det jeg skal bruge nu er at det skal være sådan at når admin går ind og skriver et nyt grafikkort ind, så kommer den til at stå sammen med de andre på en liste, hvor ham som besøger hjemmesiden så kan gå ind og klikke på det grafikkort som han vil ind og læse om. Og så skal han også kunne bedømme osv derinde.
Det er det med at man skal som admin kunne oprette et nyt grafikkort, og så skal den helt automatisk gøre så man kan skrive specifikt inde i det grafikkort.
Det gøres bedst ved at have en tabel som har alle grafikkortene i den... På hovedsiden har du så en SQL ala: SELECT * FROM grafikkort_tabel ORDER BY name Så vil den liste alle grafikkort. (putter du et nyt grafikkort i den tabel, så vil den automatisk vises når siden vises) Og det med at lave kommentarer og tests ville jeg også lave i hver sin tabel.
Ok, så hvis vi nu siger at jeg gør sådan at alle grafikkort er i samme tabel. Så kan jeg også finde ud af at gøre så den kan oprette et nyt grafikkort til listen. Så er det bare funktionerne der skal på plads.
Jeg kan også godt finde ud af at få gjort sådan at når admin skriver "Geforce XX" som grafikkortets navn, så bliver der i grafikkort tabelen oprettet Geforce XX, og i kommentar og test tabellerne, bliver der også oprettet et geforce xx, på én og samme tid. Så skal jeg bare have hjælp til hvordan man fra hjemmesiden så henter de 3 funktioner ned i php filen.
Hvordan gør man så den ved at det er i netop geforce xx i tabellen "kommentarer" at den skal smide de kommentarer der bliver skrevet under geforce xx på hjemmesiden? Her har jeg brug for godt med hjælp, for det er netop her jeg har store problemer.
Du skal ikke oprette noget i kommentarer og test tabeller når du opretter grafikortet i grafikkort-tabellen.
Der skal først noget i de tabeller, når en bruger laver en kommentar eller tilføjer et test resultat. Du kunne f.eks. lave følgende: grafikkort.php?id=27 <-- 27 er vores unikke nummer på GeForce XX
På siden grafikkort.php laver du: $unik_id = (int)mysql_real_escape_string($_GET["id"]); $query = mysql_query("SELECT * FROM grafikkort WHERE id = ".$unik_id." LIMIT 1"); //Her skal vi tjekke om vi får noget ud eller ej...
//Så skal vi printe en kommentar box. //Her kan du lave tricket: <input type="hidden" name="grafikkort_id" value="$unik_id"> //Her skal du submitknap og selvfølgelig alle de andre felter, navn, kommentar osv...
Når denne side så submittes, har du grafikkortets id: 27 Og på den side hvor du så smider data i tabellen: kommentar bliver input sådan: tabel_kommentar id = 1 (auto_increment) grafikkort = 27 navn = exp kommentar = Det er en superfedt kort, blablabla... og evt flere felter.
Når du så skal lave et udtræk med kommentarer til kort nummer 27, så laver du: SELECT * FROM kommentar WHERE grafikkort = 27
Umiddelbart ser det der ud til at være løsningen :) Dog kan jeg se at der er nogle få ting jeg har brug for hjælp til endnu, men det er ikke særlig store ting :) I aften vil jeg prøve at lave systemet, og så skriver jeg. Indtil videre mange tak :)
Skriver igen med de sidste små ting når jeg har fået sat det du har skrevet til mig op :)
Et par spørgsmål: 1: Kan man ikke bare bruge den almindelige ID istedet for at lave sit eget? Er det ikke samme princip?
2: Jeg mangler stadig koden til at admin kan oprette gå ind på en side og så skrive i textarea i formen, og så når han skriver Geforce xx, så kommer den til at stå på listen over grafikkorts på hjemmesiden, og så kan personerne der besøger hjemmesiden gå ind på det nye grafikkort og skrive kommentarer til det grafikkort.
Jeg er virkelig "lost" lige nu. Synes slet ikke jeg kan se nogen smarte måder. Ved at der skal bruges "ID", men ved ikke hvordan det skal bruges.
Please prøv at komme med koden til hvordan dette gøres, og så gerne forklar på virkelig newbie plan :( :)
1: Hvad mener du med almindelige id? 2: Du skal lave en form som kan indsætte data i din database. Prøv evt at fang mig på msn: jakobdo (at) hotmail (com)
Jeg har allerede et felt i min database / tabel, som hedder ID. Den giver så helt af sig selv ID til det nye der bliver indsat i databasen. Kan man ikke bruge den ID?
Jeg kan sagtens finde ud af det med formane osv osv. Det jeg ikke kan finde ud af, er det med PHP koden, som skal få den til at indtaste dataen i netop det grafikkort, når man går under det grafikkort. Altså det med at når der bliver oprettet et nyt grafikkort, så skal de kommentarer som bliver skrevet inde under den side, blive vist under det grafikkort, og ikke under alle de andre. Altså hvordan man får det delt op på den måde med PHP.
Hvis du indsætter noget i databasen, og det så før et unikt ID der, så kan vi sagtens bruge det ja!
Det med at gemme en kommentar under et bestemt grafik kort, kunne du f.eks. gøre på denne måde:
du laver en side, som trækker alle grafikkort ud, hvor du linker til dem med: grafikkort.php?id=(deres unikke ID som kommer fra DB) på siden grafikkort.php tager du så: $_GET['id'] og putter i en felt af typen: <input type="hidden" name="grafikkort" value="<?=$GET['id']?>"> Så har du grafikkortets id i det felt. Og i den form kan du så også lave et felt til kommentar og brugernavn og hvad du ellers måtte ønske. Når så du sender alle data til databasen, har du hvilket grafikkort det omhandler, da du jo har dets id i $_POST["grafikkort"] Gav det mening?
I dag har jeg arbejdet med det, og har nu ved at bruge nogen af dine råd fået det til at fungerer :) Mange tak for den gode hjælp. Kommer du med et svar? :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.