Kære alle,
Jeg troede jeg sad og lavede noget jeg havde nogenlunde styr på, men åbenbart ikke.
Default form:
1) Man vælger en radio btn, og herefter kører en onchange function, der henter enten mulige hovedsider, eller mulige undersider ( afhængigt af valg..) -> FRA LINIE 38
FORMEN ER HER:- <?php
- include("./../MYSQL/connection.php");
- //error_reporting(0);
- $output = false; // = Formen er ikke submitted
- $succes = false;
- if (isset($_POST['pdf_submit']))
- {
- // DATA FRA FORMEN:
- $temp = $_FILES['pdf']['tmp_name'];
- $name = $_FILES['pdf']['name'];
- $size = $_FILES['pdf']['size'];
- $side_type = $_POST['side_type'];
- $pos = $_POST['placering'];
- $navn = $_POST['navn'];
-
- $feedback = upload_pdf( $connection, $temp, $name, $size, $side_type, $pos, $navn );
- $output = true; // = Formen er submitted
- if ( $feedback[0] == '<small>Dokumentet er uploadet.<small>' ) { $succes = true; }
- }
- ?>
- <h3 class="thin_headings">PDF modul</h3><br />
- <p><b>Upload pdf dokumenter her:</b></p><br /><hr /><br />
- <div class="tab_container_visible">
- <table class="tab_table">
- <form name="pdf" method="post" enctype="multipart/form-data" >
- <tr>
- <td class="tab_td_left">
- <p class="tab_p_bold">Vælg PDF:</p>
- </td>
- <td class="tab_td_right">
- <input type="file" name="pdf" id="pdf" />
- </td>
- </tr>
- <tr>
- <td class="tab_td_left">
- <p class="tab_p_bold">Vælg sidetype:</p>
- </td>
- <td class="tab_td_right">
- <input type="radio" name="hent_sider" value="hovedside" checked onchange="Hent_Sider_Til_PDF('hovedsider');" />
- <p style="display:inline; margin-right:25px;">Hovedside</p>
- <input type="radio" name="hent_sider" value="underside" onchange="Hent_Sider_Til_PDF('undersider');" />
- <p style="display:inline; margin-right:25px;">Underside</p>
-
- <span id="side_liste" style="margin-left:30px;">
- <?php
- $SQL = "SELECT id, link_titel FROM hovedsider WHERE publiceret = 'ja' ORDER BY placering ASC";
- $STMT = mysqli_prepare($connection, $SQL);
- mysqli_stmt_execute($STMT);
- mysqli_stmt_store_result($STMT);
- mysqli_stmt_bind_result($STMT, $id, $hoved_link);
- $rows = mysqli_stmt_num_rows($STMT);
-
- echo '<select name="side_type" class="tab_form_select_wide" style="display:inline;" onChange="hent_position_til_pdf(\'hoved\',this.selectedIndex);">';
-
- echo '<option value="nej"> - Vælg en hovedside - </option>';
-
- while (mysqli_stmt_fetch($STMT)) {
- echo '<option value="'.$id.'">'.$hoved_link.'</option>';
- }
- echo '</select>';
- ?>
- </span>
- </td>
-
- </tr>
- <tr>
- <td class="tab_td_left">
- <p class="tab_p_bold">Placering:</p>
- </td>
- <td class="tab_td_right">
- <span id="placeringer">
- <select name="placering" id="placering" class="tab_form_select_wide">
- <option value="nej"> - Vælg først en side - </option>
- </select>
- </span>
- </td>
- </tr>
-
- <tr>
- <td class="tab_td_left">
- <p class="tab_p_bold">Navn:</p>
- </td>
- <td class="tab_td_right">
- <input type="text" name="navn" id="navn" class="tab_form_txt"
- value="<?php if ( $output == true && $succes == false ) { echo $navn; } ?>"/>
- </td>
- </tr>
-
- </table>
- <input type="submit" name="pdf_submit" class="tab_submit_btn" value="Upload PDF" />
- <span id="upload_pdf"><?php if ( $output == true) { echo $feedback[0]; } ?></span>
- </form>
- </div>
- <br /><hr /><br />
- <span id="pdf_liste"><?php ?></span>
Javascript funktion der bliver kaldt via radio btn's, til at hente enten undersider eller hovedsider:
- function Hent_Sider_Til_PDF(side_type) {
-
- var qstring = "side_type="+side_type;
-
- // OPRET HTTP REQUEST:
- if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }
- else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
-
- xmlhttp.onreadystatechange = function()
- {
- if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
- {
- setTimeout(function(){ document.getElementById("side_liste").innerHTML =
- "<img src=\"styles/loader.gif\" width=\"26\" height=\"26\" style=\"display:inline;\" />" +
- "<p style=\"display:inline; margin-left:15px; font-size:17px;\">" +
- "<b>Henter sider...</b></p>"; },100);
-
- setTimeout(function(){ document.getElementById("side_liste").innerHTML = xmlhttp.responseText},800 );
- }
- }
- xmlhttp.open("GET", "ajaxPHP/moduler/pdf_side_liste.php?"+qstring, true)
- xmlhttp.send()
- return false;
- }
2) Når onchange funktionen er kørt fra en af radio btn's, så ser den php side der laver select listen med mulige sider således ud:
- <?php
- // DB forbindelse:
- include("../../../MYSQL/connection.php");
-
- if (isset($_GET['side_type'])) {
-
- if($_GET['side_type'] == 'hovedsider') {
- // Her hentes publicerede hovedsider:
-
- $SQL = "SELECT id, link_titel FROM hovedsider WHERE publiceret = 'ja' ORDER BY placering ASC";
- $STMT = mysqli_prepare($connection, $SQL);
- mysqli_stmt_execute($STMT);
- mysqli_stmt_store_result($STMT);
- mysqli_stmt_bind_result($STMT, $id, $hoved_link);
- $rows = mysqli_stmt_num_rows($STMT);
-
- echo '<select name="side_type" class="tab_form_select_wide" style="display:inline;"
- onChange="hent_position_til_pdf(\'hoved\',this.selectedIndex)">';
- echo '<option value="nej"> - Vælg en hovedside - </option>';
-
- while (mysqli_stmt_fetch($STMT)) {
- echo '<option value="'.$id.'">'.$hoved_link.'</option>';
- }
- echo '</select>';
- }
- else if($_GET['side_type'] == 'undersider') { // Her hentes publicerede undersider:
-
- $SQL = "SELECT id, hovedside_id, link_titel FROM undersider WHERE publiceret = 'ja' ORDER BY hovedside_id, placering ASC";
- $STMT = mysqli_prepare($connection, $SQL);
- mysqli_stmt_execute($STMT);
- mysqli_stmt_store_result($STMT);
- mysqli_stmt_bind_result($STMT, $id, $hid, $under_link);
- $rows = mysqli_stmt_num_rows($STMT);
-
- echo '<select name="side_type" class="tab_form_select_wide" style="display:inline;" id="under"
- onChange="hent_position_til_pdf(\'under\',this.selectedIndex)">';
- echo '<option value="nej"> - Vælg en underside - </option>';
-
- while (mysqli_stmt_fetch($STMT)) {
- echo '<option value="'.$id.'">'.$under_link.' - '.$hid.'</option>';
- }
- echo '</select>';
- }
- }
- ?>
3)I denne liste der udskrives ovenover er der så en anden onchange function (LINIE 18 OG 36, ca.), der alt efter side valg, henter endnu en select liste frem, der viser mulige positioner til det pdf dokument der skal uploades til siden. PHP scriptet der laver listen med positioner ser således ud:
- <?php
- // DB forbindelse:
- include("../../../MYSQL/connection.php");
-
- if (isset($_GET['side_type']) && isset($_GET['id'])) {
- // print_r($_GET); exit();
- // DATA:
- $side_type = $_GET['side_type'];
- $side_id = $_GET['id'];
-
- $sql = "SELECT pos FROM modul_pdf WHERE side_id = ? AND side_type = ?";
- $prep = mysqli_prepare($connection, $sql);
- mysqli_stmt_bind_param($prep, "is", $side_id, $side_type);
- mysqli_stmt_execute($prep);
- mysqli_stmt_store_result($prep);
- mysqli_stmt_bind_result($prep, $pos);
-
- $rows = mysqli_stmt_num_rows($prep);
-
- if (is_numeric($side_id))
- {
- echo '<select name="placering" id="placering" class="tab_form_select_wide">';
- for ( $i = 1; $i <= $rows + 1; $i++ )
- {
- echo '<option value="'.$i.'">'.$i.'</option>';
- }
- echo '</select>';
- }
- else
- {
- echo '<select name="placering" id="placering" class="tab_form_select_wide">
- <option value="nej"> - Vælg først en side - </option>
- </select>';
- }
- } // SLUT: if (isset($_GET['side_type']) && isset($_GET['id'])) {
- ?>
Javascript funktion der bliver kaldt her:
- function hent_position_til_pdf(side_type,id) {
-
- var qstring = "side_type="+side_type+"&id="+id;
- //alert(qstring);
- // OPRET HTTP REQUEST:
- if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }
- else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
-
- xmlhttp.onreadystatechange = function()
- {
- if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
- {
- setTimeout(function(){ document.getElementById("placeringer").innerHTML =
- "<img src=\"styles/loader.gif\" width=\"26\" height=\"26\" style=\"display:inline;\" />" +
- "<p style=\"display:inline; margin-left:15px; font-size:17px;\">" +
- "<b>Henter placeringer...</b></p>"; },100);
-
- setTimeout(function(){ document.getElementById("placeringer").innerHTML = xmlhttp.responseText },800 );
- }
- }
- xmlhttp.open("GET", "ajaxPHP/moduler/pdf_position.php?"+qstring, true)
- xmlhttp.send()
- return false;
- }
Der sker det, at så snart jeg har vælgt en radio button, og subitter formen via php, så får jeg en undefined index i den $_POST værdi der skulle være sendt med den 1. select liste der indeholder enten hovedsider eller undersider.
Den samme undefined index fejl i $_POST, får jeg efter submit ved den sidste select liste der indeholder de mulige positioner for dokumentet.
Er der en der kan se, hvordan det kan være at der går ged i de select lister der bliver lavet og sendt tilbage til siden via AJAX.
PS: Den form der er der som default, virker fint nok: Der kan jeg godt tilgå $_POST værdierne uden at få fejl..
Jeg beklager den ringe formattering, men det var ikke nemt at indsætte alt det kode i editoren uden det kiksede lidt :-/
Spørg endelig hvis jeg kan gøre det mere tydeligt, eller jeg har udeladt nogen info!! :-)
/Klemme
Indlæg senest redigeret d. 30.10.2012 19:50 af Bruger #16555