Warum kommt da nichts?!?
Niklas
- php
0 Bugfix0 Niklas
0 Vinzenz Mai
Hi!
Habe da ein Script, das mir Probleme bereitet. Wenn ich die Datei formular.php aufrufe, bleibt der Bildschirm weiß. Hier die Datei:
<?php require_once('Connections/localhost.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO namen (order, klasse, anzahl, komplett, reihe4, reihe3, reihe2, reihe1, missing) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['order'], "int"
GetSQLValueString($_POST['klasse'], "text"),
GetSQLValueString($_POST['anzahl'], "text"),
GetSQLValueString($_POST['komplett'], "text"),
GetSQLValueString($_POST['reihe4'], "text"),
GetSQLValueString($_POST['reihe3'], "text"),
GetSQLValueString($_POST['reihe2'], "text"),
GetSQLValueString($_POST['reihe1'], "text"),
GetSQLValueString($_POST['missing'], "text"));
mysql_select_db($database_localhost, $localhost);
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
$insertGoTo = "erfolgreich.htm";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
<!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=iso-8859-1" />
<title>Jahrbuchfotos 2006 - Klasse 10b - SMTX</title>
</head>
<body>
<A HREF="index.html">zurück zur Hauptseite</A>
<H1>Klasse 10b</H1>
<H2><KBD>SMTX</KBD></H2>
<FORM METHOD="post" NAME="form1" ACTION="<?php echo $editFormAction; ?>">
<FIELDSET>
<LEGEND><B>Ausgewähltes Foto</B></LEGEND>
<IMG SRC="file:///C:/klassenfotos05/bilder/10b.png" ALT="Dieses Bild fehlt noch oder wurde nicht richtig abgespeichert" WIDTH="50%">
</FIELDSET>
<FIELDSET>
<LEGEND><B>Allgemeine Informationen</B></LEGEND>
<INPUT NAME="order" TYPE="hidden" VALUE="34">
<INPUT NAME="klasse" TYPE="hidden" VALUE="10b">
<INPUT NAME="anzahl" TYPE="hidden" VALUE="25">
Sind alle Schüler abgebildet?
<P>
<INPUT TYPE="radio" NAME="komplett" VALUE="ja"> ja<BR>
<INPUT TYPE="radio" NAME="komplett" VALUE="nein"> nein
</P>
</FIELDSET>
<FIELDSET>
<LEGEND><B>Eingabe der Namen der Schüler</B></LEGEND>
Bitte geben Sie für jede Reihe die Namen der Schüler, jeweils durch Komma getrennt, ein!<BR>
Vergessen Sie nicht sich selbst!
<P>
Darüber stehen:<BR>
<I>Wenn sich Ihre Schüler nur auf 3 Reihen verteilen, kennzeichnen Sie dies durch ein "-" im Feld unten!</I><BR>
<INPUT NAME="reihe4" TYPE="text" SIZE="150">
</P>
<P>
Darüber stehen:<BR>
<I>Wenn sich Ihre Schüler nur auf 2 Reihen verteilen, kennzeichnen Sie dies durch ein "-" im Feld unten!</I><BR>
<INPUT NAME="reihe3" TYPE="text" SIZE="150">
</P>
<P>
Darüber stehen:<BR>
<INPUT NAME="reihe2" TYPE="text" SIZE="150">
</P>
<P>
Unten stehen:<BR>
<INPUT NAME="reihe1" TYPE="text" SIZE="150">
</P>
<P>
<FONT COLOR="red">Nicht abgebildet:<BR>
<I>Wenn alle Schüler da waren, setzen Sie bitte hier ein "-"</I><BR></FONT>
<INPUT NAME="missing" TYPE="text" SIZE="150">
</P>
</FIELDSET>
<BR><input type="submit" value=" Ich habe die Daten überprüft, bin mir sicher, dass alles richtig ist und möchte sie nun übertragen ">
<input type="hidden" name="MM_insert" value="form1">
</FORM>
<A HREF="index.html">zurück zur Hauptseite</A>
</body>
</html>
Habe da ein Script, das mir Probleme bereitet. Wenn ich die Datei formular.php aufrufe, bleibt der Bildschirm weiß. Hier die Datei:
Mein Tipp: Es gibt einen Fehler, aber Dir wird keine Fehlermeldung angezeigt. Versuche es mal mit:
<?php error_reporting (E_ERROR | E_WARNING | E_PARSE); ?>
ganz am Anfang der Seite, vielleicht siehst Du dann eine Fehlermeldung.
Da tut sich nichts. Habe hier mal noch die andere Datei namens /Connections/localhost.php angehängt (Daten stimmen im Original)
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_localhost = "localhost";
$database_localhost = "XXX";
$username_localhost = "YYY";
$password_localhost = "ZZZ";
$localhost = mysql_pconnect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
?>
Hab echt keine Ahnung, wo da der Fehler liegt...
Und dann hab ich da noch ne Datei, die mir Inhalte aus der Datenbank (ich habe einen Datensatz probehalber eingegeben) anzeigen soll, doch auch die meldet Fehler:
test.php
<?php require_once('Connections/localhost.php'); ?>
<?php
$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
$pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
mysql_select_db($database_localhost, $localhost);
$query_Recordset1 = "SELECT * FROM namen ORDER BY order ASC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $localhost) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
if (isset($_GET['totalRows_Recordset1'])) {
$totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
$all_Recordset1 = mysql_query($query_Recordset1);
$totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>
<!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=iso-8859-1" />
<title>Jahrbuchfotos 2006 - Übersicht</title>
</head>
<body>
<table width="100%" border="0">
<tr>
<TD>Klasse/Kurs</TD>
<td>Anzahl der Schüler</td>
<td>Alle da?</td>
<td>4. Reihe</td>
<td>3. Reihe</td>
<td>2. Reihe</td>
<td>1. Reihe</td>
<td>Es fehlen</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_Recordset1['klasse']; ?></td>
<td><?php echo $row_Recordset1['anzahl']; ?></td>
<td><?php echo $row_Recordset1['komplett']; ?></td>
<td><?php echo $row_Recordset1['reihe4']; ?></td>
<td><?php echo $row_Recordset1['reihe3']; ?></td>
<td><?php echo $row_Recordset1['reihe2']; ?></td>
<td><?php echo $row_Recordset1['reihe1']; ?></td>
<td><?php echo $row_Recordset1['missing']; ?></td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Wäre echt nett, wenn ihr mir dabei etwas behilflich sein könntet
THX
Hallo Niklas,
Und dann hab ich da noch ne Datei, die mir Inhalte aus der Datenbank (ich habe einen Datensatz probehalber eingegeben) anzeigen soll, doch auch die meldet Fehler:
Welchen bitte?
$query_Recordset1 = "SELECT * FROM namen ORDER BY order ASC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1,
Ist Dir klar, dass das SQL-Statement, das in $query_limit_Recordset1 steht, mindestens einen Fehler enthält?
SELECT
*
FROM namen
ORDER BY order -- der Fehler ist doch gar nicht zu übersehen.
-- siehe [link:http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html@title=Liste reservierter Wörter]
-- übrigens: Standardsortierung ist aufsteigend :-)
$startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $localhost) or die(mysql_error());
Hier sollte mysql_error() ausgegeben werden. Wird hier etwas ausgegeben? Wenn ja, was? Warum gibst Du Dein SQL-Statement nicht mit aus?
Dein Doctype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
und die folgende
<TD>Klasse/Kurs</TD>
Zeile stehen zueinander im Widerspruch. Bitte validiere den generierten Code.
Freundliche Grüße
Vinzenz
Hallo Niklas,
hast Du schon einmal von mysql_real_escape_string() gehört?
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
... offensichtlich nicht. Im Archiv gibt es dazu einiges zu finden, z.B. folgendes Posting von Sven Rautenberg.
$insertSQL = sprintf("INSERT INTO namen (order, klasse, anzahl, komplett, reihe4, reihe3, reihe2, reihe1, missing) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
$insertSQL enthält ein fehlerhaftes SQL-Statement, siehe mein anderes Posting.
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
Hier "stirbt das Skript" und sollte eine Fehlermeldung ausgeben. Der Rest wird nicht mehr ausgeführt, aber auch hier beißen sich Deine Doctype-Deklaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
und die folgenden Zeilen, vergleiche dazu SELFHTML, Unterschiede zwischen HTML und XHTML:
<A HREF="index.html">zurück zur Hauptseite</A>
[...]
<FONT COLOR="red">Nicht abgebildet:<BR>
Warum verwendest Du <font>? Muss das wirklich sein?
<input type="hidden" name="MM_insert" value="form1">
Sollte etwa M(acro)M(edia) am ungültigen Code schuld sein?
Fragende Grüße
Vinzenz