Versio

Uitvoer foreach

Overzicht Reageren

Gifo

Gifo

01/01/2006 21:53:00
Quote Anchor link
Hoi,

Ik heb het volgende scipt:

foreach ($result as $value => $key) {
if ($key > 2) {
echo " melding
";

} else {

}
}

Hiermee wordt een controle uitgevoerd of een bepaalde categorie niet meer dan 2 keer voorkomt in een formulier. Wat ik nu graag zou willen is dat als de $key waarde kleiner is dan 2 dat de gegevens uit mijn formulier worden toegevoegd aan de database. Als ik deze query echter plaats onder de } else { van bovenstaande if functie wordt de INSERT query meerdere malen uitgevoerd. En dit is uiteraard niet de bedoeling.

Heeft iemand een idee?
 
PHP hulp

PHP hulp

25/05/2012 16:48:41
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Jan Koehoorn

Jan Koehoorn

01/01/2006 21:57:00
Quote Anchor link
ja, volkomen duidelijk
 
Gifo

Gifo

01/01/2006 22:01:00
Quote Anchor link
Niet dan?
 
Martijn B

Martijn B

01/01/2006 22:06:00
Quote Anchor link
Volgens mij snap je de constructie van een array niet helemaal want je gooit de waarde en de key doorelkaar.

Het moet zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

foreach ($result as $key => $value) {
    if ($key > 2) {
        echo " melding
                "
;
        
        }
else {
         // Hier je insert query

    }
}


?>


edit:

Je array kun je als controle even op het scherm zetten met de functie print_r().
Gewijzigd op 01/01/2006 22:08:00 door Martijn B
 
Gifo

Gifo

01/01/2006 22:25:00
Quote Anchor link
@martijn:

het was juist met opzet zo gedaan.
Voorafgaand aan de foreach staat namelijk de volgende code:

$controle2 = array ($_POST['Group1'],$_POST['Group4'],$_POST['Group7'],$_POST['Group10'],$_POST['Group13'],$_POST['Group16'],$_POST['Group19'],$_POST['Group22'],$_POST['Group25'],$_POST['Group28'],$_POST['Group31'],$_POST['Group34']);

$result2 = array_count_values ($controle2);

$result2 geeft hier de verschillende categorieën aan (verschillende Groups) en geeft aan hoe vaak deze voorkomt. Als de $key dan groter is dan 2 dan moet de melding komen dat dit niet mag.
Is de melding lager dan 2 dan moet de INSERT query worden uitgevoerd. Op deze manier wordt de query echter zo vaak uitgevoerd als er catgeorieën zijn en dat is niet de bedoeling.
 
Martijn B

Martijn B

01/01/2006 22:28:00
Quote Anchor link
En wat is nu precies de waarde van $result. Kun je deze array eens uitprinten met print_r.
 
Gifo

Gifo

01/01/2006 22:36:00
Quote Anchor link
Array ( [Amsterdam Pirates] => 2 [DOOR Neptunus] => 2 [DPA Kinheim] => 3 [Hypotheekzeker Tornados] => 2 [Konica Minolta Pioniers] => 1 [Instant Holland Almere 90] => 2 )
 
- SanThe -

- SanThe -

01/01/2006 22:41:00
Quote Anchor link
Jij zoekt zoiets, wel even de true/false zetten zoals jij het wilt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$bool
=true;
foreach ($result as $value => $key) {
    if ($key > 2) {
        $bool=false;        
    }
}

if($bool)
{

    // INSERT
}
?>
 
Gifo

Gifo

01/01/2006 23:51:00
Quote Anchor link
Hoi SanThe,
TOP! Heb een beetje "gepield" en inmiddels werkt het. Ik het het nu zo gedaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php  
foreach ($result as $value => $key) {  
   if ($key > 2) {  
      $authorized = false;  
   }
else {  
      $authorized = true;  
   }  
}
  

if ($authorized == false) {  
   echo "melding";
}
else {  
    }
  

if ($authorized == true) {  
   INSERT
} else {  
    }
  
?>
 
- SanThe -

- SanThe -

02/01/2006 00:03:00
Quote Anchor link
Zoals jij het nu doet geeft ie altijd de waarde uit de laatste foreach. Lijkt mij niet goed, maar dat kan ik niet beoordelen.
 
Davy Jansen

Davy Jansen

02/01/2006 02:42:00
Quote Anchor link
"TOP! Heb een beetje "gepield" en inmiddels werkt het. Ik het het nu zo gedaan"

Heb jij het zo gedaan? Ik zag zo juist, een precies dezelfde post op phpfreakz staan. En daar kreeg jij dit antwoord van: Gerdriaan Mulder

Dus verander dat, "heb ik gedaan" maar ff in, "met dank aan: Gerdriaan Mulder

Jokkebrokje ;)
 



Overzicht Reageren

Get Adobe Flash player