dedlfix: Funktion für ein Array

Beitrag lesen

nochmal re

Du hast aber ein generelles Ablauf-Problem. Du müsstest die Slahes gleich bei der Eingabe der Daten wegwerfen und sie nicht erst bis zur Datenbank gelangen lassen.

Das ist ja der Punkt- das wollte ich eigentlich, aber da wurde es richtig "verrückt". Ich versuchs mal kurz zu machen.

Das ist die Funktion in der Formulardatei:

function array_stripslashes(&$var) {

Die kommt mir bekannt vor :-)

name="name" value="<?php if (isset($_POST['name'])) echo htmlentities($_REQUEST['name']); ?>"

Mix doch mal nicht $_POST und $_REQUEST. Nimm nur eines von beiden. Wenn du weißt, dass deine Daten immer mit der $_POST kommen, nimm dies. Wenn sie mal so und mal mit $_GET kommen, nimm $_REQUEST.

Aber dann wird meine switch-Schleife plötzlich nicht mehr durchlaufen. Ich hab schon alle möglichen Varianten probiert, aber mit diesem Zusatz von $_POST in der Funktion wills irgendwie nicht funktionuckeln.

Nach einem Probier-Schritt ist wichtig, zu ergründen, warum hat das jetzt geklappt oder warum zum Kuckuck ging das eben nicht. Dabei helfen Kontroll-Ausgaben von Variablen und deren Werten.

Ich hab mir dazu diese Funktion geschrieben:

  
/**  
 * returns debug presentation of $what  
 *  
 * @param mixed $what the delinquent  
 * @param boolean $vardump use var_dump instaed of print_r  
 * @param boolean $noPre don't use <pre> surrounding output  
 * @param boolean $htmlchars convert special html chars to entities  
 * @return string  
 */  
function dbg($what, $vardump = false, $noPre = false, $htmlchars = false) {  
  ob_start();  
    if ($vardump)  
      var_dump($what);  
    else  
      print_r($what);  
  $ob = ob_get_contents();  
  ob_end_clean();  
  
  $result = $htmlchars ? htmlspecialchars($ob) : $ob;  
  
  if (!$noPre)  
    $result = "<pre>\n$result</pre>\n";  
  
  echo $result;  
} //dbg  

Die beiden wichtigsten Aufruf-Varianten sind.

// Ausgabe der Variable mit print_r innerhalb von <pre> </pre>
dbg($variable);

// Ausgabe mit var_dump() statt print_r()
dbg($variable, 1);

Die zweite Variante hat den Vorteil, dass der Typ der Variable angezeigt wird, ist aber bei Array- und Objekt-Ausgaben etwas unübersichtlicher anzusehen als print_r()

Dann folgen diverse Abfragen und der Eintrag in die Datenbank:

$send = "";
    if(isset($_POST['send'])) {
        $send = key($_POST['send']);
    }

ein Aufruf von

dbg($_POST['send'], 1);

würde dir beispielsweise zeigen, was mit $_POST['send'] genau los ist. Welchen Typ hat es, welchen Wert hat es. Wenn du das weißt, und einen zusätzlichen Blick ins PHP-Handbuch in die Parameterliste von key() wirfst, weißt du auch schon, ob du die Funktion key() hier mit dem richtigen Parameter (ein Array) gefüttert hast oder nicht.

Und dann kannst du weitere Schritte einleiten...

dedlfix