| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

13-03-2009, 15:49
|
|
Earl of Green
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Beiträge: 81
|
|
Array aus Funktion zurückgeben
Hallo, hab wiedermal nen Hänger.
Meine Funktion gibt das Array nicht zurück. Wer hat Lust mal drüber zu schauen?
Die Funktion:
PHP-Code:
<?php
function checkinput($wg_seite, $inputarr_darf0, $inputarr_nicht0) {
// Kontrolliert ob Feld leer war und wenn ja, registriert eine errmsg
$errmsg = array();
foreach ($inputarr_nicht0 as $key => $value) {
if ($value == "" || $value == NULL){
$errmsg[] = "Bitte Feld ''" . $key . "'' ausfüllen!<br>";
}
}
if (isset($errmsg)) {
$_SESSION["errmsg"] = $errmsg;
$_SESSION["name"] = $_POST[name];
$_SESSION["email"] = $_POST[email];
$_SESSION["homepage"] = $_POST[homepage];
$_SESSION["wohnort"] = $_POST[wohnort];
$_SESSION["text"] = $_POST[text];
echo" <meta http-equiv='refresh' content='0; URL=$wg_seite'>";
exit;
}
// Wenn keine leeren Felder, dann gehts hier unten weiter
// ============================================================================================
// Macht aus beiden Arrays (darf0 und nicht0) EIN Array mit Namen $checkeddinput
$checkedinput = array();
foreach ($inputarr_nicht0 as $key => $value) {
$checkedinput[$key] = htmlspecialchars($value);
}
foreach ($inputarr_darf0 as $key => $value) {
$checkedinput[$key] = htmlspecialchars($value);
}
// ============================================================================================
return $checkedinput;
} // Ende checkedinput()
?>
Auffangen der Funktion hier:
PHP-Code:
$inputarray = array();
$inputarray = checkinput("gaestebucheintrag.php", $inputarr_darf0, $inputarr_nicht0);
Ich habe aber leider kein "inputarray" - wo könnte es hängen?
Erstmal Danke vorab - Stefan
|

13-03-2009, 16:15
|
|
pascal007
Registrierter Benutzer
|
|
Registriert seit: Jul 2006
Beiträge: 255
|
|
Wie meinst du das: kein Inputarray? Ist es leer, nicht vorhanden... die Keys zwar vorhanden aber kein Value...
|

13-03-2009, 16:22
|
|
Earl of Green
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Beiträge: 81
|
|
berechtigte Frage. Ich hab keine Ahnung!
Wenn ich mir den ausgeführten Quelltext anschaue, dann sieht das so aus, als würde alles nach der Funktion nicht mehr ausgeführt (also dort, wo die Funktion aufgefangen wird). Er gibt aber keinen Fehler zurück. Und wenn ich versuche das Array in eine Session zu packen und mit foreach auszulesen, dann kommt ein Fehler in foreach, dass ein invalid argument probleme macht - was (wovon ich ausgehe) an dem nicht existenten Array liegt..
|

13-03-2009, 16:26
|
|
pascal007
Registrierter Benutzer
|
|
Registriert seit: Jul 2006
Beiträge: 255
|
|
Gebe es mal mit
PHP-Code:
echo"<pre>"; print_r($das_array); echo"</pre>";
aus. Am besten vorher und nachher.
Geändert von pascal007 (13-03-2009 um 16:31 Uhr)
|

13-03-2009, 16:31
|
|
Earl of Green
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Beiträge: 81
|
|
nothing
|

13-03-2009, 16:42
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Und error_reporting auf E_ALL und display_errors auf on ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

13-03-2009, 16:45
|
|
Earl of Green
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Beiträge: 81
|
|
Ja,
ich hab das Gefühl, in der Function ist etwas falsch ist. Etwas dass keinen Fehler erzeugt aber trotzdem die Funktion vor Beendigung verlässt.
Oder es ist etwas falsch beim return-Wert...
|

13-03-2009, 16:49
|
|
pascal007
Registrierter Benutzer
|
|
Registriert seit: Jul 2006
Beiträge: 255
|
|
Mach doch mal ein paar Ausgaben und schau was wann passiert... mit meiner Methode print_r() und all deinen Arrays wie $checkedinput vor dem Verlassen der Funktion beim Schreiben etc.
|

13-03-2009, 16:52
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
var_dump eignet sich manchmal noch ein bisschen besser zum Debuggen als print_r - weil es einem auch den Typ von Variablen mit anzeigt; kann insb. bei unerwarteten false-Werten interessant sein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

13-03-2009, 16:53
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Ist ja klar, denn:
PHP-Code:
// oben deklarierst du:
$errmsg = array();
...
// und dann prüfst du mit:
if (isset($errmsg))
{
...
exit // <= nur bis hier und nicht weiter
}
d.h. alles was danach kommt wird nie abgearbeitet.
|

13-03-2009, 19:17
|
|
Earl of Green
Registrierter Benutzer
|
|
Registriert seit: Nov 2004
Beiträge: 81
|
|
Zitat:
Original geschrieben von asp2php
Ist ja klar, denn:
PHP-Code:
// oben deklarierst du:
$errmsg = array();
...
// und dann prüfst du mit:
if (isset($errmsg))
{
...
exit // <= nur bis hier und nicht weiter
}
d.h. alles was danach kommt wird nie abgearbeitet.
|
Danke für die vielen Antworten.
Zu oben:
das exit kommt ja nur, wenn der if benutzt wird. Wenn kein Fehler da ist, dann geht er ja nichts ins if rein.
Ich habe versucht Ausgaben in die Funktion zu machen, aber ich bekomm nix raus...
|

13-03-2009, 19:30
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
|
das exit kommt ja nur, wenn der if benutzt wird. Wenn kein Fehler da ist, dann geht er ja nichts ins if rein.
|
Works as designed...
Du suchst wahrscheinlich empty!
|

13-03-2009, 19:32
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
denkfehler! du setzt das array mittels
PHP-Code:
$errmsg = array();
und überprüfst dann, ob es gesetzt wurde
PHP-Code:
if (isset($errmsg))
das bedeutet, dass deine bedingung wahr ist! arbeite statt dessen mit
PHP-Code:
if (!empty($errmsg))
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

13-03-2009, 19:39
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Zitat:
Original geschrieben von Earl of Green
Zu oben:
das exit kommt ja nur, wenn der if benutzt wird. Wenn kein Fehler da ist, dann geht er ja nichts ins if rein.
|
Dein Code geht aber IMMER in if rein!
Lösung: s. Peters Beitrag.
|

13-03-2009, 19:41
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
PHP-Code:
$errmsg = array();
//...
if (isset($errmsg)) {
//...
echo" <meta http-equiv='refresh' content='0; URL=$wg_seite'>";
exit;
Erzähle niemandem, dass das Script NICHTS ausgegeben hätte.
Musst halt mal in den HTML-Quältext schauen, den du an den Browser gesendet hast.
Natürlich ist das etwas schwierig, wenn dem Browser per Meta-Refresh eine sofortige Weiterleitung befohlen wurde ...
Ein
Code:
header('Content-Type: text/plain');
ganz am Anfang des Scripts hätte die Ausgaben (ohne weiterzuleiten) ebenfalls sichtbar gemacht.
So eine hohe Kunst ist Debugging-by-Echo nicht.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
Geändert von fireweasel (13-03-2009 um 19:55 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|