foreach Problem

Ja jetzt klappts mit deinem Script. Sorry hätte ich auch merken können.

Nun gibts die Fehlermeldung das ich das Formular nicht ausgefüllt hätte.

Seltsam, ob das an der Servereinstellung liegt. Bei mir aufm Laptop läufts..
 
Prüfe mal ob du die Daten per GET oder POST sendest.. .Da kann es manchmal zu Problemen kommen.

Außerdem würde ich prinzipiell (ab einer gewissen Größe) empfehlen, Formulardaten in Sessions zu übergeben. Damit bist Du nur durch die Datentypen eingeschränkt und kannst bequem auch Formulare über mehrere Seiten handlen....

(Bei GET ist das Limit mit 1024 Zeichen erreicht, was bei einem Beschreibungstext leicht dazu führen kann, dass die Daten abgeschnitten werden. Weiters hast Du auch Probleme mit Umlauten, Sonderzeichen etc...)
 
Gucks du hier:

PHP:
// Funktionsdateien für diese Anwendung einbinden
require_once('artikel_sc_script.php');
session_start();

do_html_header('Kategorie hinzufügen');
if (check_admin_user()) {
    if (filled_out($HTTP_POST_VARS)) {
        $catname = $HTTP_POST_VARS['catname'];
        if (insert_category($catname))
            echo "Die Kategorie '$catname' wurde in die Datenbank eingetragen.<br />";
        else
            echo "Die Kategorie '$catname' konnte nicht in die Datenbank eingetragen werden.<br />";
    } else
        echo 'Sie haben das Formular nicht ausgefüllt. Bitte versuchen Sie es noch einmal.';
    do_html_url('admin.php', 'Zurück zum Administrationsmenü');
}
else
  echo 'Sie haben keine Berechtigung für diese Seite . ';

do_html_footer();

?>

Das ist das Script welches die Funtion aufruft.

Hier das eben von dir bearbeitete:


PHP:
function filled_out($form_vars)) 
{ 
    // prüfen, ob jede Variable einen Wert hat 
    if(is_array($form_vars) { 
        foreach ($form_vars as $key => $value) { 
            if (!isset($key) || ($value == '')) 
                return FALSE; 
        } 
        return TRUE; 
    } else { 
        return FALSE; 
    } 
}

Wie gesagt hier auf meinem Rechner läuft alles perfekt, nur auf dem Server meines Anbieters nicht.
 
;) Alles klar...
Dann würd ich mal prüfen, ob die Sessions wirklich gestartet werden (mit einer Testvariable)
 
Warum sollen sie auf der Serverumgebung nicht gestartet werden, aber bei mir auf dem Localhost?

Alles andere läuft ja auch, Ware bestellen etc.




edit:

Läuft jetzt!! Das alte leidige Thema: REGISTER GLOBALS war auf on!


Must be OFF
 
Zuletzt bearbeitet:
Die Definition der Funktion ist immer noch nicht fehlerfrei.
PHP:
<?php

	function filled_out( $form_vars )
	{
		if( !is_array($form_vars) ) {
			return false;
		}
	        foreach( $form_vars as $value ) {
			if( trim($value) == '' ) {
				return false;
			}
		}
		return true;
	}

?>
 
Weil der Provider Session-Handling deaktiviert haben könnte..
Wenn sonst alles läuft, kann es das nicht sein...

Evtl. arbeitest Du auch mit Cookies für die Session. Hier können zwei Einstellungen vorliegen:
1. Wenn Dein Browser keine Cookies akzeptiert, wird die Session ID automatisch über die URL geführt
2. Werden keine Cookies akzeptiert und der Server ist nicht dafür konfiguriert, die Session ID automatisch über GET einzubinden, verlierst Du die Session bei jedem Seitenwechsel.

Aber auch das kann es theoretisch nicht sein, wenn der Rest der Sessions funktioniert..
 
BTW:
$HTTP_POST_VARS ist deprecated. Verwende stattdessen lieber $_POST bzw. $_GET oder $_REQUEST. Sonst könntest du irgendwann mal Probleme bekommen.
 
Zurück