Archiv verlassen und diese Seite im Standarddesign anzeigen : Warning: Invalid argument supplied for foreach() in
also mein problem:
habe eine suchabfrage die auch prima läuft mittlerweile. NUR:
wenn nichts gefunden wird möchte ich gerne eine meldung ausgeben.
das hab ich mit einer if - else schon geschafft, nur wird auch die oben genannte warnung ausgegeben.
wie bekommt man die weg? kann man die irgendwie "ausschalten"?
wenn nicht, gibt es andere möglichkeiten so eine ausgabe zu machen?
lg
sibl
mrhappiness 17-06-2004, 17:12 der fehler liegt in zeile 42...
liegt daran das das array für foreach($deinarray as daten) leer ist, vorher per if() prüfen ob das array gefüllt ist, sonst foreach nicht ausführen.
schlimmerfinger 17-06-2004, 18:00 Original geschrieben von mrhappiness der fehler liegt in zeile 42... Ja sieht danach aus. *lol*Original geschrieben von marc75
liegt daran das das array für foreach($deinarray as daten) leer ist, vorher per if() prüfen ob das array gefüllt ist, sonst foreach nicht ausführen. Ich glaube eher das hängt damit zusammen, dass das übergebene Argument kein Array() ist.Original geschrieben von schnibl
habe eine suchabfrage die auch prima läuft mittlerweile.Bis auf eine Kleinigkeit.
Original geschrieben von schnibl
NUR:
wenn nichts gefunden wird möchte ich gerne eine meldung ausgeben.
das hab ich mit einer if - else schon geschafft, nur wird auch die oben genannte warnung ausgegeben.
wie bekommt man die weg? kann man die irgendwie "ausschalten"?
wenn nicht, gibt es andere möglichkeiten so eine ausgabe zu machen?:dontknow:
Quelltext?
cheers
Th3_LuN4tIc 17-06-2004, 18:32 wenn der fehler kommt wenn es keine resultate gab also wenn das normal ist versuchs mit @foreach($myvar)
Original geschrieben von Th3_LuN4tIc
wenn der fehler kommt wenn es keine resultate gab also wenn das normal ist versuchs mit @foreach($myvar)
ja genau mach überall ein @ vor, um die Fehlermeldungen zu unterdrücken.
was für eine blöde Idee, wie wärs mit sauberen proggen.
@schlimmerfinger
Ich glaube eher das hängt damit zusammen, dass das übergebene Argument kein Array() ist.
auch möglich,
da der fehler angeblich nur Auftritt wenn nix gefunden wurde, denke ich mal das die arrayvar erst garnicht erstellt wurde.
Weil ->keine Daten gefunden->kein array erstellt.
ok also hier der quelltext:
von suchen.php
<?
if (isset($_GET["suchen"])) {
$doc = domxml_open_file("../data/news.xml");
$xsldoc = domxml_xslt_stylesheet_file("../data/news.xsl");
$context = $doc->xpath_new_context();
$path = "/news/item/name[contains(.,'" . $_GET["suchen"] . "')]/..";
/*
echo $path;
*/
$nodes = $context->xpath_eval($path);
$newdoc = domxml_new_doc ("1.0");
$root = $newdoc->add_root ("searchResult");
foreach ($nodes->nodeset as $x) {
$name = $context->xpath_eval("name",$x);
$info = $context->xpath_eval("info",$x);
$preis = $context->xpath_eval("preis",$x);
$http = $context->xpath_eval("http",$x);
$datum = $context->xpath_eval("datum",$x);
$root->append_child($x->clone_node(true));
}
}
echo "<xmp>";
echo "</xmp>";
?>
in suchergebnis.php hab ich dann if else gemacht:
<?
include("suchen.php");
$xsldoc = domxml_xslt_stylesheet_file("../data/news.xsl");
if ($x){
$result = $xsldoc->process($newdoc);
print $xsldoc->result_dump_mem($result);
}
else {
print "KEIN ERGEBNIS ZU IHRER EINGABE";
}
?>
jetzt fallt es euch sicher nimma schwer den fehler zu finden oder??? *g*
lg
schnibl
jetzt fallt es euch sicher nimma schwer den fehler zu finden oder??? *g*wenn du troll noch php-tags benutzt hätts, ...
http://www.php-resource.de/manual.php?p=function.is-array
1. bin ich kein troll, wenn dann eine nuss :D
2. kann ich mit deiner antwort nix anfangen, da ANFÄNGERiN!!!
kann vielleicht jmd mit mir klartext reden und mir sagen was ich wo falsch gemacht habe? und wie ich das wieder beheben kann?
danke schon mal
:goth:
prüfe vor dem zugriff auf des array, ob es denn wirklich eins ist ...
warum soll ich dass denn jetzt machen? bei eingabe von wörtern die er auch findet, gibt es doch keine probleme.. sondern nur wenn es das wort nicht gibt..
irgendwie check ich das nich.. *seufz*
lg
schnibl
Irgendwie dacht ich, ich hätte das schon gepostet. War ich zu blöd das abzuschicken? (Wenn der Postman zweimal klingelt).Also noch ma.
Ich schliesse mich marc75 an. Der hatte die Lösung.
Der fehler liegt in suchen.php und zwar in zeile 18 nicht 42 wie fälschlicherweise von mrhappiness behauptet;)
Also ich würde sagen:
$root = $newdoc->add_root ("searchResult");
if($nodes != 0)
{
foreach($nodes.......
}
else
{
print "kein Ergebnis zu Ihrer Eingabe";
}
weil, wenn $nodes nix is , dann fehlt das argument und es kommt
Warning: Invalid argument supplied for foreach() in.
Behaupte ich jetzt einfach ma so.
Grüße Wendel
hallo
das war ja mal ein konstruktiver vorschlag.. ;)
leider hat er mir nicht viel gebracht.. es ist zwar jetzt so, dass er mir bei einer "falschen" eingabe (also wenn jmd nach etwas sucht, dass nicht im xml file ist) nicht mehr die fehlermeldung ausgibt und so anzeigt wie er soll.. aber dass passiert jetzt auch wenn er etwas finden sollte.. blöde sache..
hab schon mit $nodes = 0 usw herumprobiert aber das ging dann auch nicht...
wo liegt denn da der hund begraben? *G*
lg
schnibl
sorry passt supi. hatte nur das s bei nodes vergessen upps..
danke auf alle fälle.. ;)
lg aus wien
|