MySQL-Anweisungen werden in PHP nicht ausgeführt.

uwee

Erfahrenes Mitglied
Hallo an alle!!

Ich bin noch immer an meinem Shopsystem. Etwas verändert, weil ich damit besser klarkomme.

Erstmal den Code:
PHP:
<a href=\"index.php?page=in&artikel=$row->artikel_nr&name=$row->name&preis=$row->preis\" target=_blank><img src=bilder/basket.gif></a>

PHP:
$sessionin = session_ID();
$artikelin = $_GET['artikel'];
$namein = $_GET['name'];
$preisin = $_GET['preis'];

$sql = "SELECT * FROM warenkorb WHERE session=$sessionin AND artikel_nr=$artikelin";
$result = mysql_query($sql);
$pruefen = mysql_num_rows($result);
echo $pruefen;

if($pruefen >= 1){
$zeile = mysql_fetch_array($result);
$neuemenge  = $zeile[menge] + 1;
	$sqlupdate = "UPDATE warenkorb SET menge=$neuemenge WHERE session='$sessionin' and artikel_nr='$artikelin'";
	$sqluptime = "UPDATE warenkorb SET time=now() WHERE session='$sessionin' and artikel_nr='$artikelin'";
	$sqldelete = "DELETE FROM warenkorb WHERE menge=0";
                       }
else{
	$sqlinsert = "INSERT INTO warenkorb (id,session,artikel_nr,menge,name,preis,time)
         VALUES('','$sessionin','$artikelin','1','$namein','$preisin',now())";
      }

$resultinsert=mysql_query($sqlinsert) or die(mysql_error());
$resultupdate=mysql_query($sqlupdate) or die(mysql_error());
$resultuptime=mysql_query($sqluptime) or die(mysql_error());
$resultdelete=mysql_query($sqldelete) or die(mysql_error());

So, der erste Codeschnipsel ist zum Übertragen der Variablen Menge, Preis und Name.

Der zweite Teil ist dafür verantwortlich, dass es unter den bestimmten Bedingungen in die Tabelle geschrieben werden soll.
Wie zu sehen ist, soll ein neuer Artikel erst in die Tabelle geschrieben werden, wenn in session und artikel (Spalten der Tabelle) diese Kombination des Eintrags noch nicht exestieren.
DER Teil funktioniert auch, leider funktioniert er auch, wenn es den Artikel schon gibt :(
Der erste teil der if-Anweisung wird irgendwie ausser acht gelassen.
Beim Eintrag bkeomme ich folgenden Fehler:

Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\ARBEIT\apachefriends\xampp\htdocs\shop\test\inwarenkorb.php on line 32
Query was empty

Line 32: $pruefen = mysql_num_rows($result);

Das Query was empty bezieht sich auf die Zeile in der die Variable $sqlupdate ausgeführt wird.

Es wird wahrscheinlich wiedermal nur ein kleiner Fehler sein, aber ich find ihn einfach nicht :(

-------------------
Hinzu noch ein kleines Problem:
PHP:
$aktlzeit=date("H:i:s");
echo $aktlzeit;
$sqlupdate = "DELETE FROM zeit WHERE 'zeit'<'$aktlzeit'";
$resultupdate=mysql_query($sqlupdate) or die(mysql_error());
Das Feld Zeit in der Tabelle ist vom typ time! Es soll die Zeile gelöscht werden, wo der Tabelleneintrag kleiner ist, als die aktuelle Zeit... leider löscht er es nicht. Wenn ich in meinem phpMyAdmin jedoch nicht die Variable, sondern den Wert der Variable als 12:00:00 eingebe, funktioniert es.
----------------------------

Für alle Vorschläge und Ideen bin ich sehr offen

Danke schonmal!

uweE
 
Zuletzt bearbeitet:
hm :( da hier wohl keinem etwas zu einfällt, vielleicht etwas einfacheres:

Doppelte Einträge aus einer Tabelle löschen!

meine Tabelle ist wie folgt aufgebaut:
Code:
id | session | artikel_nr | menge | name | preis | time
Nun habe ich folgende Einträge drin:
id = 1
session = 001
artikel_nr = 2
menge = 1
name = hallo
preis = 2
time = now()

Wenn nun ein neuer Datensatz in die Tabelle geschrieben wird, der den Eintrag "session=001" und "artikel_nr=2" hat, soll dieser wieder gelöscht werden.

Ich möchte am Anfang einer Seite praktisch alle doppelten Einträge (doppelt auf session und artikel_nr in Kombination bezogen) aus der Tabelle getilgt werden.

UweE
 
Bin nicht sicher ob ich dich nun richtig verstanden habe.

SELECT * , count( `id` ) AS anzahl
FROM `tabelle`
GROUP BY `session`
AND `artikel_nr`

Jetzt alle wo die Anzahl grösser 1 ist haben doppelte Einträge. Dann kannst du die ja löschen.
Ist das, was du gesucht hast?

;)
 
So, entshculdigt bitte mein "Aufgeteile", aber ich hab im Datenbankenforum hier eine ähnliche Frage gestellt und nun auch eine gute Lösung gefunden... wen der Teil mit dem ersetzen und löschen usw. interessiert, hier könnt ihr es einmal nachlesen!

Bleibt nur noch das kleine Problem, die Preise hinterher zu addieren. das ist ein Problem, weil ich sie auch aus der Datenbank hole, wo die Artikel in den Warenkorb gepackt worden sind... Die se Artikel gebe ich folgendermaßen in eine Tabelle aus:

PHP:
<br><table border=0 width=90%><tr></tr><td></td><td><b><u>Artikel (Einzelpreis)</u></i></td><td><b><u>Gesamtpreis</u></i></td><td><b><u>Menge</u></i></td></tr>\n";
while ($row=mysql_fetch_object($result)){
$i++;
$ges=$row->preis*$row->menge;
echo "
<tr><td><form method=post action=renew.php>
<b>$i.</b> <i><font size=2>(",$row->artikel_nr,")</font></i></td>
<td><font color=blue>",$row->name,"</font> <font size=2>(",$row->preis," EUR)</font></td>
<td>$ges EUR</td>
<td><input name=menge size=2 maxlength=255 value=",$row->menge,">
<input name=art size=5 maxlength=255 value=",$row->artikel_nr," type=hidden>
<input name=ses size=5 maxlength=255 value=",$row->session," type=hidden>
<input type=submit value=Ändern name=change></input></form></td>
</tr>\n";
}
echo"</table>
<hr>
";
}

Ich weiss nicht, wie ich nur die Preise hinterher addieren und ausgeben soll?
 
So, ich dachte, ich hätte ne möglichkeit gefunden...
Die Preise für die Addition einfach in ein Array scheriben und die Inhalte des Array addieren... Leider hängt sich dabei mein Xampp MySQL-Server weg und deaktiviert sich?!

Hier mein Code zur Addition:
PHP:
while ($row=mysql_fetch_object($result)){
$i++;
$x++;
$ges=$row->preis*$row->menge;
$addition[$x]=$row->preis;
echo "
<tr><td><form method=post action=renew.php>
<b>$i.</b> <i><font size=2>(",$row->artikel_nr,")</font></i></td>
<td><font color=blue>",$row->name,"</font> <font size=2>(",$row->preis," EUR)</font></td>
<td>$ges EUR</td>
<td><input name=menge size=2 maxlength=255 value=",$row->menge,">
<input name=art size=5 maxlength=255 value=",$row->artikel_nr," type=hidden>
<input name=ses size=5 maxlength=255 value=",$row->session," type=hidden>
<input type=submit value=Ändern name=change></input></form></td>
</tr>\n";
}
echo"</table>
<hr>
";
}

echo $x;
var_dump($addition);

$ergebnis="0";
for ($y = 0;$y = $x;$y++)
{
$ergebnis = $ergebnis + $addition[$y];
}

Also will ich die SAceh quasi so ähnlich haben wie das:
PHP:
for ($z = 0; $z <= 10; $z++) {
   echo $z;
   echo "<br>";
   $erg=$erg+$z;
}
   echo $erg;

Hier steht am Ende in $erg die 55 weil 0+1+2+3+4+5+6+7+8+9+10=55!
Jetzt möchte ich das gern auf meines +übertragen, ohne das mir das ganze abstürtzt!

kann mir einer bei DER Sache helfen? *hoffend bittet*
 
Zuletzt bearbeitet:
Zurück