Avatar billede gizmo234 Nybegynder
31. oktober 2005 - 19:59 Der 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?
Avatar billede Slettet bruger
31. oktober 2005 - 20:48 #1
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?
Avatar billede jakobdo Ekspert
31. oktober 2005 - 22:00 #2
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.
Avatar billede gizmo234 Nybegynder
31. oktober 2005 - 22:27 #3
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.

Kunne i hjælpe mig på vej her?
Avatar billede jakobdo Ekspert
01. november 2005 - 07:58 #4
Hvilke info gemmer du f.eks. om et grafik kort?
Gemmer du allerede de i en database i dag?
Eller er det hardcodet ind i en php side?
Avatar billede Slettet bruger
01. november 2005 - 09:38 #5
Vi kunne godt hjælpe dig, men vi skal lige vide, som jakobdo spørger efter, hvad det er for nogen data du skal gemme?!
Avatar billede Slettet bruger
01. november 2005 - 09:44 #6
Skal lige vide, du kan altså godt finde ud af at lave en tabel i en database?
og sætte ind via. php i din tabel? (altså oprette nye felter)

Kan du finde ud af at trække ud fra databasen?

og ikke andet kan du finde ud af at "connecte" (forbinde) til databasen?

Du kan jo spørger løs, men ellers kan der læses lidt på php.net med emnet mysql_query ->
http://dk2.php.net/mysql_query
Avatar billede gizmo234 Nybegynder
01. november 2005 - 13:49 #7
Hej igen.

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:

<form enctype="multipart/form-data" action="upload_Grafikkortets navn.php" method="post">
  <table width='95%' border='0' cellpadding='0' cellspacing='1' bgcolor='#000000'>
  <tr>
    <td bgcolor='#293038'>
      <table width='95%' border='0'>
        <tr>
          <td width='26%' height='14'><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>&nbsp;Skriv
            kommentar</font></strong> </td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td height='406' valign='top' bgcolor='3A4450'><table width='540' border='0'>
        <tr>
          <td width='180'><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Navn:</font></strong></td>
          <td width='300'><input name='navn' type='text' id='navn'> </td>
        </tr>
        <tr>
          <td><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Email:</font></strong></td>
          <td><input name='mail' type='text' id='mail'></td>
        </tr>
        <tr>
          <td><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>3dmark
            01 resultat:</font></strong></td>
          <td><input name='resultat' type='text' id='resultat'></td>
        </tr>
        <tr>
          <td height='23'><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Link
            til billede af 3dmark 01 resultatet:</font></strong></td>
          <td><input name='billede' type='text' id='billede'></td>
        </tr>
        <tr>
          <td><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>3dmark
            03 resultat:</font></strong></td>
          <td><input name='resultat2' type='text' id='resultat2'></td>
        </tr>
        <tr>
          <td><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Link
            til billede af 3dmark03 resultatet:</font></strong></td>
          <td><input name='billede2' type='text' id='billede2'></td>
        </tr>
        <tr>
          <td height='184' valign='top'><strong><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'>Kommentar:</font></strong></td>
          <td valign='top'><textarea name='kommentar' cols='30' rows='8' id='kommentar'></textarea></td>
        </tr>
        <tr>
          <td height='21' valign='top'> <input type='submit' name='Submit' value='Send'>
            <input type='reset' name='Submit2' value='Slet alt'> </td>
          <td valign='top'>&nbsp;</td>
        </tr>
      </table></td>
  </tr>
</table>
</form>


Og

<?


$connection = mysql_connect("localhost","***","***");
mysql_select_db("***", $connection);
$dato_streng = date("j/n - Y");
mysql_query("INSERT INTO `database` ( `id` , `dato` , `navn` , `mail` , `resultat` , `billede` , `resultat2` , `billede2` , `kommentar` )
VALUES ('$_POST[1]', '$dato_streng', '$_POST[navn]', '$_POST[mail]', '$_POST[resultat]', '$_POST[billede]', '$_POST[resultat2]', '$_POST[billede2]', '$_POST[kommentar]')") OR DIE (mysql_error());

mysql_close;

?>



Og så til sidst:

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
</head>

<body>
<?
$connection = mysql_connect("localhost","****","****");
mysql_select_db("****", $connection);

$query = mysql_query("SELECT * FROM database ORDER BY id DESC");
while($row = mysql_fetch_array($query)) {

echo"$row[navn], $row[resultat]";

}
?>

Håber i kan se hvad jeg mener?
Avatar billede jakobdo Ekspert
01. november 2005 - 15:01 #8
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?

Kan du følge mig?
Avatar billede gizmo234 Nybegynder
01. november 2005 - 17:29 #9
Jo, kan godt følge dig.

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.

Hvordan gøres det bedst?
Avatar billede jakobdo Ekspert
01. november 2005 - 18:44 #10
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.
Avatar billede gizmo234 Nybegynder
01. november 2005 - 22:36 #11
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.
Avatar billede jakobdo Ekspert
02. november 2005 - 07:09 #12
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

Og med test og evt pics ligeså.

Er det ikke smukt? :o)
Avatar billede gizmo234 Nybegynder
02. november 2005 - 07:25 #13
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 :)
Avatar billede jakobdo Ekspert
02. november 2005 - 07:28 #14
Du er velkommen.
Avatar billede gizmo234 Nybegynder
02. november 2005 - 18:30 #15
Æv, jeg kan ikke få det til at fungerer :(

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 :( :)
Avatar billede jakobdo Ekspert
05. november 2005 - 09:18 #16
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)
Avatar billede gizmo234 Nybegynder
05. november 2005 - 20:09 #17
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.
Avatar billede jakobdo Ekspert
06. november 2005 - 00:37 #18
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?
Avatar billede gizmo234 Nybegynder
06. november 2005 - 21:29 #19
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? :)
Avatar billede jakobdo Ekspert
06. november 2005 - 21:39 #20
Svar!
Og det virker bare perfekt eller?
Avatar billede gizmo234 Nybegynder
06. november 2005 - 21:48 #21
Det fungerer ud over alle grænser :) Og nu har jeg også selv fattet pointen med det alt det her med brug af ID osv, så det kunne ikke blive bedre! :)
Avatar billede jakobdo Ekspert
06. november 2005 - 22:08 #22
Super!
Takker for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester