Sven Rautenberg: MySQL, keine datensätzte hinzugefügt

Beitrag lesen

Moin!

ich habe ein php protokol das so aussieht:

Du hast da einige Eigenheiten eingebaut, die ich an deiner Stelle lieber ändern würde.

if(isset($_POST['text']))
  {
    if ($_POST['text'] == null)

Wenn ein String leer ist, dann ist er nicht NULL, sondern "".

{
    echo "Name fehlt.";
    }//
    else
    {
      if(isset($_POST['textarea']))
      {
        $Von = $_POST['text'];
        $Vom = date("Y-m-d");
        $UnverschluesselteNachricht = $_POST['textarea'];
        $lang = strlen($UnverschluesselteNachricht);
        $NachrichtenteilCode = false;

Wenn du $NachrichtenteilCode in der Schleife als Array verwenden willst, solltest du es hier mit array() vorbelegen, dann hast du ein leeres Array.

for ($z=0; $z<$lang; $z++)
        {
          $Nachrichtenteil = substr($UnverschluesselteNachricht, $z);
          $Nachrichtenteil = ord($Nachrichtenteil);
          $Code = "B";
          $Code = ord($Code);
          $NachrichtenteilCode[$z] = $Nachrichtenteil+$Code;
        }
        if ($NachrichtenteilCode == false)

Und hier kannst du dann mit count($NachrichtenteilCode) == 0 prüfen, ob es immer noch leer ist.

{
        echo "Keine Nachricht eingegeben.";
        }//if ($NachrichtenteilCode == false)
        else
        {
          $anzahl = count($NachrichtenteilCode);
          $NachrichtCodiert ="";
          for ($z=0; $z<$anzahl; $z++)
          {
            $NachrichtCodiert .= $NachrichtenteilCode[$z];
          }
          $Kennung = mysql_connect("localhost", "coder", "coder");
          mysql_query("use codiert", $Kennung);
          $sql = 'INSERT INTO nachrichten VALUES("'.$Von.'", '.$Vom.'", '.$NachrichtCodiert.'")';
          mysql_query($sql, $Kennung);

Und zu deinem konkreten Problem: Wenn der SQL-Query fehlschlägt, solltest du an dieser Stelle mysql_error() abfragen und ausgeben - dann wirst du sehen, was die Datenbank zu meckern hat, sofern sie was zu meckern hat (wenn sie nicht meckert, dann würde mich das sehr wundern).

echo "Neuer Eintrag";
        }
      }// if(isset($_POST['textarea']))
    }//else
  }// if(@$_POST['submit']<>null)

Dein letzter Kommentare zu der schließenden Klammern stimmt nicht. :)

  

> - Warum mach MySQL aus dem CHAR ein VARCHAR und wo ist da das problem?  
  
MySQL optimiert die angelegte Tabellen nach gewissen Kriterien. CHAR-Felder werden meist zu VARCHAR-Feldern optimiert, wenn sich in der Tabelle noch weitere variable Felder befinden - es sei denn, du legst ein Feld CHAR(3) oder kleiner an. Alle Arten von text und blob sind variable Felder, genauso wie varchar selbst. Du kannst also niemals char(>=4) und varchar in der gleichen Tabelle benutzen.  
  
 - Sven Rautenberg