| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

17-07-2005, 11:09
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
Variable wird nicht übergeben
Hallo Zusammen,
ich habe ein Problem und weiss nicht so recht weiter. Ich arbeite gerade an einer kleinen E-Shop Lösung.
In einer FOR Schleife lese ich die Artikel alle fein aus und Artikel die vom User ausgewählt wurden speichere ich dann in einer Warenkorbtabelle in die DB.
Nur mit der Anzahl weiss ich jetzt nicht so recht weiter, weil die wird ja erst direkt vor dem senden vom User festgelegt.
Da ich keinen Submit Button habe, weiss ich nicht wie ich es machen muss. Hier mal meine nicht funktionierende Lösung:
PHP-Code:
# Warenkorb in die DB schreiben
$mysql->clearall();
$mysql->set_table("project_warenkorb");
$mysql->set_field("user_id",$_SESSION['userID']);
$mysql->set_field("material_id",$_REQUEST['materialid']);
$mysql->set_field("anzahl",$_REQUEST['anzahl0']);
$mysql->insert();
Hier die FOR SChleife wo die Artikel ausgelesen werden. Dahinter direkt das Warenkorb Icon zum senden:
PHP-Code:
<?
# Material auslesen
$mysql->clearall();
$mysql->set_table("project_material");
if($_REQUEST['categorie']!="")
$mysql->set_where("shop=1 AND categorie =" . $_REQUEST['categorie']);
else
$mysql->set_where("2=1");
$material_num=$mysql->select();
for($x=0;$x<$material_num;$x++)
{
?>
<td style="width: 40px;" class="listenhintergrund2_schwach" align="center"><input type="text" name="anzahl<? echo $x?>"
value="<? if ($_REQUEST['anzahl'][$x]>0) echo $_REQUEST['anzahl'][$x]; else echo "0";?>" style="width: 30px;" maxlength="3"></td>
<td class="listenhintergrund2_schwach"><a href="main.php?ebene1=select_bestellung&ebene2=show_shopbestellung&
Send=1&categorie=<? echo $cat?>&materialid=<? echo $material_id[$x];>">
<img src="images/16x16_warenkorb.gif" border="0"></a></td>
</tr>
<?
}
?>
Hoffe ihr könnte mir helfen
Geändert von thurman (17-07-2005 um 14:41 Uhr)
|

17-07-2005, 11:25
|
Shurakai
Master  
|
|
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.090
|
|
Du musst die Daten zum Server bekommen. Setz doch auf das Icon dann nen form.submit(); o.Ä.... Man kann auch in <button>-Tags Bilder reinmachen. Oder per JS dann die Menge an die URL anhängen aber das ist .....
P.S.: Wärest du so freundlich und würdest die Regeln befolgen und deinen Code so umbrechen, dass wir nicht mehr scrollen müßen? Ich hab hier 2 TFTs stehen @ 1280x1024 und dein Posting geht quasi über beide Monitore....
|

17-07-2005, 11:42
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
danke für den Tipp mit den Bildern in den Buttons!
müsste ja dann wie folgt in etwa aussehen:
PHP-Code:
<INPUT type="image" src="images/16x16_warenkorb.gif" title="In den Warenkorb">
Jetzt bin ich wirklich alles andere als ein Spezialist, wie bekomme ich jetzt die Werte übergeben?.
Der Artikel steht ja nicht einem Feld sondern einfach als Text auf der Seite.
Den habe ich ja bisher über das <a href .. mit übergeben
PHP-Code:
&materialid=<? echo $material_id[$x];?>
|

17-07-2005, 11:49
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
Habe jetzt den folgenden Lösungsweg gefunden.
Das klappt auch alles ganz wunderbar, solange die Anzahl einstellig ist. Wenn ich aber z.B. 12 Artikel reinlege, zeigt der Warenkorb nur die Menge 1 an. Bei 43 z.B. 4.
Also schneidet er nach der ersten Stelle ab.
Verlasse ich die Seite und rufe sie ganz neu auf, steht die korrekt Anzahl drin. Also wird auch richtig in die DB gespeichert.
Hat jemand eine Idee, finde den Fehler mehr als merkwürdig.
Danke
PHP-Code:
for($x=0;$x<$material_num;$x++)
{
?>
<form action="main.php" name="add_artikel" method="post" enctype="multipart/form-data">
<input name="ebene1" type="hidden" value="select_bestellung">
<input name="ebene2" type="hidden" value="show_shopbestellung">
<input name="anzahl" type="hidden" value="<? echo $_REQUEST['anzahl']?>">
<input name="artikel" type="hidden" value="<? echo $material_id[$x];?>">
<input name="categorie" type="hidden" value="<? echo $cat?>">
<input name="Send" type="hidden" value="1">
<tr><td> </td></tr>
<tr>
<td class="listenhintergrund2_schwach"><a href="#" onClick="openpic('images/shop/
<? echo $material_image[$x];?>','Detailansicht', '250', '250')"><img src="images/shop/<? echo $material_image[$x]?>" style="width: 45px;" border="0" title="Detailansicht"></a></td>
<td style="width: 250px;" class="listenhintergrund2_schwach"><? echo $material_name[$x]."<br>Artikel-Nr. ". $material_nummer[$x];?></td>
<td class="listenhintergrund2_schwach"><? echo $material_desc[$x] ?></td>
<td style="width: 50px;" class="listenhintergrund2_schwach" align="right" ><? echo $material_einheit[$x]." ST";?></td>
<td style="width: 60px;" class="listenhintergrund2_schwach" align="right"><? echo german_price($material_preis[$x]) . " €";?></td>
<td style="width: 40px;" class="listenhintergrund2_schwach" align="center"><input type="text" name="anzahl" value="0" style="width: 30px;" maxlength="3">
<td class="listenhintergrund2_schwach" align="center" ><INPUT type="image" src="images/16x16_warenkorb.gif" title="In den Warenkorb"><p>
<?
if($material_lieferzeit[$x]>0 && $material_lieferzeit[$x]<=3)
echo "<img src='images/3.gif' border='0' title='Lieferung innerhalb von $material_lieferzeit[$x] Tagen'>";
if($material_lieferzeit[$x]>3 && $material_lieferzeit[$x] <=6)
echo "<img src='images/6.gif' border='0' title='Lieferung innerhalb von $material_lieferzeit[$x] Tagen'>";
if($material_lieferzeit[$x]>6)
echo "<img src='images/18.gif' border='0' title='Lieferung innerhalb von $material_lieferzeit[$x] Tagen'>";
?>
</td>
</tr>
</form>
<?
Geändert von thurman (19-07-2005 um 21:36 Uhr)
|

19-07-2005, 21:30
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
die Anzeige des Warenkorbs sieht wie folgt aus:
PHP-Code:
<td>Warenkorb: <?echo german_price($basket)." €"?></td>
und die MySQL Befehle lauten so:
PHP-Code:
<?
# debug Modus
# $mysql->enable_debug();
# eingeloggte Firma
$mysql->clearall();
$mysql->set_table("project_firmenprofil");
$mysql->set_where("id=".$_SESSION['firmenID']);
$mysql->select();
$cache=$mysql->fetch_assoc();
$gruppe=$cache['gruppen_id'];
# übergebene categorie
$mysql->clearall();
$mysql->set_table("project_shop_categorie");
if ($_REQUEST['categorie']>0)
$mysql->set_where("id=".$_REQUEST['categorie']);
$mysql->select();
$cache=$mysql->fetch_assoc();
$categorie=$cache['name'];
$cat=$cache['id'];
# Material auslesen
$mysql->clearall();
$mysql->set_table("project_material");
if($_REQUEST['categorie']!="")
$mysql->set_where("shop=1 AND categorie =" . $_REQUEST['categorie']);
else
$mysql->set_where("2=1");
$material_num=$mysql->select();
for($x=0;$x<$material_num;$x++)
{
$cache=$mysql->fetch_assoc();
$material_name[$x] = $cache['name'];
$material_nummer[$x] = $cache['artikelnummer'];
$material_desc[$x] = $cache['description'];
$material_einheit[$x] = $cache['einheit'];
$material_image[$x] = $cache['image'];
$material_lieferzeit[$x] = $cache['lieferzeit'];
$material_id[$x] = $cache['id'];
$material_xid[$cache['id']] = $x;
}
# Der Materialpreis ist abhängig davon, welcher Preisgruppe die Firma angehört!
$mysql->clearall();
$mysql->set_table("project_materialpreis");
$mysql->set_where("gruppen_id=".$gruppe);
$preis_num=$mysql->select();
for($x=0;$x<$preis_num;$x++)
{
$cache=$mysql->fetch_assoc();
$materialpreis_id[$x] = $cache['material_id'];
$material_preis[$material_xid[$cache['material_id']]] = $cache['preis']." ";
}
if ($_REQUEST['Send']&& $_REQUEST['anzahl']>0)
{
# Warenkorb in die DB schreiben
$mysql->clearall();
$mysql->set_table("project_warenkorb");
$mysql->set_field("user_id",$_SESSION['userID']);
$mysql->set_field("material_id",$_REQUEST['artikel']);
$mysql->set_field("anzahl",$_REQUEST['anzahl']);
$mysql->insert();
}
# Warenkorb aus der DB lesen (Anzeige oben rechts)
$mysql->clearall();
$mysql->set_table("project_warenkorb");
$mysql->set_where("user_id=".$_SESSION['userID']);
$basket_num=$mysql->select();
for($x=0;$x<$basket_num;$x++)
{
$cache=$mysql->fetch_assoc();
$materialid[$x]=$cache['material_id'];
$materialxid[$cache['id']] = $x;
$anzahl[$x]=$cache['anzahl'];
}
# Materialpreise des Warenkorbes (Anzeige oben rechts)
$mysql->clearall();
for($x=0;$x<$basket_num;$x++)
{
$mysql->clearall();
$mysql->set_table("project_materialpreis");
$mysql->set_where("material_id=".$materialid[$x] ." AND gruppen_id =".$gruppe);
$mysql->select();
$cache=$mysql->fetch_assoc();
$preis[$materialxid[$cache['material_id']]] = $cache['preis']." ";
$basket = $basket+($preis[$materialxid[$cache['material_id']]]*$anzahl[$x]);
}
?>
|

19-07-2005, 21:34
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
*zack* da schiebe ich doch direkt mal eine Verwarnung hier ein. Bitte bearbeite deine Beiträge gemäß den Forenregeln (insb. horizontales Scrollen).
http://www.php-resource.de/forum/sho...threadid=50454
Hat leider nicht jeder so nen schönen 50" Bildschirm wie du...
|

19-07-2005, 21:37
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
super tolle und hilfreiche Antwort, zumal man noch gerade dabei ist seinen
Beitrag zu editieren.
Wie oft hast diesen Satz wohl schon los gelassen.
*kopfschüttel*
|

19-07-2005, 21:42
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
OffTopic: Es tut mir leid, ich kann leider nicht Hellsehen. Und da nach Shurakais Hinweis erneut überlänge gepostet wurde, halte ich meinen Hinweis doch für angebracht.
Zitat:
|
Wie oft hast diesen Satz wohl schon los gelassen.
|
Leider viel zu oft, da einige Leute leider nicht in der Lage sind, sich zuerst in einem Forum umzusehen und Threads wie "erst lesen" ignorieren.
|

19-07-2005, 21:46
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
ich denke so sollte es auf gehen, meiner Meinung nach wird der Code durch die Umbrüche noch schwerer zu lesen
Wäre wirklich sehr nett wenn mir jemand bei dem Problem helfen kann. Sitze da jetzt schon 1 1/2 Tage dran,
falls jemand das Verhalten mal live sehen will,
kann ich gerne einen login schicken.
Will ihn aber nicht einfach so für alle posten, weil es nicht privat ist.
|

19-07-2005, 21:49
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
kein plan, mit dem code kann ich persönlich nichts anfangen.
var_dump() sei dein freund, debuggen musst du selbst.
|

19-07-2005, 21:55
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
habe ganz oben mal
var_dump($anzahl) ; einfügt
der liefert mir bei Anzahl 4:
string(1) "4"
bei Anzahl 13:
string(2) "13"
bei Anzahl 332:
string(3) "332"
das sieht doch an sich sehr korrekt aus
füge ich das var_dump($anzahl) ; unten direkt vor die for schleife ein,
bekomme ich folgenden output:
array(9) { [0]=> string(1) "4" [1]=> string(1) "4" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(2) "12" [5]=> string(1) "4" [6]=> string(2) "44" [7]=> string(3) "333" [8]=> string(1) "4" }
Geändert von thurman (19-07-2005 um 21:58 Uhr)
|

19-07-2005, 21:57
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
dann wirds an der ausgabe liegen.
|

19-07-2005, 22:18
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
jo den ersten fehler habe ich. Überschreibe mir die Variablen anscheinend wieder. Umbenannt und es geht  )
|

19-07-2005, 22:33
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
Zitat:
Original geschrieben von TobiaZ
Hat leider nicht jeder so nen schönen 50" Bildschirm wie du...
|
OffTopic: dabei könnte man doch experimentellerweise in den stylesheets dieses forums reinschreiben:
Code:
code {
white-space: normal;
}
das würde die leute dazu motivieren, ihre posts direkt zu editieren.
|

19-07-2005, 22:49
|
|
thurman
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 15
|
|
jetzt habe ich meinen fehler. Anscheinend sollte das <input feld "anzahl">
nicht den selben namen haben wie meine Variable $anzahl. Als ich $anzahl
umbenannt habe in $stueck geht es 1a. Das hat vielleicht nerven gekostet
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|