Count

  • Themenstarter Themenstarter Comenius
  • Beginndatum Beginndatum
C

Comenius

Hallo,

Ich hätte da mal wieder eine Frage/Problem.

PHP:
   for($i = 0; $i < count($keys); $i++)
     {
   	mysql_connect($a, $b, $c) or die(mysql_error());
   	mysql_select_db($d) or die(mysql_error());
   	$sql = "SELECT * FROM kasse WHERE Vnummer='".$keys[$i]."'";
   	$result = mysql_query($sql) or die(mysql_error());
   	while($row = mysql_fetch_assoc($result))
   	{
 	  $Nummer	= $row[Vnummer];
   	  $Name	  = $row[Vartikel];
   	  $Preis	 = $row[Verkaufspreis];
   	  $ergebnis1 = $Preis + $ergebnis;
   	  $ergebnis  = $ergebnis1;
   	}
   }
     ?>

in $keys[i] stecken Zahlenketten, die gesplittet aus einer Textarea stammen. (jede Zahl hat also eine eigene Variable. $keys[0], $keys[1] usw...]

Mit den ganzen Variablen werden nun in einer for-schleife Datenbankabfragen gemacht zu der die Zahlen passen.

Die Zahlen sind Nummern von Produkten.

Von jedem produkt habe ich einen bestimmten Bestand (Vbestand) in der Mysql Tabelle.

Wenn ich nun zb. 3 mal die gleiche Nummer in der Textarea eingebe, wird das alles wunderbar in der for-schleife verarbeitet und ich bekomme alles schön angezeigt.

Nun möchte ich aber gerne alle GLEICHEN Eingaben zählen lassen und zusammen von dem Bestand in der Datenabnk subtrahieren lassen.

Hab leider keine Idee.

Hoffe ich habe mich verstänlich ausgedrückt :)

Wäre super, wenn mir wer helfen könnte.

Gruss
Commi
 
Hi, danke für den Link.

Wenn ich das jetzt richtig verstanden habe, sollte ich es erst in ein Array packen und dann irgendwie zählen etc.

Grmpf, mit "count" hätte ich einen anfang gehabt, aber mit "Array" komme ich jetzt überhaupt nicht klar.

Das passt irgendwie nicht in meine Vorstellung die ich zum lösen dieses Problems gehabt habe...

Kannst du mir vielleicht sagen, wie man das umsetzen kann ?

Ein Anfang würde reichen, hab halt leider überhaupt keine Idee.

Danke :)

Gruss
Commi
 
Mein Tipp bezieht sich erst mal nur auf das Zählen der gleichen Nummern. Wenn ich Dich richtig verstehe befinden sich in $keys Produktkeys, richtig?
Zum Beispiel:
PHP:
$keys[0] = 10040;
$keys[1] = 39490;
$keys[2] = 30303;
$keys[3] = 30404;
$keys[4] = 69969;
$keys[5] = 27278;
$keys[6] = 34994;
$keys[7] = 30397;

Jeden dieser Keys prüfst Du nun über die Datenbankabfrage wie oft diese Verkauft wurden, richtig? Jetzt kannst Du natürlich die Ergebnisse in ein array schreiben, z. B. $verkauft_anzahl. Und dieses Array enthält dann nun die verkauften Produktschlüssel.

Zum Beispiel:
PHP:
$verkauft_anzahl[0] = 10040;
$verkauft_anzahl[1] = 39490;
$verkauft_anzahl[2] = 10040;
$verkauft_anzahl[3] = 39490;
$verkauft_anzahl[4] = 69969;
$verkauft_anzahl[5] = 10040;
$verkauft_anzahl[6] = 34994;
$verkauft_anzahl[7] = 39490;

Mit folgendem Code zählst Du nun die Anzahl der einzelnen Schlüssel:
PHP:
$verkauft_anzahl = array_count_values ($keys[]);

Das Ergebnis wäre in diesem Fall:

Code:
Array
(
    [10040] => 3
    [39490] => 3
    [69969] => 1
    [34994] => 1
)

Und mit diesem Array kannst Du nun die einzelnen Werte aus dem Lagerbestand löschen lassen :)

Soweit verstanden? Ist gar nicht so schwer :p
 
Hmmm,

So wie ich das verstanden habe, sind die oberen beiden Code-Felder nur zur Erklärung.

Ich habe jetzt mal deinen Einzeiler-Code kopiert, um es bei mir auszuprobieren.

Als erstes bekam ich ne Fehlermeldung, dann habe ich mal eine Zahl in die "[]" geschrieben... wieder nen Fehler...
Im moment läuft es so ohne Fehlermeldung:

PHP:
 $verkauft_anzahl = array_count_values ($keys);

Ich weiss nur leider nicht ob das so auch funktioniert, da ich es irgendwie nicht ausgeben lassen kann.

Vom Verstehen her hast du Recht, es ist wirklich leicht... aber Verstehen ist leider immer nur die Hälfte.

Wäre super, wenn du mir da vielleicht nochmal helfen könntest :)

Gruss
Commi
 
Comenius hat gesagt.:
So wie ich das verstanden habe, sind die oberen beiden Code-Felder nur zur Erklärung.

Als erstes bekam ich ne Fehlermeldung, dann habe ich mal eine Zahl in die "[]" geschrieben... wieder nen Fehler...

Ich weiss nur leider nicht ob das so auch funktioniert, da ich es irgendwie nicht ausgeben lassen kann.
Genau, die ersten zwei Felder sind nur zur Erklärung.

Der Fehler kam, weil ich wohl im Halbschlaf etwas vergessen hab ... statt $keys[] muss natürlich die $var hin wo Du die Nummern in ein Array gespeichert hast.
Du kannst es ausgeben lassen indem Du
PHP:
print_r($verkauft_anzahl);
verwendest. PHP gibt dann schön formatiert das Array aus.

Aber ich habe mir noch einmal Dein Script angeschaut und bin mir nicht mehr sicher ob mein Beispiel bei Dir funktioniert. Es hängt davon ab wie Du die Daten in der DB speicherst.

Probier mal folgendes Beispiel. Das dürfte die Anzahl der Ergebnisrows in ein Array schreiben (wie im vorigen Beispiel, nur bereits in Dein Script integriert).
PHP:
for($i = 0; $i < count($keys); $i++)
     {
       mysql_connect($a, $b, $c) or die(mysql_error());
       mysql_select_db($d) or die(mysql_error());
       $sql = "SELECT * FROM kasse WHERE Vnummer='".$keys[$i]."'";
       $result = mysql_query($sql) or die(mysql_error());
           // neue Zeilen
           $zeilencounter = $keys[$i];
           $num_rows[$zeilencounter] = mysql_num_rows($result);
           // neue Zeilen ende
       while($row = mysql_fetch_assoc($result))
       {
      $Nummer    = $row[Vnummer];
         $Name      = $row[Vartikel];
         $Preis     = $row[Verkaufspreis];
         $ergebnis1 = $Preis + $ergebnis;
         $ergebnis  = $ergebnis1;
       }
   }
           // neue Zeile
print_r($num_rows);
           // neue Zeile ende
 
Hi,

Sorry das ich jetzt erst antworte, aber ich bekan keine Mail von Tutorials und dachte das sich noch niemand gerührt hat.

Zu deinem Code:

Ich habe den mal bei mir "eingepasst".
Es läuft auch an und für sich, aber etwas passt doch nocht nicht so richtig.

PHP:
  for($i = 0; $i < count($keys); $i++)
  	 {
  	   mysql_connect($a, $b, $c) or die(mysql_error());
  	   mysql_select_db($d) or die(mysql_error());
  	   $sql = "SELECT * FROM kasse WHERE Vnummer='".$keys[$i]."'";
  	   $result = mysql_query($sql) or die(mysql_error());
  		   // neue Zeilen
  		   $zeilencounter = $keys[$i];
  		   $num_rows[$zeilencounter] = mysql_num_rows($result);
  		   // neue Zeilen ende
  	   while($row = mysql_fetch_assoc($result))
  	   {
  	  $Nummer	= $row[Vnummer];
  		 $Name	  = $row[Vartikel];
  		 $Preis	 = $row[Verkaufspreis];
  		 $ergebnis1 = $Preis + $ergebnis;
  		 $ergebnis  = $ergebnis1;
  	   }
  ?>
  
    
  <table border="0">
  <tr>
  <td width="236" bgcolor="#F0F0F0">
  <font face="Arial,Helvetica,Geneva,sans-serif" color="#000000" size=2"> 
  <b><?php echo $Nummer; ?></b>
  </font>
  </td>
  <td width="236" bgcolor="#F0F0F0">
  <font face="Arial,Helvetica,Geneva,sans-serif" color="#000000" size=2"> 
  <b><?php echo $Name; ?></b>
  </font>
  </td>
  <td width="236" bgcolor="#F0F0F0">
  <font face="Arial,Helvetica,Geneva,sans-serif" color="#000000" size=2"> 
  <b><?php echo $Preis; ?></b>
  </font>
  </td>
  </tr>
  </table>
   
  <?php 
  }
  		   // neue Zeile
  print_r($num_rows);
  		   // neue Zeile ende 
  ?>


Ich habe vergessen in meinem geposteten Code die Ausgabe-Tabelle mit anzugeben. Davon konntest du nichts wissen.
Nun habe deinen Code mal so angepasst, dass es bei mir passt.
(Dürfte eigentlich kein Fehler drin sein...)

Die ausgabe passt aber noch nicht so ganz. (siehe Bild)

Eigentlich ist mir der Count-Befehl bei Mysql bekannt, aber da komme ich auch nicht weiter. :rolleyes:

Naja, vielleicht findest du ja noch was :):):)
Wäre klasse

Gruss
Commi
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    12,9 KB · Aufrufe: 95
Ich glaube wir haben ein Verständnisproblem ... oder zumindest ich :-)

Ich nehme mal an, Deine Tabellen sehen so aus:
Tabelle Vbestand
Artikelnummer, Artikelbestand
Tabelle kasse
Vnummer, Vartikel, Verkaufspreis

Was macht Dein Code-Teil?
Ist es der Warenkorb? Dann ist mein Beispiel vermutlich nicht korrekt.

Nehmen wir mal an, dies ist die Bestandstabelle:

### Vbestand #####################
# Artikelnummer ##### Artikelbestand #
# 393449 ##### 5 #
# 495047 ##### 6 #
# 406847 ##### 1 #
# 393948 ##### 9 #
#################################

Und dies die Kasse

### kasse #######################################
# Artikelnummer ##### Artikelname #### Verkaufspreis #
# 393449 ##### Half Life 2 #### 22,50 #
# 393449 ##### Half Life 2 #### 22,50 #
# 495047 ##### Moto GP #### 10,99 #
###############################################


Und jetzt sollen die Artikel in der Kasse vom Bestand in Vbestand abgezogen werden?
 
Hi,

Das was ich mir da so zusammengebastelt habe, ist eigentlich ein Versuch ein kleines Kassensystem zu machen (nicht mit normalen Programmiersprachen, sondern eben mit PHP *g*)

Ich habe nur diese eine Tabelle die du in dem Code / der Grafik gesehen hast.


Nun habe ich eine Textarea in der ich unendlich viele Nummern eingeben kann.
(genauso als wenn du 10 Artikel bei Media-Markt kaufst... die werden dann auch alle eingescannt und anschliessend zusammengezählt.)

Diese werden dann nach jedem Zeilenumbruch gesplittet.
(es ist also jede nummer in einer Variable "$keys[0], $keys[1]" usw...)

Dann wird der ganze Kram per Get an die nächste Seite übergebent.
(Den Code von dieser kannst du hier ja nachlesen... darum geht es ja jetzt :-) )

In der for-Schleife wird dann mit jeder Nummer die Datenbank abgefragt und die Passenden Preise und Artikelnamen herausgesucht und anschliessend in der Tabelle schön untereinander aufgelistet.
(Da jeder Artikel der in dieser Tabelle steht eigentlich schon verkauft ist, muss er ja vom restlichen Bestand abgezogen werden, damit ich weiss wie viele ich davon noch habe und evtl. nachbestellen muss)

Und dafür muss ich nun alle Nummern herausfiltern und zählen lassen. Auch muss es funktionieren, wenn zwei gleiche Artikel gekauft werden.. dann also doppelt zählen.

Und wenn ich dann jede einzelne Nummer habe, möchte ich sie per Mysql von dem restlichen Bestand subtrahieren lassen.


Ich habe schon so ein Kassensystem das auch funktioniert (in einer Windows-Sprache) aber mich würde Interessieren ob das so auch hinhaut (was ich schon glaube, weil bis jetzt läuft ja auch alles)

Najut, ich hoffe das ich mein Vorhaben verständlich erklärt habe :)

Gruss
Commi
 
Grmpf... Mir ist gerade aufgefallen, dass ich die Artikelnummern ja schon alle in einer Variablen habe! ( $keys[$i] )

Hat auch nur gut 1 Woche gedauert um darauf zu kommen *kopfschüttel* löl

Hab trotzdem Dank für deine Hilfe :)

Gruss
Commi
 
Zurück