Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[php] Foreach probleem.

Pagina: 1
Acties:
  • 230 views

  • Brantje
  • Registratie: Juli 2004
  • Laatst online: 05-11 19:40

Brantje

De post is daar >>

Topicstarter
Ey,
Ik ben bezig met een webshop systeem.
Alleen het werkt nog niet echt lekker

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
    if ( $_GET['optie'] == 'bevestig' ) {

        // Als er geen gegevens zijn verstrekt door de gebruiker
        if ( empty ( $_SESSION['userinfo'] ) ) {

          echo " <p>U moet eerst gebruikers informatie intypen!</p> ";

        } else {

        // Om te voorkomen dat mail meerder keren word verzonden (naar pagina reload) een check
        // VOlgens Markus was dit namelijk een bug, ik heb deze bug zelf niet kunnen repliceren
        if ( !isset ( $_SESSION['userinfo']['reload'] ) ) {

          $_SESSION['userinfo']['reload'] = true;

          // Zet alle info uit de sessie weer in een variable
          $vnaam = $_SESSION['userinfo']['vnaam'];
          $anaam = $_SESSION['userinfo']['anaam'];
          $adres = $_SESSION['userinfo']['adres'];
          $postcode = $_SESSION['userinfo']['postcode'];
          $woonplaats = $_SESSION['userinfo']['woonplaats'];
          $telefoonnr = $_SESSION['userinfo']['telefoonnr'];
          $opmerking = $_SESSION['userinfo']['opmerking'];
          $mail = $_SESSION['userinfo']['mail'];
          $factuur = $_SESSION['factuur']['body'];
          $checksum = pwgen(50);

          // Insert de klant in de database
          $query = "INSERT INTO `klant` (klantnr, vnaam, anaam, adres, postcode, woonplaats, telefoonnr, mail) VALUES ('','$vnaam','$anaam','$adres','$postcode','$woonplaats','$telefoonnr','$mail')";
          
              mysql_query($query) or die ('Kon geen Klant in de database zetten');

          $klantnr = mysql_insert_id ();
          $datum = date ( "Y-m-d" );
          $tijd = date ( "H:I:s" );
          
            
          // Insert de bestelling in de database
          $query2 = "INSERT INTO `bestelling` (bestelnr, klantnr, datum, tijd, status, checksum, opmerking) VALUES ('','$klantnr','$datum','$tijd','0', '$checksum', '$opmerking')";

          mysql_query ($query2) or die ('Kon geen Bestelling in de database zetten');
          
          
          $bestelnr = mysql_insert_id ();
              $bt_prodnr = $_SESSION['betaalmethode']['productnr'];

          foreach ( $_SESSION['winkelwagen'] AS $key => $val ) {

            $aantal = $_SESSION['winkelwagen']["$key"]['aantal'];
            $maatid = $_SESSION['winkelwagen']["$key"]['maat_id'];
            $productnr = $_SESSION['winkelwagen']["$key"]['product_id'];
            echo "Sessie informatie: 
            Product nummer: $productnr Maat: $maatid Aantal: $aantal<br>";
            
            //Sander Brand edit
    $brantje1 = mysql_query("SELECT * FROM `mt_pr` WHERE productnr = $productnr") or die("mt_pr error". mysql_error());
            $count = mysql_num_rows($brantje1);
            echo "Count $count";            
            //voorraad bijwerken
            //mysql_query ("UPDATE product SET voorraad=voorraad-$aantal WHERE productnr='$productnr'") or die(mysql_error());
            
            // Insert de aankoop in de database
            $query3 = "INSERT INTO `aankoop` (bestelnr, productnr, aantal, maatid) VALUES ('$bestelnr','$productnr','$aantal','$maatid')";

            //mysql_query ($query3) or die(mysql_error());

          }
          
          //aankoop registreren Edit: door Bernardo
          $insert = mysql_query("INSERT INTO aankoop_reg (product,tijd,user) VALUES (".$productnr.",".time().",".$klantnr.")");

          // Na de bestelling de winkelwagen legen
          unset ($_SESSION['winkelwagen']);
          
          $_SESSION['betaalmethode']['productnr'] = $bt_prodnr;
          
          $query4 = "INSERT INTO `aankoop` (bestelnr, productnr) VALUES ('$bestelnr','$bt_prodnr')";

          mysql_query ($query4) or die(mysql_error());

          // Verificatie mail voor gebruikers
          //Gegevens uit database halen, zodat deze worden weergeven
          $sql = "SELECT * FROM `frontpage` WHERE `frid` = 2 LIMIT 1";
          $query = mysql_query($sql) or die(mysql_error());
          while($mail_text = mysql_fetch_array($query)){
            $title = stripslashes($mail_text['title']);
            $entry = stripslashes($mail_text['entry']);
          }
          
          $subject = $title.$bestelnr;
 
          //de voornaam, achternaam en link parsen
          $entry = str_replace("\n","",$entry);
          $entry = str_replace("[VOORNAAM]",$vnaam,$entry);
          $entry = str_replace("[ACHTERNAAM]",$anaam,$entry);
          $entry = str_replace("[LINK]",$url_root."/check.php?ac=bestelling&checksum=".$checksum."&bestelnr=".$bestelnr,$entry);
          $message = $entry;
                     
          $header = "From: $webshop_mail \r\n".
                    "Reply-To: $webshop_mail \r\n".
                    "X-Mailer: PHP/".phpversion();

            // Verzamelde gegevens worden verzonden
            mail ($mail,$subject,$message,$header) or die ( "Fout bij het versturen van activerings mail neem contact op met $webshop_mail" );

          }
          //Sander Brand edit
          foreach ( $_SESSION['winkelwagen'] AS $key => $val ) {
            $aantal = $_SESSION['winkelwagen']["$key"]['aantal'];
            $maatid = $_SESSION['winkelwagen']["$key"]['maat_id'];
            $productnr = $_SESSION['winkelwagen']["$key"]['product_id'];
$brantje1 = mysql_query("SELECT * FROM `mt_pr` WHERE productnr = $productnr AND maatid = $maatid") or die("mt_pr error". mysql_error());
            $count = mysql_num_rows($brantje1);
            echo "Sessie informatie: 
            Product nummer: $productnr Maat: $maatid Aantal: $aantal Rows: $count<br>";
            
            if($count != 0){
            mysql_query("UPDATE `mt_pr` SET `voorraad`= `voorraad`-$aantal WHERE `mt_pr_id` = $productnr AND  `maatid` = $maatid")  or die(mysql_error());
            
            }
            else
            {
            mysql_query("UPDATE `product` SET `voorraad`= `voorraad`-$aantal WHERE `productnr` = $productnr") or die(mysql_error());
            }
          
        }  

        
            

        
   unset ($_SESSION['winkelwagen']);
          //page_loader ( "index.php","Uw bestelling is opgeslagen! Er is een bevestigingsmail naar uw mailbox gestuurd. U wordt automatisch doorgestuurd naar de homepagina", 3600 );

        }

      }


Dit is de code waar mee bevestigd word.

En volgens php zit hier de fout in:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
foreach ( $_SESSION['winkelwagen'] AS $key => $val ) {
            $aantal = $_SESSION['winkelwagen']["$key"]['aantal'];
            $maatid = $_SESSION['winkelwagen']["$key"]['maat_id'];
            $productnr = $_SESSION['winkelwagen']["$key"]['product_id'];
$brantje1 = mysql_query("SELECT * FROM `mt_pr` WHERE productnr = $productnr AND maatid = $maatid") or die("mt_pr error". mysql_error());
            $count = mysql_num_rows($brantje1);
            echo "Sessie informatie: 
            Product nummer: $productnr Maat: $maatid Aantal: $aantal Rows: $count<br>";
            
            if($count != 0){
            mysql_query("UPDATE `mt_pr` SET `voorraad`= `voorraad`-$aantal WHERE `mt_pr_id` = $productnr AND  `maatid` = $maatid")  or die(mysql_error());
            
            }
            else
            {
            mysql_query("UPDATE `product` SET `voorraad`= `voorraad`-$aantal WHERE `productnr` = $productnr") or die(mysql_error());
            }
          
        }


De fout die php geeft is:
Warning: Invalid argument supplied for foreach() in /home/onlinegast/domains/onlinegastenboek.nl/public_html/vvberkum/frontend/content.php on line 865

URL:
http://www.onlinegastenboek.nl/vvberkum/index.php

Gewoon wat producten bestellen met verschillende maten.
Bestellen, en dan krijg je een bevestiging.
Wees gerust, de bestelling gaat nog niet de database in ;).

Ik heb hier al een aantal keren mee zitten spelen maar ik kom er niet uit.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ey,
Zo werken we hier niet. Het is niet de bedoeling dat je een lap code dumpt, de foutmelding erbij en dat wij het dan wel 'effe' voor je fixen.

Lees even onze Programming Beleid Quickstart door en probeer het dan (met die QuickStart in je achterhoofd) opnieuw. Zie ook quickfix.

Daar ben je overigens al méér dan eens op gewezen...

[ Voor 17% gewijzigd door RobIII op 11-03-2008 18:11 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.