php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2004, 13:30  
Gast
 
Beiträge: n/a
Standard in_array() findet nix

Tach'auch

Ich habe folgende Situation: Ich habe ein Textfile, in dem diverse "Datensätze" vorhanden sind, jeweils durch einen Zeilen-Umbruch getrennt:

Code:
Müller
Meier
Moser
Ich lese die einzelnen Namen aus und packe sie in einen Array und zwar so:

PHP-Code:
<?php
$text 
file("./files/auth/".$file.".txt");
        for(
$i=0$i<count($text); $i++)
        {
            
$liste[] = $text[$i];
       }
?>
Nun lese ich eine Namensliste von einem anderen Ort aus, zu jedem Namen gehört eine Checkbox. Wenn der betreffende Name im Array vorhanden ist, wird die Checkbox angehakt, wenn nicht, bleibt sie leer:

PHP-Code:
<?php
if (in_array($name,$liste)){
        echo 
"<input type=\"checkbox\" name=liste[] value=".$name[$i]." checked />" ;
      }
          else{
        echo 
"<input type=\"checkbox\" name=liste[] value=".$name[$i]."/>" ;
      }
?>
Jedoch bleiben mir alle Boxen leer, auch wenn der Name im Array vorhanden ist (nachgeprüft via Ausgabe des Arrays)...was mach ich falsch?

Danke schon im Voraus
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.12.2004, 13:43  
Gast
 
Beiträge: n/a
Standard

Was sagen print_r($name) und print_r($liste) vor der ersten Zeile des zweiten Scripts?

Und btw, hier fehlt noch die Initialisierung von $liste, sollte besser so aussehen:

PHP-Code:
<?php 
$liste 
= array();
$text file("./files/auth/".$file.".txt"); 
        for(
$i=0$i<count($text); $i++) 
        { 
            
$liste[] = $text[$i]; 
       } 
?>
 
Alt 27.12.2004, 13:56  
Gast
 
Beiträge: n/a
Standard

$liste gibt noch nichts aus - wurde ja noch gar nicht abgefüllt.

$name gibt mir die korrekte Liste aus...

Wenn ich nach dem Abfüllen von $liste print_r mache, wird mir die korrekte Liste ausgegeben...also muss der Fehler irgendwo beim in_array passieren...
 
Alt 27.12.2004, 14:04  
Gast
 
Beiträge: n/a
Standard

PHp-Version? in_array() funktioniert mit Needle als Mixed erst ab 4.2.0

Ausserdem verstehe ich das nicht, wenn du

PHP-Code:
<?php 
print_r
($name);
print_r($liste);
if (
in_array($name,$liste)){ 
        echo 
"<input type=\"checkbox\" name=liste[] value=".$name[$i]." checked />" 
      } 
...
?>
schreibst, wieso ist dann $liste zu diesem Zeitpunkt "noch nicht abgefüllt"? Und wie soll das sonst funktionieren?
 
Alt 27.12.2004, 14:04  
Erfahrener Benutzer
 
Registriert seit: 14.01.2004
Beiträge: 2.543
fantast
fantast eine Nachricht über ICQ schicken
Standard

was genau die funktion file() macht is dir aber schon bewusst oder ? weil dann verstehe ich nich, wieso du das ganze nochmal umbettest. davon abgesehen heisst es checked="checke" zumindest bei xhtml. was is $name und wo kommt es her ?
__________________
Was ist validität?
fantast ist offline  
Alt 27.12.2004, 14:22  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

file() liefert die Zeilen der Datei mit Zeilenumbruch am Ende, dementsprechend können die Einträge in dem Array nur gefunden werden, wenn sie auch einen Zeilenumbruch am Ende haben
__________________
mod = master of disaster
Waq ist offline  
Alt 28.12.2004, 08:35  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von lev
PHp-Version? in_array() funktioniert mit Needle als Mixed erst ab 4.2.0
4.3.8

Zitat:
Zitat von lev
[...]wieso ist dann $liste zu diesem Zeitpunkt "noch nicht abgefüllt"? Und wie soll das sonst funktionieren?
Whoooooooos, sorry, mein Fehler...Hab'beim falschen Script geschaut Wenn die Variablen vor der ersten Zeile des zweiten Scripts ausgebe, sind die beiden Arrays sauber gefüllt
 
Alt 28.12.2004, 08:48  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von fantast
was genau die funktion file() macht is dir aber schon bewusst oder ? weil dann verstehe ich nich, wieso du das ganze nochmal umbettest. davon abgesehen heisst es checked="checke" zumindest bei xhtml. was is $name und wo kommt es her ?
Ist sehr gut möglich, dass ich einen Logikfehler mache, da ich mich noch kaum mit PHP auskenne bzw. Dinge viel komplizierter mache, als sie eigentlich wären.

Ich muss folgendes tun:

1. Text-File auslesen, dort stehen einige Namen drin
2. Mit einer Namensliste vergleichen.
3. Alle Namen der Namensliste durchgehen. Wenn der Name im Textfile steht, Checkbox beim Namen anhaken.

$name = Liste ALLER Namen
$liste = Liste der Namen im Textfile

Beide Variablen werden korrekt abgefüllt.

checked="checked" geht natürlich auch...aber einfach nur checked reicht auch (Hab's ausprobiert).
 
Alt 28.12.2004, 08:51  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du hast aber waqs beitrag gelesen, oder?
imported_Ben ist offline  
Alt 28.12.2004, 08:58  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Waq
file() liefert die Zeilen der Datei mit Zeilenumbruch am Ende, dementsprechend können die Einträge in dem Array nur gefunden werden, wenn sie auch einen Zeilenumbruch am Ende haben
Oh...d.h, ich muss nach $name[$i] + Zeilenumbruch suchen?!
Ok...jetzt gilt es nur noch rauszufinden, wie ich das im in_array machen kann. Danke

Edit: @ ben: Ja Blieb nur gerade bei deinem Seebeben-Thread hängen und bin dort auch g'rad am Post schreiben...
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.