Shoutbox - Ausgabe

Hallo,

hm ich hab es jetzt so gemacht:
PHP:
if(mysql_affected_rows())  
{
   $nick = trim(strip_tags(mysql_real_escape_string($_POST["username"])));
   $message = trim(strip_tags(mysql_real_escape_string($_POST["nachricht"])));
   $result = mysql_query("INSERT INTO `shoutbox` (`username`, `nachricht`) 
                                      VALUES ('$nick','$message');");
   if (mysql_affected_rows($result))
   {
     echo 'Erfolgreich eingetragen';
   }

}


Aber es kommt wieder eine Fehlermeldung:
"Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in C:\Programme\xampp\htdocs\shoutbox\eintraege.php on line 37"

Langsam verzweifel ich. ;)

Grüße

Pasi
 
Hallo lass doch das mysql_affected_rows einfach weg oder lies in der Dokumentation bzw. Manual nach. Er erwartet die Verbindungskennung und nicht das query-Ergebnis... Ich habe mich doch berichtigt.
Und bei den Funktionen verweise ich nochmals auf das Manual da steht alles Schwarz auf weiß ^^

mfg
 
Hallo,

aber so:
PHP:
<?PHP 
if($_POST["Send"] == "Send")  
{
  $result = mysql_query("INSERT INTO shoutbox (username, nachricht) VALUES ('".$_POST["username"]."', '".$_POST["nachricht"]."')");

}

funktioniert es nicht. Es werden die Einträge immer noch "verspätet" angezeigt.
Ist das denn so schwer. Den Tag mysql_affected_rows brauch ich ja gar nicht, weil ich nicht wissen will, wie viel abeschickt wurde.

Pasi
 
PHP:
<?PHP 
if($_POST["Send"] == "Send")  
{
  $result = mysql_query("INSERT INTO shoutbox (username, nachricht) VALUES ('".$_POST["username"]."', '".$_POST["nachricht"]."')");

}
Du führst das Query ja auch gar nicht aus, du ordnest es nur zu!
PHP:
<?PHP 
if($_POST["Send"] == "Send")  
{
  $result = mysql_query("INSERT INTO shoutbox (username, nachricht) VALUES ('".$_POST["username"]."', '".$_POST["nachricht"]."')");
  if(!$result) echo $mysql_error();

}

Probier es mal so.
 
Ich bekomm keinen Fehler angezeigt und der Fehler bleibt weiter bestehen.
Eigentlich will ich doch nur, dass der Eintrag SOFORT angezeigt wird.
Was meinst du denn mit einem Query? Ist das der if-Tag?


Pasi
 
Zuletzt bearbeitet von einem Moderator:
PHP:
$result = mysql_query("xx");
Dies weist den mysql_query nur $result zu! Es wird aber noch nicht verarbeitet.
 
Boah Junge drück dich doch gleich richtig aus was du brauchst ist ein header()

z.b. wenn deine Seite wo die shotbox angezeigt wird, shoutbox.php heißt.
PHP:
query ....
header("Location: http://www.deinedomain.de/shoutbox.php);

Falls Fehler kommt:
ob_start(); ---> am Anfang der Datei
ob_end_flush(); --> am Ende der Datei

einfügen

mfg
 
PHP:
<?PHP
  include("dbconnect.php");
?>
<?php

ob_start();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Shoutbox</title>

</head>
<body>
<?
    $abfrage = "SELECT username,nachricht FROM shoutbox ORDER BY id DESC";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    echo "<p>\n";
    echo "Autor: ";
    echo $row->username;
    echo "<br />\n";
    echo "Nachricht: <br />\n";
    echo $row->nachricht;
    echo "<br />\n";
    echo "-----------------------------------------------------<br />\n";
    echo "</p>\n";

    }
?>

<PHP
header("Location: http://localhost/shoutbox/eintraege.php");  

?>

<?PHP 
if($_POST["Send"] == "Send")  
{
  $result = mysql_query("INSERT INTO shoutbox (username, nachricht) VALUES ('".$_POST["username"]."', '".$_POST["nachricht"]."')");
  if(!$result) echo $mysql_error();

} 
?>


<form method="POST" action="<?=$PHP_SELF?>">
Name: <input type="text" name="username" value="Dein Name" size="20"><br>
Nachricht: <input type="text" name="nachricht" value="Deine Nachricht" size="20"><br>
<br>
<input type="submit" name="Send" value="Send">
</form> 
</body>
</html>
<?
mysql_close();
?>

Entschuldigung wenn du wegen mir genervt bin, aber ich möchte halt dieses kleine Problem mal lösen. Wie oben gesehen, habe ich alles eingefügt und das Manual über header() gelesen. In dem steht, dass der header() vor dem Query stehen muss. Aber ich bekomme trotzdem den Eintrag verspätet angezeigt.

Pasi
 
Ich bin nicht genervt :p aber wie du siehst haben alle verstanden das GARNIX eingetragen wird. Der Eintrag kommt verspätet weil es kein refresh gibt, bzw. du die Ausgabe vor dem Eintragen machst.
Also mach mal so:
PHP:
<?PHP
  ob_start();
  include("dbconnect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Shoutbox</title>

</head>
<body>
<?php
    
    // Eintragen
if($_POST["Send"] == "Send")  
{
   $nick = trim(strip_tags(mysql_real_escape_string($_POST["username"])));
   $message = trim(strip_tags(mysql_real_escape_string($_POST["nachricht"])));
   $result = mysql_query("INSERT INTO `shoutbox` (`username`, `nachricht`) 
                                      VALUES ('$nick','$message');") or die(mysql_error());
   header("location: http://localhost/shoutbox/eintraege.php"); // <-- richtigen pfad 
} 
    // Ausgeben
    $abfrage = "SELECT `username`,`nachricht` FROM `shoutbox` ORDER BY `id` DESC;";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
     echo "<p>\n";
     echo "Autor: ";
     echo $row->username;
     echo "<br />\n";
     echo "Nachricht: <br />\n";
     echo $row->nachricht;
     echo "<br />\n";
     echo "-----------------------------------------------------<br />\n";
     echo "</p>\n";
    }
?>
<form method="POST" action="<?=$PHP_SELF?>">
Name: <input type="text" name="username" value="Dein Name" size="20"><br>
Nachricht: <input type="text" name="nachricht" value="Deine Nachricht" size="20"><br>
<br>
<input type="submit" name="Send" value="Send">
</form> 
</body>
</html>
<?php
mysql_close();
ob_end_flush();
?>

mfg
 
Zuletzt bearbeitet:
Hi,

danke das du mir so großartig geholfen hast. Es hat nun mit deiner Variante funktioniert.
Ich möchte nun nochmal deiene eingefügten Schritte nachvollziehen.
Du hast eingefügt:
PHP:
ob_start ()

In dem Manual, von dir verlinkt, steht dazu "ob_start -- Einschalten der Pufferung von Ausgaben". Ist damit gemeint, dass in dem festelegte Berich, aslo von ob_start () bis ob_end_flush()alles nach einem Post aktualliesiert wird?
Und wozu ist der
PHP:
header(Location :"...")
da? Im Manual steht dazu:
"Es wird nicht nur der Header an den Browser geschickt, sondern auch ein REDIRECT (302) Statuscode, wenn nicht bereits ein 3xx Statuscode gesendet wurde."
Was ist denn damit gemeint?


Entschuldigung für Umstände, die ich dir eingebracht hab.

Pasi
 

Neue Beiträge

Zurück