Avatar billede krohn Praktikant
29. april 2011 - 01:45 Der er 8 kommentarer og
1 løsning

Hjælp til div forms og lists i PHP/MySql

Da jeg er helt ny til PHP har jeg brug for hjælp til at lave en side hvor jeg kan indsætte data i min MySql data base.
Jeg har oprettet en data base jacob_form med følgene indhold:
chapters
-- ChapterID
-- ChapterName
sections
-- SectionID
-- SectionName
-- SectionChapterID
faq
-- FaqID
-- FaqSectionID
-- FaqQuestion
-- FaqAnswer
Har også optettet en data base log ind PHP xxxlogin.php til data basen

Det jeg ønsker er at Dropdown list nr. 1 viser ChapterName (fra chapters tabel). Alt efter hvad vælges i Dropdown list nr. 1 skal der i Dropdown list nr. 2 vises SectionName (fra sections tabel) hvor SectionChapterID (fra sections tabel) er lig med den valgte værdi fra Dropdown list nr. 1
Tabellerne chapters, og sections er færdig udfyldt og der skal ikke tilføjes mere til dem.
Jeg vil så gerne have 2 tekst felter hvor det indput der skrives bliver tilføjet til min data base i tabelen faq  hvor den tilføjer næste ledige  FaqID, FaqSectionID der stemmer overens med tidligere valgt i Dropdown list nr. 2.
Tekst felt nr. 1 (Question) er et singlelinje felt og skal posts i FaqQuestion
Tekst felt nr. 2 (Answer) er et multilinje felt og skal postes i FaqAnswer

Har lavet en demo side i html så i kan se hvordan jeg ønsker det skal se ud den kan ses her:
http://demo.krohn.nu/demo.html
Hvis det hjælper så er sql filen fra data basen på dette link: http://krohn.nu/downloads.php?cat_id=7&download_id=14
Håber dette sammen med den demo jeg har lavet giver mening, ellers sig til.
Dette spørgsmål hænger sammen med dette her: http://www.eksperten.dk/spm/937476#reply_7772363
Avatar billede wanze Nybegynder
29. april 2011 - 02:02 #1
For et par år siden lavede jeg faktisk et eksempel på sådan en dropdown-menu. Det burde vel være lige til at hente en liste ud med alle kapitlerne og fylde dem i den første dropdown-menu, og henter alle sektionerne ud og fylde dem i andre dropdown-menuer. Du burde kunne hente det med 2 MySQL-forespørgsler, hvis du selv laver lidt opdeling af sektioner i PHP.
Avatar billede michael_stim Ekspert
29. april 2011 - 07:24 #2
Roenving har også lavet et par eksempler med JS arrays:
http://roenving.users.whitehat.dk/WD4Selects-beta.html
Avatar billede olsensweb.dk Ekspert
29. april 2011 - 07:30 #3
vedr. din dropdown, vil jeg foreslå at du kigger på AJAX
jeg har tidligere lavet et eks med nogle dropdown og ajax
http://olsensweb.dk/guides/ajax/eks2/
http://olsensweb.dk/guides/ajax/eks2_1/index.php
Avatar billede krohn Praktikant
29. april 2011 - 07:52 #4
Da der ikke var så mange "options", og da de ikke bliver ændret i de dropdown lister jeg skal bruge besluttede jeg mig for at "bare" taste dem ind.
Men kæmper lidt med at få indholdet ind i min DB (har siddet det meste af natten)

Jeg vil gerne at når man klikker på knappen "Add" så indsætter den følgene
Eksempel:
Hvis chapter (dropdown list nr. 1) er = 1, og section (dropdown list nr. 2) er =15
Så skal der i tabel faq oprettes en ny linje efter højeste FaqID og i FaqID indsættes det næste nr. (hvis sidste var 15, så indsæt 16), i FaqSectionID indsættes værdien fra dropdown list nr. 2 (altså 15)
Indhold af tekst område "Q" skal ind i FaqQuestion, og tekst område "A" skal i FaqAnswer

Se evt demo her: http://demo.krohn.nu/10.php

""Start PHP##
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Demo</title>
<script type="text/javascript">
    function ChangeMenu(sel) {
        var children = document.getElementById('section').getElementsByTagName('select');
        for (var i = 0; i <    children.length; i++) {
            children[i].style.display = "none";
        }
        document.getElementById(sel).style.display = "block";
    }
</script>

</head>
<body>
<?php

include 'XXXlogin.php';

echo "<form action=\"/\" method=\"post\">\n";
echo " \n";
echo "<p>&nbsp;</p>\n";
echo "<table width=\"190\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
echo "  <tr>\n";
echo "    <td width=\"55\"><div align=\"left\">Chapter</div></td>\n";
echo "    <td width=\"120\"><div align=\"left\">\n";
echo "      <select name=\"chapter\" id=\"chapter\" onchange=\"ChangeMenu(this.value)\" >\n";
echo "        <option value=\"0\">Choose</option>\n";
echo "        <option value=\"1\">Basic Formulas</option>\n";
echo "        <option value=\"2\">Basic Calculations</option>\n";
echo "        <option value=\"3\">Drilling Fluids</option>\n";
echo "        <option value=\"4\">Pressure Control</option>\n";
echo "        <option value=\"5\">Engineering Calculations</option>\n";
echo "      </select>\n";
echo "    </div></td>\n";
echo "    <td width=\"55\"><div align=\"left\">Section</div></td>\n";
echo "    <td width=\"387\"><div align=\"left\"> <div id=\"section\"> \n";
echo "      <div align=\"left\">\n";
echo "        <select style=\"display:none\" id=\"1\"> \n";
echo "          <option value=\"1\">Pressure Gradient</option>\n";
echo "          <option value=\"2\">Hydrostatic Pressure</option>\n";
echo "          <option value=\"3\">Converting Pressure into Mud Weight</option>\n";
echo "          <option value=\"4\">Specific Gravity</option>\n";
echo "          <option value=\"5\">Equivalent Circulating Density</option>\n";
echo "          <option value=\"6\">Maximum Allowable Mud Weight</option>\n";
echo "          <option value=\"7\">Pump Output</option>\n";
echo "          <option value=\"8\">Annular Velocity</option>\n";
echo "          <option value=\"9\">Capacity Formula</option>\n";
echo "          <option value=\"10\">Control Drilling</option>\n";
echo "          <option value=\"11\">Buoyancy Factor 12. Hydrostatic Pressure Decrease ...</option>\n";
echo "          <option value=\"12\">Loss of Overbalance Due to Falling Mud Level</option>\n";
echo "          <option value=\"13\">Formation Temperature</option>\n";
echo "          <option value=\"14\">Hydraulic Horsepower</option>\n";
echo "          <option value=\"15\">Drill Pipe/Drill Collar Calculations</option>\n";
echo "          <option value=\"16\">Pump Pressure/ Pump Stroke</option>\n";
echo "          <option value=\"17\">Relationship</option>\n";
echo "          <option value=\"18\">Cost Per Foot</option>\n";
echo "          <option value=\"19\">Temperature Conversion Formulas</option> \n";
echo "        </select> \n";
echo "        <select style=\"display:none\" id=\"2\"> \n";
echo "          <option value=\"20\">Volumes and Strokes</option>\n";
echo "          <option value=\"21\">Slug Calculations</option>\n";
echo "          <option value=\"22\">Accumulator Capacity</option>\n";
echo "          <option value=\"23\">Bulk Density of Cuttings (Using Mud Balance)</option>\n";
echo "          <option value=\"24\">Drill String Design (Limitations)</option>\n";
echo "          <option value=\"25\">Ton-Mile (TM) Calculations</option>\n";
echo "          <option value=\"26\">Cementing Calculations</option>\n";
echo "          <option value=\"27\">Weighted Cement Calculations</option>\n";
echo "          <option value=\"28\">Calculations for the Number of Sacks of Cement Req...</option>\n";
echo "          <option value=\"29\">Calculations for the Number of Feet to Be Cemented</option>\n";
echo "          <option value=\"30\">Setting a Balanced Cement Plug</option>\n";
echo "          <option value=\"31\">Differential Hydrostatic Pressure Between Cement i...</option>\n";
echo "          <option value=\"32\">Hydraulicing Casing</option>\n";
echo "          <option value=\"33\">Depth of a Washout</option>\n";
echo "          <option value=\"34\">Lost Returns</option>\n";
echo "          <option value=\"35\">Stuck Pipe Calculations</option>\n";
echo "          <option value=\"36\">Calculations Required for Spotting Pills</option>\n";
echo "          <option value=\"37\">Pressure Required to Break Circulation</option>\n";
echo "        </select> \n";
echo "        <select style=\"display:none\" id=\"3\"> \n";
echo "          <option value=\"38\">Increase Mud Weight</option>\n";
echo "          <option value=\"39\">Dilution</option>\n";
echo "          <option value=\"40\">Mixing Fluids of Different Densities</option>\n";
echo "          <option value=\"41\">Oil Based Mud Calculations</option>\n";
echo "          <option value=\"42\">Solids Analysis</option>\n";
echo "          <option value=\"43\">Solids Fractions</option>\n";
echo "          <option value=\"44\">Dilution of Mud System</option>\n";
echo "          <option value=\"45\">Displacement - Barrels of Water/Slurry Required</option>\n";
echo "          <option value=\"46\">Evaluation of Hydrocyclone</option>\n";
echo "          <option value=\"47\">Evaluation of Centrifuge</option>\n";
echo "        </select> \n";
echo "        <select style=\"display:none\" id=\"4\"> \n";
echo "          <option value=\"48\">Kill Sheets & Related Calculations</option>\n";
echo "          <option value=\"49\">Pre-recorded Information</option>\n";
echo "          <option value=\"50\">Kick Analysis</option>\n";
echo "          <option value=\"51\">Pressure Analysis</option>\n";
echo "          <option value=\"52\">Stripping/Snubbing Calculations</option>\n";
echo "          <option value=\"53\">Sub-sea Considerations</option>\n";
echo "          <option value=\"54\">Work-over Operations</option>\n";
echo "        </select> \n";
echo "        <select style=\"display:none\" id=\"5\"> \n";
echo "          <option value=\"55\">Bit Nozzle selection - Optimized Hydraulics</option>\n";
echo "          <option value=\"56\">Hydraulics Analysis</option>\n";
echo "          <option value=\"57\">Critical Annular Velocity & Critical Flow Rate</option>\n";
echo "          <option value=\"58\">The D Exponent</option>\n";
echo "          <option value=\"59\">Cuttings Slip Velocity</option>\n";
echo "          <option value=\"60\">Surge & Swab Pressures</option>\n";
echo "          <option value=\"61\">Equivalent Circulating Density</option>\n";
echo "          <option value=\"62\">Fracture Gradient Determination - Surface Applicat...</option>\n";
echo "          <option value=\"63\">Fracture Gradient Determination - Sub-sea Applicat...</option>\n";
echo "          <option value=\"64\">Directional Drilling Calculations</option>\n";
echo "          <option value=\"65\">Miscellaneous Equations & Calculations</option>\n";
echo "          \n";
echo "        </select>\n";
echo "      </div></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td colspan=\"4\">&nbsp;</td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td colspan=\"4\">Question:</td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td height=\"95\" colspan=\"4\" valign=\"top\"><label for=\"Q\"></label>\n";
echo "      <textarea name=\"Q\" id=\"Q\" cols=\"120\" rows=\"5\"></textarea></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td colspan=\"4\">Answer:</td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td height=\"229\" colspan=\"4\" valign=\"top\"><label for=\"A\"></label>\n";
echo "      <textarea name=\"A\" id=\"A\" cols=\"120\" rows=\"15\"></textarea></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td colspan=\"4\"><div align=\"center\">Add to DB\n";
echo "      <input type=\"submit\" name=\"add\" id=\"add\" value=\"Submit\" />\n";
echo "    </div></td>\n";
echo "  </tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "<p>&nbsp;</p>\n";
?>

</body>
</html>
##End php#
Avatar billede olsensweb.dk Ekspert
01. maj 2011 - 10:22 #5
med udgangs punkt i din code vil jeg lave følgende:
1) tilføje et hidden felt i din form, hvor du setter værdien i via dit JS
 echo '<input type="hidden" id="selectedbox" name="selectedbox" value="">'; 


2) set en onchange på alle dine selectboxe i undermenuen
 echo "        <select style=\"display:none\"  onchange=\"ChangeMenu1(this.value)\"  id=\"1\"> \n"; 
echo "        <select style=\"display:none\" onchange=\"ChangeMenu1(this.value)\" id=\"2\"> \n";
osv....


3) lav en lille JS function ChangeMenu1, der setter værdien af dit hidden felt
    function ChangeMenu1(sel) {
        document.getElementById('selectedbox').value=sel;
    }

   
4 din sql skal se sådan ud:
 <?php
    require_once("db_conn.php");
    $FaqQuestion = $_POST['Q'];
    $FaqAnswer = $_POST['A'];   
    $FaqSectionID = $_POST['selectedbox'];
    $sql = "INSERT INTO faq (FaqSectionID, FaqQuestion, FaqAnswer) VALUES ($FaqSectionID, '$FaqQuestion', '$FaqAnswer')";
    $rs = mysql_query($sql, $conn);
?>
Avatar billede wanze Nybegynder
01. maj 2011 - 16:04 #6
@ronols Du validerer overhovedet ikke inputtet. Det mindste man kan gøre er at køre mysql_real_escape_string()$_POST-variablerne.
Avatar billede wanze Nybegynder
01. maj 2011 - 16:07 #7
@Krohns Det der med IDs der skal være højere, det skal du desuden ikke tænke på. Dit FaqID-felt har egenskaben AUTO_INCREMENT, hvilket betyder, at hver gang du tifløjer et indslag til tabellen, så bliver den automatisk tildelt et ID, én højere end det forrige.
Avatar billede krohn Praktikant
26. maj 2011 - 19:56 #8
Er kommet godt igang, men da jeg arbejder i udlandet med noget helt andet, er det i perioder jeg får leget med dette.
Jeg vil lukke her, så det ikke står og hænger.
Takker for nu, og den hjælp jeg har fået. Venligst læg svar, så jeg kan tildele point..
Avatar billede wanze Nybegynder
26. maj 2011 - 20:40 #9
Svar.
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