Shoutbox, Problem mit $_POST

mrepox

Erfahrenes Mitglied
Hallo und schönen guten Morgen!

Ich schreibe mir grade eine Shoutbox die in eine bestehende Seite eingebunden werden soll.
Aus diesem Grund soll die function die die message in die MySql Bank schreibt in dem script mit eingebunden sein.
Auf einer externen php datei darf es nicht sein weil sich sonst nach der verarbeitung der daten eine neue Browserseite öffnen würde.

Meine Idee wars in den form action="eine function" anzusteuern.

Klappt leider nicht, es kommt keine Fehlermdlung aber auch kein eintrag in der DB!

Seht selbst:
PHP:
<form action="<?php text(); ?>" method="post" > //hier soll  nach ausfüllen des Forms und submit

			<fieldset>                                      // die function gestartet werden

				<legend>Shoutbox</legend>
				<span style="display:block;font: 0.6em/1.2em sans;width:150px;height:300px;background:#fefefe;">
				<?php
include('db_fns.php');
$handle = db_connect();
$query = "SELECT text FROM shoutbox";
$result = $handle->query($query);

while ($shout = $result->fetch_assoc()) {
$parse_hea =$shout['text']; 
echo "$parse_hea</br>";
echo"<br>";
}
 ?>
</span>

				<label for="name" ></label>

				<input type="text"   name="name" value="Dein Name" onfocus="if (this.value == 'Dein Name') this.value = '';"  />

				<label for="text"></label>

				<input type="text" name="text" value="Dein Text" onfocus="if (this.value == 'Dein Text') this.value = '';"  />
				<label for="mail"></label>

				<input type="text" name="mail" value="Deine email" onfocus="if (this.value == 'Deine email') this.value = '';"/>

				

			  <input type="submit" value="registrieren" id="registrieren" />

			</fieldset>

		</form>
<?php             // hier die function zu eintragen in die DB!
function text()
{
$handle = new mysqli('localhost', 'XXX', 'XXX', 'XXX');
    if (!$handle) {
        return FALSE;
    }
    return $handle;


$name = $_POST['name'];
$text = $_POST['text'];
$mail = $_POST['mail'];
$time = time();
 
    $query = "insert into shoutbox
                (name,text,mail,time)
              values
                ('$name', '$text', '$mail', '$time')";          
 
$result = $handle->query($query);

if (!$result) {
    echo "Es gab einen Datenbankfehler beim Ausführen der Abfrage <pre>$query</pre>";
    echo mysqli_error();
    exit;
   }
}

 ?>		
		

	</body>

</html>


Was mache ich hier falsch und geht das überhaupt so wie ich das Vorhabe!

- Muß ich der Funktion evenuell die POST Vars mit übergeben und wenn wie?

Gruß Markus
 
Zuletzt bearbeitet:
Probier mal Folgendes:
PHP:
<?php

	if( !empty($_POST) ) {

		$handle = new mysqli('localhost', 'XXX', 'XXX', 'XXX');
		$query = '
			INSERT INTO
			        `shoutbox`
			  SET
			        `name` = "'.mysql_real_escape_string($_POST['name']).'",
			        `text` = "'.mysql_real_escape_string($_POST['text']).'",
			        `mail` = "'.mysql_real_escape_string($_POST['mail']).'",
			        `time` = "'.time().'"
			';
		$result = $handle->query($query);
		if( !$result ) {
			echo 'Es gab einen Datenbankfehler beim Ausführen der Abfrage <pre>'.htmlspecialchars($query).'</pre>';
			echo mysqli_error();
			exit;
		}
		header('Location: '.$_SERVER['REQUEST_URI'], true, 302);
		exit;

	}

?>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
	…
</form>
 
und wie soll ich das einbinden? wieder als Function ?

Mach mir bitte mal einen Vorschlag und danke für deine Hilfe.

Gruß Markus
 
Setze Genanntes einfach an den Anfang des Skriptes und entferne den Block, der einst für den Datenbankeintrag sorgte. Der Rest sollte problemlos funktionieren.
 
sieht logisch aus, dennoch trotz login daten diese fehler:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'web180'@'localhost' (using password: NO) in /home/www/web180/html/shout.php on line 81

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/www/web180/html/shout.php on line 81

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'web180'@'localhost' (using password: NO) in /home/www/web180/html/shout.php on line 82

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/www/web180/html/shout.php on line 82

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'web180'@'localhost' (using password: NO) in /home/www/web180/html/shout.php on line 83

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/www/web180/html/shout.php on line 83

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web180/html/shout.php:2) in /home/www/web180/html/shout.php on line 92
 
Hast du denn die richtigen Daten bei der Verbindung angegeben?
Und der letzte Fehler kommt, weil du schon Daten ausgegeben hast. Der Code, den Gumbo gepostet hat, der muss ganz an den Anfang.
Poste bitte nochmal den kompletten Code.
 
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php

    if( !empty($_POST) ) {

        $handle = new mysqli('localhost', 'xxx', 'xxx', 'xxx');
        $query = '
            INSERT INTO
                    `shoutbox`
              SET
                    `name` = "'.mysql_real_escape_string($_POST['name']).'",
                    `text` = "'.mysql_real_escape_string($_POST['text']).'",
                    `mail` = "'.mysql_real_escape_string($_POST['mail']).'",
                    `time` = "'.time().'"
            ';
        $result = $handle->query($query);
        if( !$result ) {
            echo 'Es gab einen Datenbankfehler beim Ausführen der Abfrage <pre>'.htmlspecialchars($query).'</pre>';
            echo mysqli_error();
            exit;
        }
        header('Location: '.$_SERVER['REQUEST_URI'], true, 302);
        exit;

    }

?>



	


	<body>
	
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
 

		

			<fieldset>

				<legend>Shoutbox</legend>
				<span style="display:block;font: 0.6em/1.2em sans;width:150px;height:300px;background:#fefefe;">
				<?php
include('db_fns.php');
$handle = db_connect();
$query = "SELECT text FROM shoutbox";
$result = $handle->query($query);

while ($shout = $result->fetch_assoc()) {
$parse_hea =$shout['text']; 
echo "$parse_hea</br>";
echo"<br>";
}
 ?>
</span>

				<label for="name" ></label>

				<input type="text"   name="name" value="Dein Name" onfocus="if (this.value == 'Dein Name') this.value = '';"  />

				<label for="text"></label>

				<input type="text" name="text" value="Dein Text" onfocus="if (this.value == 'Dein Text') this.value = '';"  />
				<label for="mail"></label>

				<input type="text" name="mail" value="Deine email" onfocus="if (this.value == 'Deine email') this.value = '';"/>

				

			  <input type="submit" value="registrieren" id="registrieren" />

			</fieldset>

		</form>


		

	</body>

</html>

fehler ist immernoch da
 
Probier mal Folgendes:
PHP:
<?php

	error_reporting(E_ALL);

	include 'db_fns.php';
	$mysqli = new mysqli('localhost', 'XXX', 'XXX', 'XXX');


	$errors = array();
	if( !empty($_POST) ) {

		$query = '
			INSERT INTO
			        `shoutbox`
			  SET
			        `name` = "'.mysql_real_escape_string($_POST['name']).'",
			        `text` = "'.mysql_real_escape_string($_POST['text']).'",
			        `mail` = "'.mysql_real_escape_string($_POST['mail']).'",
			        `time` = "'.time().'"
			';
		$result = $mysqli->query($query);
		if( !$result ) {
			$errors[] = htmlspecialchars($mysqli->error()).':<pre>'.htmlspecialchars($query).'</pre>';
		}
		if( empty($errors) ) {
			header('Location: '.$_SERVER['REQUEST_URI'], true, 302);
			exit;
		}
	}
	header('Content-Type: application/xhtml+xml');

?>
<!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>
<h1>Shoutbox</h1>
<?php

	if( !empty($errors) ) {
		echo '<div class="note error"><ul>';
		foreach( $errors as $error ) {
			echo '<li>'.$error.'</li>';
		}
		echo '</ul></div>';
	} else {

		$query = '
			SELECT
			        `text`
			  FROM
			        `shoutbox`
			';
		$result = $mysqli->query($query); 
		while( $row = $result->fetch_assoc() ) {
			echo '<div class="entry">';
			echo htmlspecialchars($row['text']);
			echo '</div>';
		}

?>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
	<p><label for="name">Name</label><input type="text" id="name" name="name" /></p>
	<p><label for="text">Nachricht</label><input type="text" name="text" id="text" /></p>
	<p><label for="mail">E-Mail</label><input type="text" name="mail" id="mail" /></p>
	<p><input type="submit" /></p>
</form>
<?php

	}

?>
</body> 
</html>
 
Entschuldige, ich habe vergessen den Namensraum zu deklarieren. Füge mal folgendes Attribut zu dem html-Tag hinzu:
HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
 

Neue Beiträge

Zurück