Menü

  Login

  Shoutbox

  Forum » Fragen zu Ilch » Andere Dinge » SELECT Box Problem


SELECT Box Problem
CodeRon
Jungspund

User Pic

Posts: 25
# 12.09.2013 - 11:21:24
    zitieren



Hallo @all

Ich habe mal wieder ein kleines Anliegen bzw. komme nicht ganz weiter.

Zu mein Problem:

Ich arbeite derzeit an einem Warenkorb - Modul das wie folgt funktionieren soll. Von einer Artikelseite "legt" man diesen in den Warenkorb, wenn man diesen dann aufruft findet man die Artikel dann dort. Soweit alles gut. Als nächsten Schritt möchte ich gerne das der Käufer die Zahlungsmethode auswählt. Klappt auch, aber nur wenn es sich um ein Verkäufer handelt. Es wird also je nachdem wieviele Verkäufer im Warenkorb des Käufers vorhanden sind im zweiten Schritt auch diese Anzahl an Verkäufer jeweils eine Möglichkeit zur Zahlungsmethoden-Auswahl haben.Wenn es nun mehr als einer ist habe ich damit irgendwie noch so meine Probleme. Das Eintragen der Werte in die Datenbank habe ich mittels der foreach-Schleife schon hinbekommen.

Was ich nun noch möchte, ist das ich noch vorher prüfen möchte ob eine Zahlungsmethode ausgewählt wurde (Pflichtfeld) bevor es zum 3.Schritt gehen kann.

Ich hänge mal die jeweiligen HTML und PHP Codes an:
 Php von Datei shopcart.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:
  <?php
if($_POST['step3']){
    foreach (
$_POST['zm'] as $vidId => $zId) {
        
db_query("UPDATE prefix_auv_shopcart SET zm = '".$zId."' WHERE vid = '".$vidId."' AND ('".$_SESSION['authid']."' > 0 AND kid = '".$_SESSION['authid']."') OR ('".$_SESSION['authid']."' = 0 AND sid = '".session_id()."')");
    }
}
$title $allgAr['title'].' - Warenkorb';
$hmenu $hname;
$design = new design $title $hmenu );
$design->header();

$tpl = new tpl 'shopcart.htm' );
$tpl->out(0);
if(
$_POST['step2']){
    
$st2a db_fetch_row(db_query("SELECT sid FROM prefix_online WHERE uid = 0"));
    if (
$_SESSION['authid'] == AND $st2a[0] != session_id()){
        
$tpl->out(1);
    }else{
        
$tpl->out(2);
        
$i 0;
        
$st2b db_query("SELECT a.artid, a.vid, b.name as vuser, c.pay1, c.pay2, c.pay3 FROM prefix_auv_shopcart a LEFT JOIN prefix_user b ON b.id = a.vid LEFT JOIN prefix_auv_artikel c ON c.id = a.artid WHERE ('".$_SESSION['authid']."' > 0 AND a.kid = '".$_SESSION['authid']."') OR ('".$_SESSION['authid']."' = 0 AND a.sid = '".session_id()."') GROUP BY a.vid ORDER BY b.name");
        while(
$st2c db_fetch_assoc($st2b)){
            
$i++;
            
$st2c['i'] = $i;
            if (
$_SESSION['authid'] == 0){
                
$st2c['zm'] = '<option value="1">Klassische &Uuml;berweisung</option>';
            }else{
                
$st2c['zm'] = '<option value="0">Bitte w&auml;hlen...</option>';
                if (
$st2c['pay1'] == 1){
                    
$st2c['zm'] .= '<option value="1">Klassische &Uuml;berweisung</option>';
                }
                if(
$st2c['pay2'] == 1){
                    
$st2c['zm'] .= '<option value="2">Paypal</option>';
                }
                if(
$st2c['pay3'] == 1){
                    
$st2c['zm'] .= '<option value="3">Nachnahme</option>';
                }
            }
            if (
$_SESSION['authid'] == 0){
                
$st2c['nin'] = '<div class="beschart" style="margin-top:25px;">Als nicht registrierter Kunde steht Ihnen aus Sicherheitsgr&uuml;nden für den Verk&auml;ufer nur die Zahlungsmethode
<u>Klassische &Uuml;berweisung</u> zur Verf&uuml;gung und wird von unserem System automatisch ausgew&auml;hlt. Wenn Sie andere
Zahlungsmethoden bevorzugen, registrieren Sie sich bitte und genießen Sie dabei viele weitere Vorteile.</div>'
;
            }else{
                
$st2c['nin'] = '';
            }
            
$tpl->set_ar_out($st2c,3);
        }
        
$tpl->set_out('sub','step3',4);
    }
}elseif(
$_POST['step3']){
    
$tpl->out(1);
}
$design->footer();
?>

 HTML von Datei shopcart.htm
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
 
{EXPLODE}
<div align="center" style="height:32px;line-height:32px;"><b>Ihre Sitzung ist leider abgelaufen. Sie können sich gerne für eine zeitlich unbegrenzte Sitzung registrieren.</b></div>
{EXPLODE}
<div style="width:610px;margin-left:58px;padding-bottom:15px;">
  <form method="POST" action="index.php?shopcart">
  <div style="width:100%;padding-top:25px;padding-bottom:15px;"><span style="font-size:16px;font-weight:bold;">Bitte wählen Sie Ihre Zahlungsmethode aus:</span></div>
  {EXPLODE}
  <div style="width:100%;padding-top:10px;margin-bottom:5px;"><span style="font-size:13px;font-weight:bold;">Für den Verkäufer</span> <span class="arttitle" style="text-decoration:underline;">{vuser}</span><div style="float:right;width:290px;"><select id="zm{i}" size="1" name="zm[{vid}]" onclick="sichtbar({i})">{zm}</select></div></div>
  {EXPLODE}
  <div style="display:none;margin-top:30px;" id="zmh">
   <div class="blueNew" style="font-size:13px;font-weight:bold;margin-bottom:5px;">Hinweis für die Zahlungsmethode Paypal</div>
   <div class="beschart">PayPal erhebt aktuell eine Buchungsgebühr von <span class="blueNew">0,35€</span> zzgl. <span class="blueNew">1,9%</span> Zinsen die sich aus einer Gesamtsumme
ergibt. Unser Warenkorb ist daher so programmiert, dass diese Gebühren im Falle einer Zahlungsmethode von
PayPal automatisch für den entsprechenden Verkäufer hinzugerechnet werden.<br><br>Die neue Gesamtsumme können Sie auf der Seite <span class="blueNew">Prüfen / Bestellen</span> einsehen.</div>
  </div>
  {nin}
</div>
<div style="width:708px;margin-left:9px;margin-top:15px;text-align:right;">
  <input onfocus="this.blur()" type="submit" value="Weiter zur Kasse" name="{sub}" style="background-color:#006699;color:#FFF;font-weight:bold;padding-left:10px;padding-right:10px;">
  </form>
</div>


Die Style Angaben werden nachher natürlich noch schön in einer CSS verpackt Zwinker
Mairu
Administrator

User Pic

Posts: 1908
# 13.09.2013 - 08:41:32
    zitieren



Eine Möglichkeit wäre die Verwendung der PHP Filterfunktionen -> http://de2.php.net/manual/en/book.filter.php

Ansonsten müsstest du es halt selbst überprüfen. z.B. eben mit einer Foreach über die gewählte Bezahlmethoden, wobei dann natürlich auch gegen die bestehenden Möglichkeiten geprüft werden muss. Ich sehe jetzt noch nicht ganz dein Problem?

Ansonsten der dringende Rat, alles was von an eine db_query Funktion geht, muss vorher durch die escape Funktion ( ilch -> escape() oder http://php.net/manual/en/function.mysql-real-escape-string.php ), sonst sind SQL Injections möglich, was in einem Shop absolut zu vermeiden ist, es ist generell zu vermeiden Auslachen