php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Probleme beim Löschen von...


 
Anbu
08-01-2007, 11:30 
 
Ich bins mal wieder :D

Ich versuch gerade einzelne Posten(Zeilen) aus einem Warenkorb zu löschen. Ich sitz schon ein weillchen dran und komm einfach nicht drauf also das unset hab ich ganz oben auf meiner Seite und in ihm ist der Fehler ich seh ihn nur nicht..bitte um hilfe
hier kommt mein unset:

if($_POST['del'])
{
unset($_SESSION['warenkorb']['futter'][$_POST['del']],
$_SESSION['warenkorb']['anzahl'][$_POST['del']],
$_SESSION['warenkorb']['tier'][$_POST['del']],
$_SESSION['warenkorb']['preis'][$_POST['del']],
$_SESSION['warenkorb']['gewicht'][$_POST['del']],$e);
}


Hier kommt der Session anzeige teil:



if(isset($_SESSION['warenkorb']))
{
echo'
<tr class="textbold">
<th align="left">Futter:</th>
<th align="left">Menge:</th>
<th align="left">St&uuml;ckpreis:</th>
<th align="left">Preis:</th>
<th align="left">&nbsp;</th>
</tr>';
foreach($_SESSION['warenkorb']['anzahl'] as $key3 => $val)
{
$gesamt +=
$_SESSION['warenkorb']['preis'][$key3]*$_SESSION['warenkorb']['anzahl'][$key3];

$e =
number_format(($_SESSION['warenkorb']['preis'][$key3]
*$_SESSION['warenkorb']['anzahl'][$key3]), 2, ',', '.' );

echo '
<tr class="text">
<td>'.$_SESSION['warenkorb']['futter'][$key3].'('.$_SESSION['warenkorb']['tier'][$key3].'
-'.$_SESSION['warenkorb']['gewicht'][$key3].'kg)</td>
<td>'.$_SESSION['warenkorb']['anzahl'][$key3].'</td>
<td>'.number_format($_SESSION['warenkorb']['preis'][$key3], 2, ',', '.' ).'&nbsp;&euro;</td>
<td>'.$e.'&nbsp;&euro;</td>
<td><input type="image" name="del" value="$key3" src="pics/mini-delete2.gif" alt="loeschen"
OnChange="document.Anfrage.submit();" border="0" /></td>
</tr>';
}

 
XGremliN
08-01-2007, 11:33 
 
Was passiert bei:
$_SESSION['warenkorb']['futter']

 
wahsaga
08-01-2007, 11:37 
 
Bitte lese die Regeln (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454), und breche deinen Code um.

 
Anbu
08-01-2007, 11:37 
 
$_SESSION['warenkorb']['futter']

mit dem laß ich das Futter was in der SESSIOn is anzeigen im echo..oder meinst du was anderes?

 
Anbu
08-01-2007, 11:39 
 
Code umbrechen?

 
wahsaga
08-01-2007, 11:49 
 
Original geschrieben von Anbu
Code umbrechen?
*seufz*
Welcher Teil von
Keine horizontalen Scrollbalken
Informatiker sind FAUL! Folglich mag hier niemand eine horizontale Scrollbar nach rechts bewegen. Achtet also beim Posten darauf, dass ihr bei "breitem" Quelltext entsprechende Umbrüche in den Text einfügt, so dass euer Posting bei einer Auflösung von 1024 Pixeln (Breite) ohne Hindernisse zu lesen ist.
Tipp: Meist sind lange SQL-Queries oder HTML-Codes die Ursache. Diese lassen sich ohne bedenken umbrechen, kürzen oder sogar entfernen.
bereitet dir Verständnisprobleme?

 
Anbu
08-01-2007, 11:54 
 
nichts hate grad meine 5min^^
bin grad dabei

 
3DMax
08-01-2007, 12:16 
 
beim bild werden die klickkoordinaten übertragen, mach mal:

if(isset($_POST['del_x'])&&($_POST['del_y'])) ...

alternativ kannst du auch del als array übergeben - im formular: name="del[]"

 
Anbu
08-01-2007, 12:31 
 
:) vielen danke..
also soll ich anstelle des x und y's die entsprechenden Zahlen eintragen?

 
Anbu
08-01-2007, 12:35 
 
Die idee klingt anfangs gut aber ein Kunde kann ja unzählige Posten haben dann müsst ich ja für jeden einzelnen Posten eine If-schleife schreiben mit einem eigenen x und y..gehts nicht anders????:confused:

 
wahsaga
08-01-2007, 13:06 
 
Original geschrieben von Anbu
also soll ich anstelle des x und y's die entsprechenden Zahlen eintragen?
Nein.

Schau dir die Struktur der Daten in $_POST mit print_r oder var_dump mal an ...

 
Anbu
08-01-2007, 17:57 
 
Fehler immernoch da...nachfolgende Posts von mir nicht beachten bitte

 
Anbu
09-01-2007, 12:56 
 
Also ich sitz an dem Problem schon n weilchen und komm nicht auf die Lösung. Ich versuch aus einem Warenkorb einen Posten(Zeile) zu löschen aber wie mach ich das?wenn ich das Unset in die Foreah schleife packe löscht er mir alles im Warenkorb...Kann mir da jemand bitte weiterhelfen..ich bedanke mich für jede Hilfe
hier kommt der betroffene Teil vom Scribt:


if($_POST['del'] && isset($_SESSION['warenkorb']))
{
unset($_SESSION['warenkorb']['futter'][$key3],
$_SESSION['warenkorb']['anzahl'][$key3],$_SESSION['warenkorb']['tier'][$key3],
$_SESSION['warenkorb']['preis'][$key3],
$_SESSION['warenkorb']['gewicht'][$key3],$e);
}

foreach($_SESSION['warenkorb']['anzahl'] as $key3 => $val)
{
$gesamt += $_SESSION['warenkorb']['preis'][$key3]*$_SESSION['warenkorb']['anzahl'][$key3];

$e =
number_format(($_SESSION['warenkorb']['preis'][$key3]*$_SESSION['warenkorb']['anzahl'][$key3]), 2, ',', '.' );

echo '
<tr class="text">
<td>'.$_SESSION['warenkorb']['futter'][$key3].'
('.$_SESSION['warenkorb']['tier'][$key3].'-'.$_SESSION['warenkorb']['gewicht'][$key3].'kg)</td>
<td>'.$_SESSION['warenkorb']['anzahl'][$key3].'</td>
<td>'.number_format($_SESSION['warenkorb']['preis'][$key3], 2, ',', '.' ).'&nbsp;&euro;</td>
<td>'.$e.'&nbsp;&euro;</td>
<td><input type="image" name="del" value="$key3" src="pics/mini-delete2.gif" alt="loeschen" border="0" /></td>
</tr>';
}

 
Anbu
09-01-2007, 14:21 
 
Bin für jede Hilfe dankbar

 
Anbu
09-01-2007, 15:38 
 
nur den anfangspost beachten ich habs editiert

 
penizillin
09-01-2007, 19:47 
 
1. error_reporting höher stellen
2. mit print_r ins session-array schauen (evtl. hier zeigen)
3. isset() in if-abfragen verwenden

dann noch mal erklären, was das "problem" ist.

 
Anbu
10-01-2007, 15:00 
 
Also ich hab hier n Warenkorb und ich habs geschafft das ich einzelne Posten(Zeilen) löschen kann. So alles funktioniert außer eins. Ich kann alle einzelnen Posten außer den aller ersten löschen. Also ich kann die Stelle 0 in meinem multidimensionalem array nicht löschen. kann mir da jemand helfen hier kommt der betroffene teil des scribts glaube ich zumindest:
Hier wird die Session erstellt:

<?php
session_start();
print_r ($_POST);
if($_POST && $_POST['save'] && $_POST['i_anzahl'] > "0" && is_numeric($_POST['i_anzahl']))
{
$_SESSION['warenkorb']['anzahl'][] = $_POST['i_anzahl'];
$_SESSION['warenkorb']['gewicht'][] = $_POST['i_gewicht'];
$_SESSION['warenkorb']['tier'][] = $_POST['i_tier'];
$_SESSION['warenkorb']['futter'][] = $_POST['i_futter'];
$_SESSION['warenkorb']['preis'][] = $_POST['i_preis'];
}
#print_r($_SESSION['warenkorb']);
if($_POST['del'])
{
unset($_SESSION['warenkorb']['futter'][$_POST['del']],
$_SESSION['warenkorb']['anzahl'][$_POST['del']],
$_SESSION['warenkorb']['tier'][$_POST['del']],
$_SESSION['warenkorb']['preis'][$_POST['del']],
$_SESSION['warenkorb']['gewicht'][$_POST['del']],$e);
}


$arr_preis['hund']['0']['5'] = "14";
$arr_preis['hund']['0']['14'] = "27";
$arr_preis['hund']['0']['25'] = "37";
$arr_preis['hund']['0']['40'] = "47";
$arr_preis['hund']['1']['5'] = "38";
$arr_preis['hund']['1']['14'] = "47";
$arr_preis['hund']['1']['25'] = "54";
$arr_preis['hund']['1']['40'] = "79";

$arr_preis['katze']['0']['3'] = "14";
$arr_preis['katze']['0']['7'] = "27";
$arr_preis['katze']['1']['3'] = "37";
$arr_preis['katze']['1']['7'] = "49";
//---------------------------------------------
$arr_bilder['hund']['5'] = "futter_hund_2kg.gif";
$arr_bilder['hund']['14'] = "futter_hund_14kg.gif";
$arr_bilder['hund']['25'] = "futter_hund_25kg.gif";
$arr_bilder['hund']['40'] = "futter_hund_40kg.gif";

$arr_bilder['katze']['3'] = "futter_katze_3kg.gif";
$arr_bilder['katze']['7'] = "futter_katze_7kg.gif";

Hier wird der Warenkorb angezeigt:

if(isset($_SESSION['warenkorb']))
{

echo'
<tr class="textbold">
<th align="left">Futter:</th>
<th align="left">Menge:</th>
<th align="left">St&uuml;ckpreis:</th>
<th align="left">Preis:</th>
<th align="left">&nbsp;</th>
</tr>';
foreach($_SESSION['warenkorb']['anzahl'] as $key => $val)
{
$gesamt +=$_SESSION['warenkorb']['preis'][$key]*$_SESSION['warenkorb']['anzahl'][$key];

$e = number_format(($_SESSION['warenkorb']['preis'][$key]
*$_SESSION['warenkorb']['anzahl'][$key]), 2, ',', '.' );


echo '
<tr class="text">
<td>'.$_SESSION['warenkorb']['futter'][$key].'('.$_SESSION['warenkorb']['tier'][$key].'
-'.$_SESSION['warenkorb']['gewicht'][$key].'kg)</td>
<td>'.$_SESSION['warenkorb']['anzahl'][$key].'</td>
<td>'.number_format($_SESSION['warenkorb']['preis'][$key], 2, ',', '.' ).'&nbsp;&euro;</td>
<td>'.$e.'&nbsp;&euro;</td>
<td><input type="image" name="del" value="'.$key.'" src="pics/mini-delete2.gif" alt="loeschen" border="0" />
</td>
</tr>';
}

 
TobiaZ
10-01-2007, 15:05 
 
unset($_SESSION['warenkorb']['anzahl'][0]); geht also nicht, obwohl unset($_SESSION['warenkorb']['anzahl'][1]); funktioniert? Sehr merkwürdig...

error_reporting()?
testausgaben?
fehlermeldung?

BTW: unset($_SESSION['warenkorb'][0]['anzahl']); wäre die deutlich bessere struktur.

 
penizillin
10-01-2007, 15:07 
 
wurde dir nicht _schon mal_ gesagt, du sollst isset() in if-abfragen machen? die implizite konvertierung von 0 nach false ist schnell geschehen.

 
Anbu
10-01-2007, 15:13 
 
also hab jetzt überall noch isset hinzugefügt aber der Fehler is leider net behoben...

$_SESSION['warenkorb'][0]['anzahl'] die Struktur hatt ich schon einmal es gab mehr Fehler als jetzt :D bin mit der eigentlich zufrieden die ich jetzt hab..es gibt eben nur den eien Fehler

 
penizillin
10-01-2007, 15:15 
 
zeigen.

 
TobiaZ
10-01-2007, 15:16 
 
zeig mal die lösch-if abfrage wie sie jetzt aussieht.

 
Anbu
10-01-2007, 15:22 
 
if(isset($_POST['del']) && $_POST['del'])
{
unset($_SESSION['warenkorb']['anzahl'][$_POST['del']],
$_SESSION['warenkorb']['futter'][$_POST['del']],
$_SESSION['warenkorb']['tier'][$_POST['del']],
$_SESSION['warenkorb']['preis'][$_POST['del']],
$_SESSION['warenkorb']['gewicht'][$_POST['del']],$e);
}

so..

 
penizillin
10-01-2007, 15:24 
 
nimm && $_POST['del'] raus. :rolleyes:

 
TobiaZ
10-01-2007, 15:24 
 
autsch (jetzt hab ich den Wand-Smilie nicht mehr in der Zwischenablage)

Denk mal kurz logisch nach:
Wenn $_POST['del'] false ist (bzw. so gewertet wird), dann ist ist es zusammen mit einer weiteren bedingung immer noch false. das ändert nichts.

 
Anbu
10-01-2007, 15:26 
 
:D :D :D

danke des wars...ich glaub ich brauch mehr zucker das mir so kleine Fehler nicht mehr passieren

danke


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:56 Uhr.