IIS houd op met data versturen

Problemen met PHP, ASP, CGI, MySQL? Post ze hier!

IIS houd op met data versturen

Berichtdoor Cybertinus » za jan 27, 2007 13:19

Hallo allemaal,

Ik zit hier nu op m'n werk verder te ontwikkelen aan een groot project hier. Daar heb ik een iframe in zitten. Als je dan een optie kiest buiten dat iframe, wordt dat iFrame veranderd en dan staat daar de goede informatie (heb je dat in AJAX gedaan? Nope. Kan het wel in AJAX? Yep :p). Maar als ik nu een keuze maak buiten het iframe, dan wordt draait m'n javascriptje netjes, en wordt er ook netjes een HTTP request gestuurd om de nieuwe pagina op te vragen. IIS 6.0 stuurt ook netjes een HTTP 200 reactie terug. Alle HTTP headers zijn compleet. Maar op de plek dat de webpagina moet beginnen staat er helemaal niets. Dan houd het op wat er uit IIS komt. Ik zou echt niet weten waardoor dat komt. Voor de volledigheid zal ik nog efkes m'n PHP pagina's wegzetten:
index.php:
[php]<?php
require_once('../includes/config.php');
require_once('../includes/functions.php');
require_once('../includes/db_connect.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>Verander gegevens test</TITLE>
<LINK rel="stylesheet" type="text/css" href="../includes/style.css">
<SCRIPT type="text/javascript" src="../includes/functions.js"></SCRIPT>
<STYLE type="text/css">
#lijst_pakketten
{
position: absolute;
float: left;
left: 5px;
top: 50px;
bottom: 5px;
border: 0px;
}

#gegevens_iframe
{
position: absolute;
float: left;
left: 90px;
top: 50px;
bottom: 5px;
right: 5px;
border: 0px;
}

td:hover
{
cursor: pointer;
}
</STYLE>
<SCRIPT type="text/javascript">
function toonGegevens(id)
{
// Correcte gegevens ophalen
document.getElementById('gegevens').src='gegevens.php?id='+id;

// Geselecteerde veld een andere achtergrondkleur geven en alle andere velden deselecteren
var table = document.getElementById('selectie_tabel');
var rows = table.getElementsByTagName('tr');
for(var i = 0; i < rows.length; i++)
{
if(rows[i].id == 'row_'+id)
{
rows[i].style.backgroundColor='#0A246A';
rows[i].style.color='#FFFFFF';
}
else
{
rows[i].style.backgroundColor='#FFFFFF';
rows[i].style.color='#000000';
}
}
}
</SCRIPT>
</HEAD>
<BODY>
<?php
if($bDb_conn === TRUE)
{
?>
<FORM method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<STRONG>Pakketnaam</STRONG> <INPUT type="text" name="zoek" id="zoek"> <INPUT type="submit" value="zoek">
</FORM>
<DIV id="lijst_pakketten">
<TABLE border="1" cellspacing="0" cellpadding="0" id="selectie_tabel">
<THEAD>
<TR>
<TH><H1>Naam</H1></TH>
</TR>
</THEAD>
<TBODY>
<?php
$qSelect_pakketten = 'SELECT id, naam FROM pakket';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$qSelect_pakketten .= ' WHERE naam LIKE "%'.mssql_real_escape_string($_POST['zoek']).'%"';
}
if($rSelect_pakketten = query($qSelect_pakketten, $hDb_conn, 'Helaas is het selecteren van de pakketnamen mislukt', $aConfig['debug']))
{
while($aPakket = mssql_fetch_assoc($rSelect_pakketten))
{
echo "\t<TR id=\"row_".$aPakket['id']."\">\n";
echo "\t\t<TD onClick=\"toonGegevens(".$aPakket['id'].")\">".$aPakket['naam']."</TD>\n";
echo "\t</TR>\n";
}
}
?>
</TBODY>
</TABLE>
</DIV>
<?php
}
?>
<DIV id="gegevens_iframe"><IFRAME name="gegevens" id="gegevens" frameborder="0" height="250" width="420" src="gegevens.php"></IFRAME></DIV>
</BODY>
</HTML>[/php]
Gegevens.php (de pagina die in het iFrame staat):
[php]<?php
require_once('../includes/config.php');
require_once('../includes/functions.php');
require_once('../includes/db_connect.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<LINK rel="stylesheet" type="text/css" href="../includes/style.css">
<SCRIPT type="text/javascript" src="../includes/functions.js"></SCRIPT>
</HEAD>
<BODY>

<?php
if(!isset($_GET['id']))
{
echo 'Geen pakket geselecteerd, dus er kunnen ook geen gegevens getoont worden.';
}
elseif(!isset($_GET['id']) || empty($_GET['id']) || !is_numeric($_GET['id']))
{
echo 'Er ging helaas iets mis. Verbeter de manier waarop deze pagina aangeroepen wordt.';
}
elseif($bDb_conn === TRUE)
{
echo 'Alles in orde, hij komt op de plek waar hij moet komen';
$qSelect_pakket = 'SELECT naam, aanmaakdatum, MG, laatst_bewerkt FROM pakket WHERE id = '.$_GET['id'];
if($rSelect_pakket = query($qSelect_pakket, $hDb_conn, 'Helaas is het selecteren van het pakket mislukt', $aConfig['debug']))
{
echo '<TABLE>';
$aPakket = mssql_fetch_assoc($rSelect_pakket);
maak_veld(array('naam'), '', 'n', 'aam', $aPakket['naam'], TRUE);
$iTimestamp = strtotime($aPakket['aanmaakdatum']);
echo '<TR><TD><STRONG>Aanmaakdatum:</STRONG></TD><TD>'.date('d-m-Y H:i:s', $iTimestamp).'</TD></TR>';
$iTimestamp = strtotime($aPakket['laatst_bewerkt']);
echo '<TR><TD><STRONG>Laatst gewijzigd:</STRONG></TD><TD>'.date('d-m-Y H:i:s', $iTimestamp).'</TD></TR>';
maak_veld(array('mg'), '', 'm', 'g', $aPakket['MG'], TRUE);
echo '</TABLE>';
}
else
{
echo 'Er is iets heel raars aan de hand';
}
?>
</BODY>
</HTML>[/php]

Wat het nog vreemder maakt, is dat een heel groot deel van deze code ook al in andere scripts verwerkt is, en daar werkt het helemaal perfect. Ik snap dus totaal niet waarom IIS er nu ineens problemen mee (lijkt) te hebben.
Ik zal nog eens een keer kijken of ik logs kan vinden van IIS, maar die heb ik nog niet kunnen vinden :?

[edit]
Ik heb de logs gevonden. De accesslog en de errorlog. In de errorlog staat niets. Het is totaal niet gedetecteerd. Wat gaat er hier dus mis? Het enige vreemde vind ik dat er in de logfile geen ? staan (bijv. bij index.php?id=1) maar een spatie. Maar dat lijkt geen probleem te zijn, want op een andere plek in het project heb ik dezelfde truck toegepast en dat werkt perfect. Ook als ik dat script draai komt er een spatie in de logfile te staan ipv een ?.
Het gaat trouwens over een systeem met de volgende specificaties:
Windows server 2003
IIS 6
PHP 5.2.0
[/edit]
"Been There, Done That, GOING BACK!" - Disneyland Parijs.
Avatar gebruiker
Cybertinus
 
Berichten: 135
Geregistreerd: ma aug 28, 2006 14:11
Woonplaats: In de buurt van Breda

Berichtdoor ddaemen » za maart 03, 2007 19:14

wat is de source van iframe? indien 4 regeltjes die lijken op het volgende...

Code: Selecteer alles
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>

is er een fout in je PHP source. pleur eens...
Code: Selecteer alles
error_reporting("E_ALL");

in het begin van je php code en show us output
Biertje?
ddaemen
 
Berichten: 65
Geregistreerd: vr nov 03, 2006 20:40
Woonplaats: SELECT * FROM `nederland` WHERE stad="Heerlen";

Berichtdoor Cybertinus » za maart 03, 2007 22:54

als ik het me goed herinner (het is lang geleden en ik zit nu thuis) dan was de source die in de iframe staat hetvolgende:
Code: Selecteer alles
<html><body></body></html>

Verder staat error_reporting op E_ALL | E_STRICT. Dat zie je niet in dit script, maar dat staat wel zo in php.ini :) (het is een devbak, dus daar mag het. Sterker nog, daar moet het, vind ik).

Verder hoeft dit probleem voor mij niet meer opgelost te worden. Mijn code was best wel zaad (mooi gestructureerd, OOP enzo), dus het is totaal anders aangepakt. Aan deze code wordt dus niet meer verder gewerkt. Voor de database van TWNet is het natuurlijk wel leuk als er een oplossing voor komt.
"Been There, Done That, GOING BACK!" - Disneyland Parijs.
Avatar gebruiker
Cybertinus
 
Berichten: 135
Geregistreerd: ma aug 28, 2006 14:11
Woonplaats: In de buurt van Breda


Keer terug naar Server Side Scripting

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron