login  Naam:   Wachtwoord: 
Registreer je!
 Forum

OR AND

Offline ITGrafix - 24/02/2006 15:21
Avatar van ITGrafixNieuw lid Beste,

Ik kom er helemaal niet meer uit! Iemand die mijn misschien tips kan geven?

  1. if($_POST['lattenbodem'] == "0" AND (strlen(trim($_POST['aantal_lattenbodems'] == "0"))) ){
  2. $error[] = 'U moet wel het aantal invullen bij lattenbodems!';
  3. }
  4. elseif($_POST['lattenbodem'] == "0" ){
  5. if(strlen(trim($_POST['aantal_handmatig'] == "0")) OR (strlen(trim($_POST['aantal_elektrisch'] == "0"))) OR (strlen(trim($_POST['aantal_niet'] == "0"))) ) {
  6. $error[] = '1';
  7. }
  8. }


Korte uitleg,

Als ik het veld aantal_lattenbodems heb ingevuld dan moet ik één van deze drie velden nog invullen aantal_handmatig OF aantal_elektrisch OF aantal_niet. Zodra ik deze alle drie heb ingevuld werkt het. Maar ik moet er maar eentje invullen. Dan moet het ook werken maar niet op deze manier.

Jullie tips zijn altijd welkom.

Bedankt iig voor jullie aandacht.

15 antwoorden

Gesponsorde links
Offline Wijnand - 24/02/2006 15:29
Avatar van Wijnand Moderator :) AND OR, dit zijn de woorden voor (My)SQL.

Je moet && of || gebruiken. && = AND en || = OR.

Offline Richard - 24/02/2006 15:30
Avatar van Richard Crew algemeen Wijnand, dat is onzin;) AND en OR werken net zo prima in PHP.
Offline ITGrafix - 24/02/2006 15:33
Avatar van ITGrafix Nieuw lid Dan werkt het als nog niet want dit heb ik namelijk al geprobeerd 
Offline Thomas - 24/02/2006 15:41
Avatar van Thomas Moderator strlen(trim($_POST[...] == "0")) lijkt me niet kloppen.

Wat je misschien beter kan doen dan die constructie is:
trim($_POST[...]) == ""

Je code wordt dan zo (denk ik ):

  1. // controleer lattenbodem
  2. if(trim($_POST['lattenbodem']) == "")
  3. {
  4. $error[] = 'U moet wel iets invullen bij lattenbodems... ofzo.';
  5. }
  6. else
  7. {
  8. // controleer aantal lattenbodems
  9. if(trim($_POST['aantal_lattenbodem']) != "")
  10. {
  11. // aantal_lattenbodem niet leeg... controleer of een van de soorten is ingevuld
  12. if(trim($_POST['aantal_handmatig']) == "" || trim($_POST['aantal_elektrisch']) == "" || trim($_POST['aantal_niet']) == "")
  13. {
  14. $error[] = "1";
  15. }
  16. }
  17. }
Offline ITGrafix - 24/02/2006 16:06
Avatar van ITGrafix Nieuw lid Nope is helemaal verkeerd 

Ik heb het nu aangepast,

  1. if($_POST['lattenbodem'] == "0" ){
  2. if(trim($_POST['aantal_handmatig'] == "0") OR trim($_POST['aantal_elektrisch'] == "0") OR trim($_POST['aantal_niet'] == "0")) {
  3. $error[] = '1';
  4. }
  5. }


lattenbodem is een checked button.

0 = wel
1 = geen.

maar ik moest nog steeds alle velden invullen
Offline Thomas - 24/02/2006 16:09 (laatste wijziging 24/02/2006 16:10)
Avatar van Thomas Moderator Een checkbox wordt niet gepost als deze niet is aangevinkt.

Dus als jij een checkbox met de naam "blaat" hebt, bestaat (na posten) $_POST['blaat'] niet als deze niet aangevinkt was.

Als het alle checkboxen zijn, dan is het misschien handiger om met isset() je formulier-velden te controleren.

trim($_POST['aantal_handmatig'] == "0") klopt trouwens nog steeds niet (de sluitingshaak van trim() staat op een verkeerde plaats).

Geef anders even het invoer-formulier erbij (de relevante velden), anders blijft het gissen hoe je controle er uit dient te zien.
Offline ITGrafix - 24/02/2006 16:29
Avatar van ITGrafix Nieuw lid HTML
  1. <table width="0%" border="0" cellspacing="1" cellpadding="1">
  2. <tr>
  3. <td width="277">Lattenbodem kiezen &gt; </td>
  4. <td width="249">Afmeting in CM </td>
  5. <td width="138">Aantal</td>
  6. </tr>
  7. <tr>
  8. <td><input type="radio" name="lattenbodem" value="0" checked="checked">
  9. Lattenbodems</td>
  10. <td><select name="afmeting_lattenbodmes" class="box">
  11. <option value="70 x 200" selected>70 x 200</option>
  12. <option value="80 x 200">80 x 200</option>
  13. <option value="80 x 210">80 x 210</option>
  14. <option value="80 x 220">80 x 220</option>
  15. <option value="90 x 200">90 x 200</option>
  16. <option value="90 x 210">90 x 210</option>
  17. <option value="90 x 220">90 x 220</option>
  18. <option value="100 x 200">100 x 200</option>
  19. <option value="100 x 210">100 x 210</option>
  20. <option value="100 x 220">100 x 220</option>
  21. </select></td>
  22. <td>&nbsp;</td>
  23. </tr>
  24. <tr>
  25. <td>Handmatig verstelbaar</td>
  26. <td>&nbsp;</td>
  27. <td><input name="aantal_handmatig" type="text" value="0" size="2"></td>
  28. </tr>
  29. <tr>
  30. <td>Elektrisch verstelbaar</td>
  31. <td>&nbsp;</td>
  32. <td><input name="aantal_elektrisch" type="text" value="0" size="2" ></td>
  33. </tr>
  34. <tr>
  35. <td>Niet verstelbaar</td>
  36. <td>&nbsp;</td>
  37. <td><input name="aantal_niet" type="text" size="2" value="0"></td>
  38. </tr>
  39. <tr>
  40. <td><input type="radio" name="lattenbodem" value="1">
  41. <b>Geen lattenbodem</b> </td>
  42. <td>&nbsp;</td>
  43. <td>&nbsp;</td>
  44. </tr>
  45. </table>


PHP
  1. /*
  2. Lattenmodem kiezen
  3. */
  4. if($_POST['lattenbodem'] == "0" ){
  5. if(trim($_POST['aantal_handmatig'] == "0") OR trim($_POST['aantal_elektrisch'] == "0") OR trim($_POST['aantal_niet'] == "0")) {
  6. $error[] = '1';
  7. }
  8. }
Offline Simon - 24/02/2006 16:32
Avatar van Simon PHP expert <input type="radio" name="lattenbodem" value="1">

dit vind ik zeer dom, stel als een persoon verkeerd drukt en het aanklikt, kan hij niet meer uitvinken, ik zou er een checkbox van maken
Offline Wijnand - 24/02/2006 16:33
Avatar van Wijnand Moderator
  1. Wijnand, dat is onzin;) AND en OR werken net zo prima in PHP.


Maar het is GEEN officiele PHP-code. Tenminste, niet "zoals het zou moeten".


En leg is duidelijk uit wat je nou wilt... ik snap op zich niet wat je wilt bereiken.
Offline dotPixel - 24/02/2006 21:53
Avatar van dotPixel PHP interesse Het verschil tussen || en OR respectievelijk && en AND zit hem in de precedentie.
Offline BigTeddy - 25/02/2006 03:43
Avatar van BigTeddy Gouden medaille

PHP gevorderde
@random
Wat jij dus zegt is dat de (wiskundige) voorrangsregels bij gebruik van (&& en AND) en (|| en OR) anders zijn. In de voorrang zit er een verschil tussen het gebruik van || en &&???

In ieder geval, als je kijkt op php.net en zoekt naar && en naar AND zul je zien dat er (zo goed als) geen code te vinden is waarin AND wordt gebruikt, daarentegen wel veel code met && in.
Offline nemesiskoen - 25/02/2006 18:46
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. if($_POST['lattenbodem'] == "0" AND (strlen(trim($_POST['aantal_lattenbodems'] == "0"))) ){

Deze conditie is (als ik me niet vergis) altijd false. Het gaat nooit EN gelijk zijn aan de waarde "0" en de lengte is gelijk aan "0" (waarom in string vorm? Dit is een integer!)

Je moet || (OR) gebruiken ipv de AND.
Offline BigTeddy - 26/02/2006 03:28 (laatste wijziging 26/02/2006 03:29)
Avatar van BigTeddy Gouden medaille

PHP gevorderde
Is de voorwaarde niet verkeerd geschreven?
De rondehaakjes van de functie's staan rond een de voorwaarde.

  1. if(($_POST['lattenbodem'] == "0") && (strlen(trim($_POST['aantal_lattenbodems'])) == "0"))
  2. {
  3. $error[] = "U moet wel het aantal invullen bij lattenbodems!";
  4. }
  5. elseif($_POST['lattenbodem'] == "0" )
  6. {
  7. if((strlen(trim($_POST['aantal_handmatig'])) == "0") || (strlen(trim($_POST['aantal_elektrisch'])) == "0") | (strlen(trim($_POST['aantal_niet'])) == "0"))
  8. {
  9. $error[] = "1";
  10. }
  11. }
  12. {


Deze "tak" zal ingegaan worden als $_POST['lattenbodem'] en de aantal karakters van $_POST['aantal_lattenbodems'] gelijk is aan nul.

Wat nemesiskoen zegt is wel waar, een aantal is normaal een integer. Maar we weten niet hoe de getallen worden ingegeven, via een dropdown waaruit gekozen kan worden of via een veld waar een waarde moet ingegeven worden.
Offline BigBug - 26/02/2006 07:31
Avatar van BigBug PHP expert Nog een kleine opmerking: Waarom haal je die integers niet buiten quotes? Dit zal aanzienlijk parsetime schelen.
Offline Richard - 26/02/2006 08:49
Avatar van Richard Crew algemeen Als je daar logisch over nadenkt zou je jouw gedachte vergeten. Probeer het maar eens met strict (===). Het type is string, daar check je dus op;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.251s