Avatar billede krohn Praktikant
25. april 2011 - 18:46 Der er 16 kommentarer og
2 løsninger

Hjælp til indput/admin side

Jeg prøver at bygge en "FAQ" med formular som vi bruger på vores arbejde
Jeg vil gerne have en "Admin" side hvor jeg kan tilføje til databasen, men da mine PHP evner er i begynder stadiet har jeg brug for noget hjælp
Selve FAQ'en kommer senere lige nu er det indput siden jeg er ved.
jeg har ikke oprettet tabeler i databasen endnu da jeg gerne ville have jeres råd / mening om hvad der er smartest.
Har lavet en "Demo" side til hvordan jeg forestiller mig den admin indput side skal se ud.
Det er ikke meningen der skal redigeres, slettes, i siden når den er færdig kun tilføjes til den, og kun af mig.
Adressen til demo siden er http://demo.krohn.nu det er som sagt kun en demo så i kan se hvad jeg sigter mod, den er i html, men ønsker at det skal være i PHP.
Jeg køre med MySql, og Apache til PHP

Samlingen er bygget op i 5 kapitler som hver har 1-20 sektioner i hver sektion er der xx antal Q&A
f.eks.:
Kapitel 1 =
Basic Formulas
Sektion 1= 
Pressure Gradient
Q1=
Pressure gradient, psi/ft, using mud weight, ppg
A1=
psi/ft = mud weight, ppg x 0.052 Example: 12.0 ppg fluid
Psi/ft = 12.0 ppg x 0.052
psi/ft = 0.624

----------------
Demo side kode
--------------
#


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Demo side</title>

</head>



<body>

<p>Admin for fomular DB</p>

<hr />

<table width="31%" border="0">

  <tr>

    <td width="50%"><p>Kapitel</p></td>

    <td width="50%"><p>Sektion</p></td>

  </tr>

  <tr>

    <td><form id="form1" name="form1" method="post" action="">

      <label for="kap"></label>

      <select name="kap" id="kap">

        <option value="1">Basic Formulas </option>

        <option value="2">Basic Calculations </option>

        <option value="3">Drilling Fluids </option>

      </select>

    </form></td>

    <td><form id="form2" name="form2" method="post" action="">

      <label for="sek"></label>

      <select name="sek" id="sek">

        <option value="1">Pressure Gradient</option>

        <option value="2">Hydrostatic Pressure</option>

        <option value="3">Specific Gravity</option>

      </select>

    </form></td>

  </tr>

</table>

<p>Quistion:</p>

<form id="form3" name="form3" method="post" action="">

  <label for="Q"></label>

  <input name="Q" type="text" id="Q" size="150" maxlength="500" />

</form>

<p>&nbsp;</p>

<p>Answer:</p>

<form id="form4" name="form4" method="post" action="">

  <label for="A"></label>

  <textarea name="A" id="A" cols="150" rows="10"></textarea>

</form>

<div align="left">

  <table width="100%" border="0">

    <tr>

      <td width="86%"><div align="right">Add to DB</div></td>

      <td width="14%"><form id="form5" name="form5" method="post" action="">

        <div align="left">

          <input type="submit" name="add" id="add" value="Submit" />

        </div>

      </form></td>

    </tr>

  </table>

</div>

<p>&nbsp;</p>

</body>

</html>
3
Avatar billede wanze Nybegynder
25. april 2011 - 19:47 #1
Jeg går ud fra, at det du søger er databasestrukturen. Jeg vil anbefale dig 3 tabeller:

Chapters
  ChapterID    (int, primary key, auto_increment)
  ChapterName  (tinytext)

Sections
  SectionID    (int, primary key, auto_increment)
  SectionName  (tinytext)

Faq
  FaqID        (int, primary key, auto_increment)
  FaqChapterID  (int)
  FaqSectionID  (int)
  FaqQuestion  (text)
  FaqAnswer    (text)


I din Chapters og Sections-tabeller har du så indslag med navne på alle kapitler og sektioner med et tilhørende tabel-unikke ID'er. I din Faq-tabel har du så spørgsmål/svar og de tilhørende ChapterIDs og SectionIDs.
Avatar billede krohn Praktikant
25. april 2011 - 20:43 #2
Ja det var en del af det, havde næsten samme ide, men tænkte at jeg ville høre om det var helt galt først.
Har oprettet MySql som ovenfor, se her under

Anden del var at jeg ville have hjælp til at lave siden i PHP, jeg er i lære stadiet så har brug for at finde ud af hvordan jeg
Opretter "option lists" i PHP og indsætter dynamisk i option list 1 fra "chapters/ChapterName" og ved valg liste " sections/SectionName"
Samt at få både Q tekst, og A tekst områderne lavet i PHP (går ud fra det er med echo)
Og at få det indsat ved klik på Add knappen (submit)
Alt i alt det hele. Har lavet lidt PHP men kun med udtræk fra data baser, og har rodet lidt med PHP Fusion men er som skrevet ny i dette PHP

#SQL#
-- Database: `jacob_form`
--

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `chapters`
--

CREATE TABLE IF NOT EXISTS `chapters` (
  `ChapterID` int(11) NOT NULL AUTO_INCREMENT,
  `ChapterName` tinytext NOT NULL,
  PRIMARY KEY (`ChapterID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
-- Data dump for tabellen `chapters`
--


-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `faq`
--

CREATE TABLE IF NOT EXISTS `faq` (
  `FaqID` int(11) NOT NULL AUTO_INCREMENT,
  `FaqChapterID` int(11) NOT NULL,
  `FaqSectionID` int(11) NOT NULL,
  `FaqQuestion` text NOT NULL,
  `FaqAnswer` text NOT NULL,
  PRIMARY KEY (`FaqID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
-- Data dump for tabellen `faq`
--


-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `sections`
--

CREATE TABLE IF NOT EXISTS `sections` (
  `SectionID` int(11) NOT NULL AUTO_INCREMENT,
  `SectionName` tinytext NOT NULL,
  PRIMARY KEY (`SectionID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
#SQL#
Avatar billede wanze Nybegynder
25. april 2011 - 20:55 #3
Hvis du aldrig har arbejdet med MySQL andet end udtræk, så ville det nok være en god idé at finde en guide. Indsætte data i en mysql-tabel giver en lynhurtig introduktion, hvis du da er helt med på, hvordan en MySQL-database helt basalt fungerer. En anden god idé kan også være at indsætte data vha. phpMyAdmin og se på de forespørgsler den laver.

Jeg kan se, at du allerede ved, hvordan man laver en option-liste på din demo-side, så jeg går ud fra, at problemet består i, hvordan du udskriver det dynamisk. Du henter ganske simpelt alle kapitler fra databasen og udskriver vha. en while-løkke. Det bliver noget i stil med:
<option name="{$row['ChapterID']}">{$row['ChapterName']}</option>
i din <select name="chapter">-liste.

Hvad er du i tvivl om mht. at udskrive Q og A-teksterne vha. PHP? Det er nok noget der kommer, når du har læst den lille guide jeg linkede og guiden til forespørgsler. Hvis ikke, så må du spørge igen eller Google dig til en anden guide.
Avatar billede krohn Praktikant
25. april 2011 - 21:20 #4
Kigger på det :) Du mente vel indskrive vha. PHP til DB
Avatar billede wanze Nybegynder
25. april 2011 - 21:27 #5
Nej, jeg mente faktisk udskrive. Den første artikel burde dække, hvordan du indskriver til databasen vha. PHP. Den sidste dækker hentning og udskrivelse fra databasen. :)
Avatar billede krohn Praktikant
26. april 2011 - 00:08 #6
Ok har nu næsten ikke mere hård tilbage.. Og Google er næsten slidt op.
jeg kan fint få hentet data fra en DB og vist på en side. Se f.eks. her http://rigcrew.com/viewpage.php?page_id=19

Men slider noget med at få det vist i en dropdown liste, og endnu mere med dropdown liste nr2 da den skal vise indhold fra en anden tabel baseret på valg i dropdown liste nr1
Her under er hvad jeg har, men det er vel kun til den første?
En anden ting
I de tabeller du foreslog under Sections hvor der er SectionID, og SectionName

Hvordan skal jeg gøre det når der f.eks. i Chapter 1 er Section 1-19, og i

Chapter 2 er Section 1-15?

Jeg kan vel ikke have identiske nummer som SectionID ?



#PHP Start#

include 'datalogin.php';

$result = mysql_query("SELECT ChapterID, ChapterName FROM chapters ORDER BY ChapterID ASC")
or die(mysql_error()); 

$row = mysql_fetch_array( $result );
while($row = mysql_fetch_array($result)){


echo "<table width=\"31%\" border=\"0\">\n";
echo "  <tr>\n";
echo "    <td width=\"50%\"><p>Kapitel</p></td>\n";
echo "    <td width=\"50%\"><p>Sektion</p></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td><form id=\"form1\" name=\"form1\" method=\"post\" action=\"\">\n";
echo "      <label for=\"Chapters\"></label>\n";
echo "      <select name=\"Chapters\" id=\"Chapters\">\n";
echo "        <option value=\"\"></option>\n";
echo "      </select>\n";
echo "    </form></td>\n";
echo "    <td><form id=\"form2\" name=\"form2\" method=\"post\" action=\"\">\n";
echo "      <label for=\"Sections\"></label>\n";
echo "      <select name=\"Sections\" id=\"Sections\">\n";
echo "        <option value=\"\"></option>\n";
echo "      </select>\n";
echo "    </form></td>\n";
echo "  </tr>\n";
echo "</table>\n";


}

#PHP End#
Avatar billede wanze Nybegynder
26. april 2011 - 00:22 #7
Jeg er ikke lige helt med på det sektionsproblem du beskriver med Section 1-19 og Section 1-15. Du kan jo sagtens have mange indslag i faq-tabellen, der alle har 4 som SectionID, for eksempel.

Hvad angår din kode, så udskriver du jo en ny tabel med en to tomme <select>-lister for hvert kapitel. Samtidig inkluderer du intet af den data du hiver ud af tabellen.

Det du søger er nok det her:

echo "<select name=\"chapters\">\n";
while($row = mysql_fetch_array($result)) {
  echo "<option value=\"{$row['ChapterID']}\">
    {$row['ChapterName']}</option>\n";
}
echo "</select>\n";

Det vil give dig en dropdown-menu med alle kapitlerne.
Avatar billede wanze Nybegynder
26. april 2011 - 00:23 #8
Hov, det var ikke meningen, det skulle være et svar.
Avatar billede krohn Praktikant
26. april 2011 - 00:44 #9
Ok prøver :)

Så jeg kan godt gøre som vist her (første kolonne er ikke en tabel kun med som info)?


Ikke en tabel-----SectionID--SectionName
Chapter1----------1------------Pressure Gradient
Chapter1----------2------------Hydrostatic Pressure
Chapter1----------3------------Converting Pressure into Mud Weight
Chapter1----------4------------Specific Gravity
Chapter1----------5------------Equivalent Circulating Density
Chapter1----------6------------Maximum Allowable Mud Weight
Chapter1----------7------------Pump Output
Chapter1----------8------------Annular Velocity
Chapter1----------9------------Capacity Formula
Chapter1----------10-----------Control Drilling
Chapter1----------11-----------Buoyancy Factor 12. Hydrostatic Pressure Decrease POOH
Chapter1----------12-----------Loss of Overbalance Due to Falling Mud Level
Chapter1----------13-----------Formation Temperature
Chapter1----------14-----------Hydraulic Horsepower
Chapter1----------15-----------Drill Pipe/Drill Collar Calculations
Chapter1----------16-----------Pump Pressure/ Pump Stroke
Chapter1----------17-----------Relationship
Chapter1----------18-----------Cost Per Foot
Chapter1----------19-----------Temperature Conversion Formulas
Chapter2----------1------------Volumes and Strokes
Chapter2----------2------------Slug Calculations
Chapter2----------3------------Accumulator Capacity — Usable Volume Per Bottle
Chapter2----------4------------Bulk Density of Cuttings (Using Mud Balance)
Chapter2----------5------------Drill String Design (Limitations)
Chapter2----------6------------Ton-Mile (TM) Calculations
Chapter2----------7------------Cementing Calculations
Chapter2----------8------------Weighted Cement Calculations
Chapter2----------9------------Calculations for the Number of Sacks of Cement Required
Chapter2----------10-----------Calculations for the Number of Feet to Be Cemented
Chapter2----------11-----------Setting a Balanced Cement Plug
Chapter2----------12-----------Differential Hydrostatic Pressure Between Cement in the Annulus and
Chapter2----------13-----------Mud Inside the Casing
Chapter2----------14-----------Hydraulicing Casing
Chapter2----------15-----------Depth of a Washout
Chapter2----------16-----------Lost Returns — Loss of Overbalance
Chapter2----------17-----------Stuck Pipe Calculations
Chapter2----------18-----------Calculations Required for Spotting Pills
Chapter2----------19-----------Pressure Required to Break Circulation
Avatar billede wanze Nybegynder
26. april 2011 - 00:50 #10
Nej. SectionID skal være unikke. Den eneste grund til vi laver et ID er af databasemæssige årsager. Hvis en database har et unikt tal-id, så vil tabellen kunne blive indekseret mere effektiv, så man hurtigere kan søge i den. Det er udelukkende af praktiske årsager det bruges.

Hvorfor skal de have lige netop de ID'er der?
Avatar billede krohn Praktikant
28. april 2011 - 18:27 #11
Den eneste grund var at det var sådan "originalen" var byget op.
For at være sikker inden jeg begynder at fylde for meget ind i DD, har jeg lavet et eksempel i Excel, hvis du gider kogge på det. Det er ikke komplet men giver en ide om hvordan jeg forstår det du foreslår
Du kan finde det her: http://krohn.nu/downloads.php?cat_id=7
Avatar billede wanze Nybegynder
28. april 2011 - 18:40 #12
Ja, den databasestruktur ser udmærket ud.

Det giver dig mulighed for at hente alt ud baseret på både kapitel og sektion. Dog ser jeg ikke umiddelbart en forbindelse mellem kapitelID og sektionsID. Dvs. du kan ikke nemt hente en liste ud med alle sektioner i et kapitel.

Jeg ville nok tilføje et kapitelID i Sections, hvilket samtidig gør kapitelID'et under Faq overflødigt.

Med mindre selvfølgelig, at du har sektioner, der strækker sig over flere kapitler.
Avatar billede krohn Praktikant
28. april 2011 - 18:42 #13
Har også lagt en sql fil fra min demo DB på samme link
Avatar billede wanze Nybegynder
28. april 2011 - 18:48 #14
Du har stadig ikke lavet relationen mellem sektioner og kapitler, dog.
Avatar billede krohn Praktikant
28. april 2011 - 20:46 #15
Nej den er fra samme DB. Sjovt (tror jeg lære noget) Jeg var lige igang med at lave en SectionChapterID for at se om jeg havde mere held med dette..
Avatar billede krohn Praktikant
29. april 2011 - 00:50 #16
Så er der lavet en ny. Den ligger også på http://krohn.nu/downloads.php?cat_id=7 , og hedder "Sql eksempel nr 2"
Hvis den er ok, tror jeg jeg vil lukke dette, og oprette et nyt med de dropdown, og indput felter jeg skal have oprettet. Dette er både for ikke at få rodet for meget ind i samme spørgsmål, og for at du kan få point for alt det du har gjort ind til nu.

Har oprettet følgene:


chapters
-- ChapterID
-- ChapterName
sections
-- SectionID
-- SectionName
-- SectionChapterID
faq
-- FaqID
-- FaqSectionID
-- FaqQuestion
-- FaqAnswer
Avatar billede wanze Nybegynder
29. april 2011 - 01:33 #17
Ja, det ser meget fint ud.  :)
Avatar billede krohn Praktikant
29. april 2011 - 01:49 #18
Dette spørgsmål er nu "delt" og fortættes her: http://www.eksperten.dk/spm/937723
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