Björn: Variablen in einer for Schleife

Hallo! Ich bin dabei einen Webshop zu programmieren, und habe 2 Bilder und eine kleine Textbox, in der man nur Zahlen schreiben kann. Und bei OnKlick auf eines der Bilder soll dann die Zahl in dem Textfeld erhöht oder erniedrigt werden. Und mein Problem ist nun folgendes: wie kann ich in meinem Script die Variablen so definieren, dass sie je nachdem, wieviele Artikel ich in dem Shop habe, erstellt werden?

Hier die functions.js function erhoehen(feld) {   var zahl1 = document.shop.anzahl1.value;   var zahl2 = document.shop.anzahl2.value;   var zahl3 = document.shop.anzahl3.value;

if (feld == 1)   document.shop.anzahl1.value = ++zahl1;

if (feld == 2)     document.shop.anzahl2.value = ++zahl2;

if (feld == 3)     document.shop.anzahl3.value = ++zahl3; }

function verringern(feld) {   var zahl1 = document.shop.anzahl1.value;   var zahl2 = document.shop.anzahl2.value;   var zahl3 = document.shop.anzahl3.value;   if (zahl1 > 0 || zahl1 == 1)   {     if (feld == 1)     document.shop.anzahl1.value = --zahl1;   }   if (zahl2 > 0 || zahl2 == 1)   {     if (feld == 2)       document.shop.anzahl2.value = --zahl2;   }   if (zahl3 > 0 || zahl3 == 1)   {     if (feld == 3)       document.shop.anzahl3.value = --zahl3;   } }

und nun die shop.php <? $artikel = get_shop_articles(); $anzahl_artikel = shop_artikel_anzahl(); if (!isset($_POST['kaufen']) && $kaufen == 0) { ?>   <script src="functions.js"></script>   <form action="index.php?site=shop" method="post" name="shop">   <table border="1" width="100%" cellspacing="2">     <tr>       <td width="5%">Anzahl</td>       <td width="10%">ArtikelNummer</td>       <td width="55%">ArtikelName</td>       <td width="20%">Gr&ouml;&szlig;e</td>       <td width="10%">Preis</td>     </tr>     <?     for ($i = 1; $i <= $anzahl_artikel[0]; $i++)     {       echo "           <tr>             <td width="5%"><img name="$i" src="images/buttons/plus.gif" OnClick="erhoehen($i);" alt="mehr..." /><input type="text" name="anzahl$i" size="1" OnKeyDown="MS_restrict_field('shop','anzahl1','.0123456789')" value="0" /><img name="$i" src="images/buttons/minus.gif" OnClick="verringern($i);" alt="Weniger..." /></td>             <td width="10%">".$artikel[$i][0]."</td>             <td width="55%"><a href="".$artikel[$i][8]."">".$artikel[$i][1]."</a></td>             <td width="20%">               <table border="0" width="100%" cellspacing="2">                 <tr>                   <td width="2%" align="center"><div style="font-size:10px">S</div></td>                   <td width="2%" align="center"><div style="font-size:10px">M</div></td>                   <td width="2%" align="center"><div style="font-size:10px">L</div></td>                   <td width="2%" align="center"><div style="font-size:10px">XL</div></td>                   <td width="2%" align="center"><div style="font-size:10px">XXL</div></td>                 </tr>          <tr>            <td width="2%"><input type="radio" value="S" checked name="groesse$i"></td>                   <td width="2%"><input type="radio" value="M" name="groesse$i"></td>                   <td width="2%"><input type="radio" value="L" name="groesse$i"></td>                   <td width="2%"><input type="radio" value="XL" name="groesse$i"></td>                   <td width="2%"><input type="radio" value="XXL" name="groesse$i"></td>                   <input type="hidden" name="artnr$i" value="$i" />          </tr>               </table>             </td>             <td width="10%">".$artikel[$i][2]." €</td>           </tr>";     } ?>     </table>     <input type="submit" name="kaufen" value="Kaufen" />     </form>     <?     if ((isset($_GET['anzeigen']) && isset($_GET['artikelnr'])) && $_GET['anzeigen'] == 1)     { ?>       <table border="1" width="100%">         <tr>           <td width="10%"><img src="<? echo $artikel[$_GET['artikelnr']][9]; ?>" width="229" height="236" /></td>           <td width="10%"><img src="<? echo $artikel[$_GET['artikelnr']][10]; ?>" width="229" height="236" /></td>           <p><a href="index.php?site=shop">ausblenden</a></p>         </tr>       </table>       <table border="1" width="100%">         <tr>           <td><? echo $artikel[$_GET['artikelnr']][11]; ?></td>         </tr>       </table>  <? }     }     elseif (isset($_POST['kaufen']) && $kaufen == 0)     {       for ($x = 1; $x <= $anzahl_artikel[0]; $x++)       {         if ($_POST['anzahl'.$x.''] != 0)         {           $link ="&artikelnr$x=".$_POST['artnr'.$x.'']."&anzahl$x=".$_POST['anzahl'.$x.'']."&groesse$x=".$_POST['groesse'.$x.'']."".$link."";           $kaufen = 1;         }         else           $kaufen = 0;       }       ?>       <table border="0" width="100%" cellpadding="2" cellspacing="2" heigth="100%">         <tr>           <td align="center" valign="top">           <table border="0" cellspacing="2" cellpadding="2" height="100%">             <tr>               <td><div style="font-weight:bold;font-size:15px;">Ihre Bestellung:</div></td>             </tr>             <tr>               <td>               <table border="0" width="100%">                 <tr>                   <td>Anzahl:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>                   <td>Artikel:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>                   <td>Einzelpreis:&nbsp;</td>                   <td>Gesamtpreis:&nbsp;</td>                 </tr>               </table>               </td>             </tr>           </table>           </td>         </tr>       </table>       <div align="center">       <table border="0" width="56%">         <tr>           <td><hr width="100%"></td>         </tr>       </table>       <table border="0" width="55%">       <?       for ($i = 1; $i <=$anzahl_artikel[0]; $i++)       {         if ($_POST['anzahl'.$i.''] != 0)         { ?>           <tr>             <td align="left" width="7%"><?=$_POST['anzahl'.$i.''];?></td>             <td align="left" width="18%"><?=$artikel[$i][1];?> (<?=$_POST['groesse'.$i.''];?>)</td>             <td align="right" width="10%"><?=$artikel[$i][2];?> €</td>             <td align="right" width="10%"><? $preis_gesamt[$i] = $artikel[$i][2] * $_POST['anzahl'.$i.'']; echo $preis_gesamt[$i]; ?> €</td>           </tr>           <?         }       } ?>       </table>       <table border="0" width="56%">         <tr>           <td><hr width="100%"></td>    </tr>       </table>       <table border="0" width="55%">         <tr>           <td align="right" width="20%">Summe: </td>           <td align="right" width="3%"><?=$preis_gesamt[1] + $preis_gesamt[2] + $preis_gesamt[3]; ?> €</td>         </tr>       </table>       </div>       <div align="right" valign="bottom">         <a href="index.php?site=shop&kaufen=<?=$kaufen;?><?=$link;?>">Weiter</a>       </div>       <? } elseif ($kaufen == 1) { ?>   <table border="0" width="100%" cellpadding="2" cellspacing="2" heigth="100%">     <tr>       <td>       <form method="post" action="index.php?site=shop">       name:       <input type="text" name="name">       </form>       </td>     </tr>   </table>   <? } ?>

und nun die _functions.php <? function connect() {  $host = "xxx";  $user = "xxx";  $pass = "xxx";  $db = "xxx";  $dbhdl = mysql_connect($host, $user, $pass);  mysql_select_db($db);  return $dbhdl; }

function check_user($name, $pass) {     $sql = "SELECT * FROM ".PREFIX."users WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') LIMIT 1";     $result = mysql_query($sql) or die(mysql_error());     if (mysql_num_rows($result) == 1)     {         $user = mysql_fetch_assoc($result);         return $user;     }     else         return false; }

function login($userid) {  $sql = "UPDATE ".PREFIX."users SET UserSession='".session_id()."' WHERE UserId=".$userid."";  $result = mysql_query($sql); }

function logged_in() {     $sql = "SELECT UserId FROM ".PREFIX."users WHERE UserSession='".session_id()."' LIMIT 1";  $result= mysql_query($sql);  if (mysql_num_rows($result)==1)             $user = mysql_fetch_assoc($result);    return $user['UserId']; }

function logout() {     $sql = "UPDATE ".PREFIX."users SET UserSession=NULL WHERE UserSession='".session_id()."'";  $result = mysql_query($sql); }

function create_new_user($name, $pass, $mail, $status) {     $sql = "INSERT INTO ".PREFIX."users (UserName, UserPass, UserMail, UserStatus) VALUES(".$name.", ".$pass." ,".$mail.", ".$status.")";     $result = mysql_query($sql);     $check = "SELECT * FROM ".PREFIX."users WHERE UserName='".$name."'LIMIT=1";     $result_check = mysql_query($check);     $ergebnis = mysql_fetch_assoc($result_check);       return $ergebnis; }

function return_user() {     $sql = "SELECT * FROM ".PREFIX."users WHERE UserSession='".session_id()."' LIMIT 1";     $result = mysql_query($sql);     $user = mysql_fetch_assoc($result);     return $user; }

function check_user_status($id) {     $sql = "SELECT UserStatus FROM ".PREFIX."users WHERE UserId=".$id."";     $result = mysql_query($sql);     $inhalt = mysql_fetch_assoc($result);     $status = explode(";",$inhalt['UserStatus']);     return $status; }

function einbinden($site) {     switch($site)     {     case "extras":         include($site.".php");         break;     case "forum":         include($site.".php");         break;     case "gaestebuch":         include($site.".php");         break;     case "galerie":         include($site.".php");         break;     case "home":         include($site.".php");         break;     case "impressum":         include($site.".php");         break;     case "shop":         include($site.".php");         break;     case "shopadmin":         include($site.".php");         break;     case "spiele":         include($site.".php");         break;     case "termine":         include($site.".php");         break;     case "wir":         include($site.".php");         break;    default :         include("home.php");         break;     } }

function get_shop_articles() {     $abfrage = "SELECT * FROM ".PREFIX."shop_artikel";     $ergebnis = mysql_query($abfrage);     $artikel_anzahl = mysql_num_rows($ergebnis);     for ($i = 1; $i <= $artikel_anzahl; $i++)     {         $sql = "SELECT * FROM ".PREFIX."shop_artikel WHERE ArtikelNr=".$i."";         $result = mysql_query($sql);         $artikel = mysql_fetch_array($result);         for ($j = 0; $j <= 11; $j++)         {             $inhalt[$i][$j] = $artikel[$j];         }     }     return $inhalt; }

function shop_artikel_anzahl() {     $sql = "SELECT ArtikelNr FROM ".PREFIX."shop_artikel ORDER BY ArtikelNr DESC LIMIT 1";     $result = mysql_query($sql);     $anzahl_artikel = mysql_fetch_array($result);       return $anzahl_artikel; } ?>

  1. Ich grüsse den Cosmos,

    Und mein Problem ist nun folgendes: wie kann ich in meinem Script die Variablen so definieren, dass sie je nachdem, wieviele Artikel ich in dem Shop habe, erstellt werden?

    Erzeug doch einfach ein Array.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  2. und habe 2 Bilder und eine kleine Textbox, in der man nur Zahlen schreiben kann. Und bei OnKlick auf eines der Bilder soll dann die Zahl in dem Textfeld erhöht oder erniedrigt werden.
    Und mein Problem ist nun folgendes: wie kann ich in meinem Script die Variablen so definieren, dass sie je nachdem, wieviele Artikel ich in dem Shop habe, erstellt werden?

    Ich hab grosse Schwierigkeiten, disesn Satz zu verstehen.

    Hier die functions.js
    function erhoehen(feld)
    {
      var zahl1 = document.shop.anzahl1.value;
      var zahl2 = document.shop.anzahl2.value;
      var zahl3 = document.shop.anzahl3.value;

    if (feld == 1)
      document.shop.anzahl1.value = ++zahl1;

    if (feld == 2)
        document.shop.anzahl2.value = ++zahl2;

    if (feld == 3)
        document.shop.anzahl3.value = ++zahl3;
    }

    function verringern(feld)
    {
      var zahl1 = document.shop.anzahl1.value;
      var zahl2 = document.shop.anzahl2.value;
      var zahl3 = document.shop.anzahl3.value;
      if (zahl1 > 0 || zahl1 == 1)
      {
        if (feld == 1)
        document.shop.anzahl1.value = --zahl1;
      }
      if (zahl2 > 0 || zahl2 == 1)
      {
        if (feld == 2)
          document.shop.anzahl2.value = --zahl2;
      }
      if (zahl3 > 0 || zahl3 == 1)
      {
        if (feld == 3)
          document.shop.anzahl3.value = --zahl3;
      }
    }

    Den restlichen (PHP) Code hab ich mir nicht angeschaut. aber das oben sieht schon sehr umständlich aus, evtl. suchst du sowas:

    function verringern(feld)  
    {  
       var ref = document.shop['anzahl' + feld];  
       if(ref) ref.value = --ref.value;  
    }  
    
    

    Struppi.

    --
    Javascript ist toll (Perl auch!)