PHP-Liste in Div-Container laden

centauro34

Grünschnabel
Hallo Forum,

ich habe ein Formular in dem ich einen div-container habe den ich per "style.display = none" oder "style.display = hidden" ein- bzw. ausblende.

Problem:

In dem Div-Container befindet sich ein php-dokument, in dem ich eine Liste mit Elementen lade. Dieses Dokument habe ich per "include('../meineListe.php')" eingebunden.

Da PHP Serverseitig läuft, der DIV-Container jedoch Client-Seitig verwendet wird, wird die Liste natürlich nicht geladen.

Frage:
Wie kriege ich es hin die Liste mit den Elementen in den DIV-Container zu laden?

Der Code:

PHP:
<?php
echo '<div class="input" id="inputSchadenbefundDiv">';
echo '<div align="right" style="cursor:pointer; background: lightgrey;" onclick="closeInput()">[Schliessen]     </div>';
echo '<hr style="margin:0;padding:0;margin-bottom:10px">';
echo '<form name="inputForm" onSubmit="return false;">';
echo '<table bgcolor="#EFEFEF" border=1 width="400px" height="110px">';
echo '<tr><td colspan="2">Schadenbefund</td></tr>';
echo '<tr><td>'.include ("includes/ersatzteile.php") .'</td>';
echo '	<td><textarea rows="7" cols="25" name="eingabe" id="eingabe"></textarea></td></tr>';
echo '		<tr><td><input type="hidden" name="inputData">';
echo '		     <input type="button" name="eintragen" value="Eintragen" onclick="daten[this.form.inputData.value] = this.form.eingabe.value;buildTable(this);closeInput();">';
echo '		</td></tr>';
echo '			</table>';
echo '</form>	';
echo '</div>';
?>

Das Div-Popup wird zwar geladen aber die PHP-Liste mit den Elementen aus der Datenbank wird nicht geladen.

Was mache ich hier falsch?

Bin für jeden Tip und jede Hilfe dankbar.

Gruß,
centauro34
 
Zuletzt bearbeitet von einem Moderator:
Willkommen im Forum.
Zunächst eines: Verwende bitte die für Quellcode vorgesehen Tags, wie z. B. [ php ]..dein code[ /php ].
Natürlich ohne dem Leerzeichen. Das macht das Lesen ungemein leichter.

Zu deinem Problem:
include() kann man nicht innerhalb von echo oder einer anderen Ausgaben verwenden.

Schreibe es statt dessen mal wie folgt:
PHP:
echo '<tr><td>';
include ("includes/ersatzteile.php") ;
echo '</td>';

Die eingebundene Datei muss natürlich selbst eine Ausgabe machen, sonst sieht man trotzdem nichts. :)
 
Hallo!

Vielen Dank für Deinen Beitrag und Tip.
Die includierte Datei liest aus einer Textdatei ganz bestimmte Dateifragmente aus und zeigt diese in der Liste an.

Alleine funktioniert die Datei ausnahmslos und ohne jegliche Probleme.

Ich bin Deinem Tip gefolgt und habe den Code geändert.
Aber leider öffnet sich das Popup mit einer leeren Liste.

Kann es sein, dass in einem Div-Container Php-Dateien nicht ausgelesen werden?

Gruss,
mo
 
Hallo Forum!

Leider habe ich bisher noch keine Lösung für mein oben geschildertes Problem gefunden. Habe schon so vieles probiert aber irgendwo ist da noch der Wurm drin.

Es wäre sehr freundlich, wenn mir jemand noch einen Tip oder Hinweis geben könnte woran es noch liegen kann, dass in dem DIV-Container die PHP-Datei (Liste) nicht angezeigt wird.

Vielen Dank für jegliche Tips und Hinweise.

Viele Grüße aus Köln,
centauro34
 
Hallo!

Das bringt mich keineswegs weiter, wenn ich den code aus der Datei ersatzteile hier poste.

Die Problematik liegt in der Anwendung des Div-Containers.

Die Datei ersatzteile.php funktioniert einwandfrei und ist an anderer Stelle bereits eingesetzt. Diese Datei liest nur eine unvormatierte Textdatei aus und spuckt mir Dateifragmente, also bestimmte Wörter und Zahlen, in die Liste.

That's it.

Dies hat aber überhaupt nichts mit der eigentlichen Problematik zu tun. Sorry!

Gruß,
centauro34
 
Inwiefern gibt sie diese Daten zurück?
Per [phpf]echo[/phpf]? Oder per [phpf]return[/phpf]?

Geschieht gar keine Ausgabe?
Falls nein, versuche es mal mit [phpf]var_dump[/phpf] ob die Variable befüllt ist.

Bedenke dass sich bei Verwendung von [phpf]include[/phpf] die Ordnerstruktur mitändert.

Ansonsten [phpf]error_reporting[/phpf] mal hochdrehen.
 
Hallo!

Vielen Dank für Deine Antwort.
Die Daten werden per "echo" ausgegeben.

Wenn ich aber auf den Link klicke, der mir wiederum per Div die Maske mit der Liste anzeigt, wird die Liste unbefüllt zurückgegeben.

Die Maske, die per Div eingeblendet wird, öffnet sich quasi wie ein Tooltip.
Liegt es vielleicht daran?

Mein error_reporting steht auf e_all.

Ein var_dump habe ich noch nicht probiert.

Allerdings funktioniert die php-Datei mit der Liste im single Modus, also alleine, einwandfrei.

Inwiefern ändert sich die Ordnerstruktur beim include mit?
Meinst Du damit, dass sich der Pfad ändert? Der passt so. Den habe ich schon mehrfach geprüft.

Gruss
 
Zeig einfach mal den Quellcode der beiden Dateien, bzw. die betreffenden Stellen.
Es nützt ja nichts wenn du immer wieder beteuerst das alles korrekt und richtig ist, es im Endeffekt jedoch trotzdem nicht funktioniert. ;)

Klar, es kann sein dass der Fehler wo anders liegt. Nur falls es doch ein Programmierfehler ist sollten wir uns nicht ewig im Kreis drehen.
 
habe gerade eine neue erkenntnis gemacht.
Wenn der Pfad der Datei richtig gesetzt ist, dann verschwindet das gesamte formular. Die seite wird quasi leer.

hier der code:

Die Datei ersatzteilliste.php

PHP:
<?php
error_reporting(e_all);
global $HTTP_SESSION_VARS;
global $HTTP_POST_VARS;


$x_auftragsnummer = $_SESSION['x_auftragsnummer'];

$var = "E R S A T Z T E I L E";
$var2 = "SYSTEM AUDATEX";

$startwert="";
$endwert="";
$i=0;
$j=0;

$ersatzteile = '';
$ar = file('dsnspool');


echo '<input type="hidden" name="ersatzteile" id="ersatzteile" value="'.$_POST['ersatzteile'].'">';


?>
<input type="hidden" name="x_auftragsnummer" id="x_auftragsnummer" value=" <?php echo $_SESSION['x_auftragsnummer']; ?>">


<?php

//Startwert festlegen und Zeiger auf Zeile setzen
for($i=0; $i<=count($ar); $i++)
{
	$startwert=substr($ar[$i],0,22);


	if (ereg($var, $ar[$i])) {
		
		if ($startwert<>null) {

		$j=$i;

		}
	break;
	}
	
}



echo "Ersatzteilliste:<br><Select name='ersatzteile_set' id='ersatzteile_set' size='5'>";
//Ersatzteile auslesen ab Startwert


for($j=$i; $j<=count($ar); $j++) {
    $ersatzteile=substr($ar[$j+3],8, 26);
	//Endwert festlegen, bis wohin gelesen werden soll. Anschliessender Abbruch
	$endwert=substr($ar[$j],13, 32);
	//Leerzeichen entfernen, von links
	$ersatzteile = ltrim($ersatzteile);
			
			if($ersatzteile<>"") {

			if ($ersatzteile==="SYS") {
				$ersatzteile = str_replace($ersatzteile, 'SYS', '');

			}		
	//Auslesen der einzelnen Ersatzteile_Set und in Array schreiben

 //echo $ersatzteile;

	//Sicherheitshalber mal in ein Array für spaetere Zwecke reinschreiben
			$ersatzteile_set[] = $ersatzteile;
			$menge = array_push ($ersatzteile_set,'');
			
		//	echo $ersatzteile_set[$j];
	echo '<option id="'.$j.'" href="'.$ersatzteile.'" ondblclick="einfuegen(';
	echo "'".$ersatzteile."'";
	echo ');document.forms.ersatzteilimport.content.focus();">'.$ersatzteile.'</option>'; 
			}
	
	if (ereg($var2, $ar[$j])) {
		if ($endwert<>null) {

			break;
		}
	}

}


//echo "</form>";

for ($x=0; $x<$menge; $x++) {
	$data = $ersatzteile_set[$x];
$ersatzteile = (ltrim($data));
$gutachtennummer = $_SESSION['x_auftragsnummer'];
//echo  $ersatzteile;
ins_dat($ersatzteile,$gutachtennummer);
}

function ins_dat($val, $gnum) {
	
if ($val=="REI") {
	break;
} else {

		$val = preg_replace("/(.*?)(\n{3})(\n*)/","\\1\\2",$val);

		$update_ersatzteile = 'UPDATE fahrzeugdaten_spec SET ersatzteile=concat("'.$val.'",ersatzteile) 
									   WHERE gutachtennummer="'.$gnum.'"';
		$result_update_ersatzteile = mysql_query($update_ersatzteile) or die("Fehler :".mysql_error()."<br>".$update_ersatzteile);

	}
}
?>

Hier der Code welches das DIV-Element aus dem Container ausliest und einblendet:
PHP:
<script type="text/javascript">
function schadenbefOeffnen(nnode) {

	document.getElementById("inputSchadenbefundDiv").style.visibility = "visible";
	document.getElementById("inputSchadenbefundDiv").style.display = "block";
	document.getElementById("inputSchadenbefundDiv").style.width = "500px";
	document.getElementById("inputSchadenbefundDiv").style.margin = "50px";
	document.forms["inputForm"].inputData.value = nnode;
	document.forms["inputForm"].eingabe.value=daten[nnode];
	document.forms["inputForm"].eingabe.focus();
}

</script>

Und hier der Code für das DIV-Element:

PHP:
<?php
echo '<div class="input" id="inputSchadenbefundDiv">';
echo '<div align="right" style="cursor:pointer; background: lightgrey;" onclick="closeInput()">[Schliessen]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>';
echo '<hr style="margin:0;padding:0;margin-bottom:10px">';
echo '<form name="inputForm" onSubmit="return false;">';
echo '<table bgcolor="#EFEFEF" border=1 width="400px" height="110px">';
echo '<tr><td colspan="2">Schadenbefund</td></tr>';

echo '<tr><td>';
include ("../../includes/ersatzteile.php");
echo '</td>';


echo '	<td><textarea rows="7" cols="25" name="eingabe" id="eingabe"></textarea></td></tr>';
echo '		<tr><td><input type="hidden" name="inputData">';
echo '		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" name="eintragen" value="Eintragen" onclick="daten[this.form.inputData.value] = this.form.eingabe.value;buildTable(this);closeInput();">';
echo '		</td></tr>';
echo '			</table>';
echo '</form>	';
echo '</div>';
?>

Vielleicht hilft dies weiter.

Wie bereits oben geschrieben:

Wenn die php-Datei mit der Liste ausgelesen wird, dann wird das Hauptformular, in dem das DIV-Element platziert ist, plötzlich ausgeblendet und die gesamte Seite wird weiss. Es ist dann quasi alles weg.

Ich vermute, wenn das Problem beseitigt ist, dann sind alle Probleme beseitigt und die Liste wird mit den Elementen aus der Textdatei angezeigt.

Gruß,
centauro34
 
Zurück