Archief - PHP: Functie voor controle van veel invoervakjes?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

RedNex

Legacy Member
Hallo,

Ik ben bezig aan een formuliertje met nogal wat invoervakken. Het is eigenlijk een soort zoekveld. Men geeft in het formulier in wat men over de betreffende persoon weet (of denkt te weten) en dan wordt er in de MySql database gezocht naar personen die die dingen achter zijn naam heeft staan. Maar indien er niets ingegeven wordt mag er natuurlijk niets gedaan worden.

Ik kan dit doen met een "isset" en "empty" functie. Maar ik heb geen zin om voor ieder vakje apart een "if" functie te schrijven om te controleren of het betreffende vakje leeg is of niet.

Nu mijn vraag: Bestaat er geen functie om dit op een kortere manier te doen dan zo een uitgebreide "if"? Eentje dat bijvoorbeeld de waardes van de ingevulde vakjes in variabelen steekt en de rest negeert ofzo.

Moest ik niet duidelijk zijn met mijn uitleg mag je dat ook posten.
Ik hoop op een oplossing of een alternatieve oplossing voor mij probleem.

Groetjes, Red

killgore

Legacy Member
extract($_POST); ???

je had nog een iets exactere waar je $_POST niet meer moest meegeven, maar die dit gewoon voor alle gpc vars deed, maar em kan me niet tebinnen schieten :p.

let wel: lege velden worden hierbij niet genegeerd, dit zal een lege var worden.

Maar mits enig werk kan je zelf een "extract" functie schrijven die niet enkel op isset werkt, maar ook op empty ;).

servi

Legacy Member
inderdaad je kan bijvoorbeeld ook zelf de functie maken


PHP:
$postVariabelenNamen = Array('naam','email','postcode','straat','huisnummer');

$postVars = getVariabelen($postVariabelenNamen,-1);



function getVariabelen($namen,$default='') {
   $vars = Array('');
   for ($i = 0; $i < count($namen); $i++ ) {
       $vars[$namen[$i]] = (empty($_REQUEST[$namen[$i]])?$default:$_REQUEST[$namen[$i]]);
  }

  return $vars;
}

function getVariabelen($namen,$default='') {
   $vars = Array('');
   for ($i = 0; $i < count($namen); $i++ ) {
       eval('global $'."$namen[$i];");
       eval ('$'."$namen[$i]".' = (empty($_REQUEST[$namen[$i]])?$default:$_REQUEST[$namen[$i]]);');
  }

}

en zo kan je alle vars in 1 keer opvragen.

Bij de eerste getVariabelen krijg je dan :
$postVars['naam'] = 'Servi';
bij de tweede getVariabelen krijg je variabelen in volgende variabelen :
$naam = 'Servi';

RedNex

Legacy Member
Nog 1 ding:

ik heb nu in al mijn variabelen een waarde zitten. Ofwel de waarde die ingevuld werd, ofwel een lege waarde. Ik vind het redelijk moeilijk om nu mijn sql query te vormen.

select * from users where `id` = $id and `clantag` = $clantag and `nickname` = $nickname and `naam` = $naam and `voornaam` = $voornaam and `status` = $status;

dit zou gaan als alle variabelen ingevuld waren, maar wat met de lege? Toch nog een controle uitvoeren of de var leeg is?

Mulle

Legacy Member
Misschien kan je gebruik maken van een class. Ik heb zelf veel formulieren nodig voor mijn site en ik vind het dus enrom vervelend voor dit te maken, zeker de controles. Daarom gebruik is de FormHandler van deze site: http://www.formhandler.net/FH3/

RedNex

Legacy Member
ja, ik zal me eens uitzoeken wat die formhandler net is, misschien juist waar ik naar op zoek ben.

Andere oplossingen ivm de sql query zijn nog altijd welkom

Grtz, Red

RedNex

Legacy Member
Dit kan ik gebruiken, maar alleen bij de invoervakjes die een string zijn. Ik heb ook invoervakjes waar een INT in moet komen en dan werkt de %-joker niet meer. Of ben ik mis?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan