🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #1728

Re: problem z petla w petli - ARRAY

#1728
From: Jarek E.
Date: Thu, 30 Aug 2001 12:03
73 lines
3394 bytes
> Napisałem funkcje ktora powinna sprawdzac wypelnienie pol pewnej tablic w
> porónaniu z tablica wzorcowa.
>
> Dokładnie chcę osiągnąć następujący efekt.
>
>
> Mam formularz w którym pewme pola są obligatoryjne. Obligatoryjnosc
> definiuje np poprzez tablice pol wymaganych
> $POLA_WYMAGANE = array(imie,nazwisko,ulica,nip,miasto,kod);  a w funkcji
> bedzie to tablic_1.
>
> Wartosci czytane metodą np POST podstawiam pod tablica_2.
>
> Funkcja powinna mi sprawdzic czy nazwa pola formularza wystepuje w tablicy
> pol wymaganych i czy warosc tego pola jest pusta i jak spelnia warunek to
> dodac tekst do zmiennej blad.
>
> Problem iz ta funkcja spradza tylko tyle:
>
> Sprawdzam pole : imie z polem wzorcowym 0
> Blad w polu : imie
> Sprawdzam pole : imie z polem wzorcowym 1
> Sprawdzam pole : imie z polem wzorcowym 2
> Sprawdzam pole : imie z polem wzorcowym 3
> Sprawdzam pole : imie z polem wzorcowym 4
> Sprawdzam pole : imie z polem wzorcowym 5
>
> ***
> function sprawdz($tablica_1,$tablica_2)
> {
> while(list ($pole_t2, $wartosc) = each ($tablica_2)) {
>     while(list($pole_t1, $value) = each($tablica_1)) {
>
>           $blad .= "Sprawdzam pole : $pole_t2  z polem wzorcowym
> $pole_t1<BR>";   // tea linia tylko do testów
>           if ($pole_t2==$pole_t1 && $wartosc=="")
>               {
>               $blad .= "Blad w polu : $pole_t2<BR>";
>               }
>     }
> }
> return $blad;
> }
> ***
>
>

Moja propozycja:

function check($treq) {
  for(reset($treq); $key=key($treq); next($treq)) {
    if (isset($GLOBALS[$key])) {
      if (!ereg($treq[$key][0],$GLOBALS[$key]))
$errmsg.='<BR>'.$treq[$key][1];
    } else $errmsg.="<BR>Zmienna \$$key nie jest ustawiona.";  /* ten
komunikat może się przydać podczas tworzenia strony np. litrówka w  nazwie
zmiennej itp. */
  }
  if ($errmsg) $errmsg='<FONT color=red>'.$errmsg.'</FONT>';
  return $errmsg;
}

tablica $treq ma następującą strukturę:
$treq['nazwa_wymaganego_pola'][0]='wyrazenie_regularne';
$treq['nazwa_wymaganego_pola'][1]='Komunikat o bledzie w polu:
nazwa_wymaganego_pola';

np:

print(check(array('ala'=>array(0=>'ma kota',1=>'!!!Blad w polu
ALA'),'ola'=>array(0=>'nie ma',1=>'!!!Blad w polu OLA'))));

Jarek E.
Technical Details
Message-ID: <9mlaop$e0t$1@news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mail
References: <9mktlf$cio$1@news2.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mail
From: "Jarek E." <jareken@kki.net.pl>
Newsgroups: pl.comp.lang.php
Subject: Re: problem z petla w petli - ARRAY
Date: Thu, 30 Aug 2001 14:03:40 +0200
Organization: tp.internet - http://www.tpi.pl
Lines: 75
Message-ID: <9mlaop$e0t$1@news.tpi.pl>
References: <9mktlf$cio$1@news2.tpi.pl>
NNTP-Posting-Host: pb79.piotrkow.cvx.ppp.tpnet.pl
X-Trace: news.tpi.pl 999173721 14365 213.77.225.79 (30 Aug 2001 12:15:21 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: 30 Aug 2001 12:15:21 GMT
X-Notice-1: This post has been postprocessed on the news.tpi.pl server.
X-Notice-2: Subject line has been filtered and leading Odp: string removed.
X-Priority: 3
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200
X-Newsreader: Microsoft Outlook Express 5.00.2615.200
X-Subject: Odp: problem z petla w petli - ARRAY
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit