ERLEDIGT
JA
JA
ANTWORTEN
27
27
ZUGRIFFE
1606
1606
EMPFEHLEN
-
Hallo,
ich schreibe zur Zeit an einer Shoutbox mit Datenbankanbindung.
Hierbei tritt o.g. Fehler auf, betreffend die Zeile 52.
Ich danke für Hilfe,
Markus
PHP-Code:<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shoutbox</title>
<?php
$name = $_POST["name"];
$schrei = $_POST["schrei"];
$name = str_replace ("\n"," ", $name);
$name = str_replace ("<", " ", $name);
$name = str_replace (">", " ", $name);
$name = stripslashes ($name);
?>
<?php
if( isset($_POST['submit']) ) {
$db = mysql_connect('localhost', 'db', 'pw');
mysql_select_db('tab, $db);
$sql = "SELECT * FROM shoutbox
ORDER BY time ASC
LIMIT 0 , 30";
$ausgabe = mysql_query($sql);
$query = '
INSERT INTO
`shoutbox`
SET
`time` = "'.time().'"
`name` = "'.mysql_real_escape_string($_POST['name']).'",
`schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
';
}
?>
</head>
<table>
<tr>
<td>
<form name="shoutbox" action="shoutbox.php" method="post">
<p>Name:
<input type="text" name="name" class=textfeld size="15" maxlength="20" value="<? echo $name; ?>" />
Schrei:
<input type="text" name="message" class=textfeld size="50" maxlength="255" />
<input type="submit" value="Schrei!" class="button" />
</form>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<?php
while($zeile = mysql_fetch_array($ausgabe)){
print("<tr><td><i>".$zeile["name"]."</i> schrie am");
print($zeile["time"]);
print($zeile["schrei"]."</td></tr>");
}
?>
</table>
</td>
</tr>
</table>
</body>
</html>
-
Hi, hier mal eine Liste mit Dingen die mir aufgefallen sind:
- bei mysql_select_db() fehlt ein '
- die Datenbankverbindung wird nur aufgebaut wenn $_POST['submit'] gesetzt ist, das gleiche gilt fuer mysql_query() welches die Grundlage fuer Dein mysql_fetch_array() bildet
- Dein mysql_fetch_array() wird immer ausgefuehrt, was zur Folge hat, dass es zum Fehler kommt wenn $_POST['submit'] nicht gesetzt ist
Ich wuerde Dir uebrigens empfehlen mit mysql_fetch_assoc() anstatt mit mysql_fetch_array() zu arbeiten.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Ich würde dir das auch empfehlen wenn Dennis das sagt, ich habe auch irgendwann angefangen die Funktion zu nutzen, allerdings weiß ich nicht mehr wieso. Könntest du, lieber Dennis, mir das nocheinmal erläutern?
Zitat von Dennis Wronka
Vielen Dank!
BSA
[:.drumba.:] - Wordpress Entwicklung Berlin
_______________________________________
Staatlich anerkanntes Experiment:
Kohlkopf | Angela | Merkel| Angela Merkel
-
mysql_fetch_array() ist quasi eine Kombination aus mysql_fetch_row() und mysql_fetch_assoc()
mysql_fetch_row() bietet einen numerischen Index, mysql_fetch_assoc() einen assoziativen Index und mysql_fetch_array() bietet beide. In den meisten Faellen ist es Unsinn beide Indizes zu haben, da man in der Regel eh mit dem assoziativen Index arbeitet. Und mir faellt auch grad kein Beispiel ein wo es Sinn macht beide Indizes zu haben.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Also würde das nur heißen das das ganze ein wenig Speicherplatz spart?
[:.drumba.:] - Wordpress Entwicklung Berlin
_______________________________________
Staatlich anerkanntes Experiment:
Kohlkopf | Angela | Merkel| Angela Merkel
-
Ja, koennte man so sagen.
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Ich bin ein kleines Stückchen weiter. Ich habe gerade etwas rumgefiddelt (eher aufs Geratewohl denn aus Überzeugung) und die Fehlermeldung ist schonmal weg. Die Einträge, die ich vorher mit phpmyadmin eingefügt habe, werden auch angezeigt.
Jedoch werden keine Daten in die Datenbank eingefügt.
P.S:: Danke für die schnellen AntwortenPHP-Code:<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-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>
<title>Shoutbox</title>
<?
$name = $_POST["name"];
$schrei = $_POST["schrei"];
$name = str_replace ("\n"," ", $name);
$name = str_replace ("<", " ", $name);
$name = str_replace (">", " ", $name);
$name = stripslashes ($name);
?>
<?php
$db = mysql_connect('localhost', 'db', 'pw');
mysql_select_db('tab', $db);
$sql = "SELECT * FROM shoutbox
ORDER BY time ASC
LIMIT 0 , 30";
$ausgabe = mysql_query($sql);
$query = '
INSERT INTO
`shoutbox`
SET
`time` = "'.time().'"
`name` = "'.mysql_real_escape_string($_POST['name']).'",
`schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
';
?>
</head>
<table>
<tr>
<td>
<form name="shoutbox" action="shoutbox.php" method="post">
<p>Name:
<input type="text" name="name" class=textfeld size="15" maxlength="20" value="<? echo $name; ?>" />
Schrei:
<input type="text" name="message" class=textfeld size="50" maxlength="255" />
<input type="submit" value="Schrei!" class="button" />
</form>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<?php
while($zeile = mysql_fetch_assoc($ausgabe)){
print("<tr><td><i>".$zeile["name"]."</i> schrie am");
print($zeile["time"]);
print($zeile["schrei"]."</td></tr>");
}
?>
</table>
</td>
</tr>
</table>
</body>
</html>
-
Das wiederum liegt daran, dass diese Query
nie ausgefuehrt wird.PHP-Code:$query = '
INSERT INTO
`shoutbox`
SET
`time` = "'.time().'"
`name` = "'.mysql_real_escape_string($_POST['name']).'",
`schrei` = "'.mysql_real_escape_string($_POST['schrei']).'",
';
Bevor diese Query ausgefuehrt wird solltest Du dann aber wieder pruefen ob Daten geschickt wurden und die einzutragenden Felder (oder zumindest von Dir festgelegte Pflichtfelder) nicht leer sind.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Die mysql_fetch_array()-Funktion erlaubt es übrigens als zweiten Parameter den Ergebnistyp festzulegen. Somit kann nicht pauschal gesagt werden, dass die mysql_fetch_num()- beziehungsweise die mysql_fetch_assoc()-Funktion der mysql_fetch_array()-Funktion vorzuziehen ist.
Probier mal Folgendes:PHP-Code:<?php
$db = mysql_connect('localhost', 'db', 'pw')
or die('Verbindung zum Datenbankserver schlug fehl!');
mysql_select_db('tab', $db)
or die('Auswahl der Datenbank schlug fehl!');
if( isset($_POST['submit']) ) {
$query = '
INSERT INTO
`shoutbox`
SET
`time` = "'.time().'",
`name` = "'.mysql_real_escape_string(strip_tags($_POST['name'])).'",
`schrei` = "'.mysql_real_escape_string($_POST['schrei']).'"
';
mysql_query($query)
or die('Datenbankabfrage schlug fehl!');
}
$query = '
SELECT
`time`,
`name`,
`schrei`
FROM
`shoutbox`
ORDER BY
`time` ASC
LIMIT
0, 30
';
$result = mysql_query($query)
or die('Datenbankabfrage schluf fehl!');
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shoutbox</title>
</head>
<body>
<form name="shoutbox" action="shoutbox.php" method="post">
<p>Name:
<input type="text" name="name" class="textfeld" size="15" maxlength="20" value="<? echo htmlspecialchars(strip_tags($_POST['name'])); ?>" /></p>
<p>Schrei:
<input type="text" name="message" class="textfeld" size="50" maxlength="255" /></p>
<p><input type="submit" value="Schrei!" class="button" /></p>
</form>
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<?php
while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
echo '<tr><td><p><i>'.$row['name'].'</i> schrie am '.$row['time'].':</p><p>'.$zeile['schrei'].'</p></td></tr>';
}
?>
</table>
</body>
</html>Markus Wulftange
-
Funktioniert leider nicht. Es wird nicht in die Datenbank geschrieben.
Fehlermeldung kommt allerdings auch keine
-
Erhöhe mal mit folgendem Code die Fehlersensibilität PHPs:
PHP-Code:<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
…
?>Markus Wulftange
-
Ich denke anstelle dieses Aufrufes
waere der folgende besser:PHP-Code:ini_set('error_reporting', E_ALL);
Der Grund: Ich denke nicht, dass viele Hoster ini_set() zulassen, es waere zu einfach radikale Eingriffe in die PHP-Konfiguration vorzunehmen und der Hoster koennte sich seine Arbeit PHP vernuenftig zu konfigurieren sparen.PHP-Code:error_reporting(E_ALL);
Zum Thema mysql_fetch_array(): Warum mit einem 2. Parameter arbeiten wenn man doch eine Funktion hat die das gleiche kann, aber keinen 2. Parameter benoetigt. Da darf man mal richtig faul sein.
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
10.01.06 14:36 #13
- Registriert seit
- Mar 2002
- Ort
- BRD
- Beiträge
- 489
heißt es nicht ...
:þPHP-Code:
UPDATE tabelle SET spalte = wert
&
INSERT INTO tabelle (spalte) VALUES (wert)
(\_/)
(O.o) This is Bunny. Copy Bunny into your signature
(> <) to help him on his way to world domination.
-
..Doch, so heißt es!heißt es nicht ...
PHP-Code:UPDATE tabelle SET spalte = wert
&
INSERT INTO tabelle (spalte) VALUES (wert)
-
Wurde denn irgendwo das Gegenteil behauptet?
Zitat von Sebastianus
Markus Wulftange
Ähnliche Themen
-
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
Von Hattrix im Forum PHPAntworten: 30Letzter Beitrag: 29.07.10, 15:39 -
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Von Lobedan im Forum PHPAntworten: 11Letzter Beitrag: 05.08.09, 22:52 -
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
Von HPB im Forum PHPAntworten: 4Letzter Beitrag: 11.10.06, 09:37 -
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Von mjb im Forum PHPAntworten: 5Letzter Beitrag: 30.07.05, 18:28 -
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Von geheimakte im Forum PHPAntworten: 9Letzter Beitrag: 02.01.05, 00:07





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren