php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-12-2009, 10:46
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard Formularfelder mit Inhalt grösser als 0?

Liebe PHP-Gemeinde

Ich habe ein Formular, auf dem z.B. 20 Produkte aufgelistet sind. Neben jedem Produkt hat es ein Eingabefeld, in dem man die Anzahl eintragen kann. Standardmässig steht "0" drin.

Wenn jetzt bei z.B. 3 Produkten jeweils eine Anzahl eingetragen wird und das Formular abgeschickt wird, sollten im Mail natürlich nur diese 3 Produkte mit der jeweiligen Anzahl aufgelistet sein.

Welchen PHP-Ansatz muss ich da nehmen damit nicht auch die anderen 17 Produkte mit "0"-Anzahl aufgelistet werden? Wäre "for-each" der richtige Weg? Also so:

for($_POST['anzahl'] > 0) {
Auflistung*
}

*diesen Auflistungscode muss ich dann natürlich noch herausfinden und ergänzen.. aber mir gehts jetzt vor allem mal um den "for"-Code.

Vielen Dank für eure Hilfe
Mit Zitat antworten
  #2 (permalink)  
Alt 31-12-2009, 13:46
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Wie hast du denn die einzelnen Eingabefelder benannt?

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 31-12-2009, 14:22
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Wie hast du denn die einzelnen Eingabefelder benannt?
Peter
Hallo Peter

Das Anzahl-Feld sieht im jeweils Formular so aus:
HTML-Code:
<input value="0" name="anzahl[154]" />
<input value="0" name="anzahl[157]" />
<input value="0" name="anzahl[162]" />
<input value="0" name="anzahl[163]" />
<input value="0" name="anzahl[166]" />
usw.
Wobei die Zahl in den eckigen Klammern jeweils der Artikel-Nr. entspricht.
Im Mail steht dann also quasi:

Anzahl für Artikel 157: 4
Anzahl für Artikel 163: 7
Mit Zitat antworten
  #4 (permalink)  
Alt 31-12-2009, 14:35
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Und wo ist nun das Problem? Zur Anschauung:
PHP-Code:
$str '';
foreach(
$_POST['anzahl'] as $key => $value)
{
  if (!empty(
$value))
  {
    
$str .=  $key.'-'.$value."\n";
  }
}
echo 
$str
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 31-12-2009, 14:39
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

PHP-Code:
foreach($_POST["anzahl"]) as $artikelNr=>$anzahl)
{
   if(
$anzahl 0)
   {
       
//mach was
   
}

__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #6 (permalink)  
Alt 31-12-2009, 16:34
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Und wo ist nun das Problem? Zur Anschauung:
PHP-Code:
$str '';
foreach(
$_POST['anzahl'] as $key => $value)
{
  if (!empty(
$value))
  {
    
$str .=  $key.'-'.$value."\n";
  }
}
echo 
$str
Peter
jetzt praktisch nirgends mehr..

mir war einfach nicht klar wie ich es in die for-Schleife packen sollte. Bzw. wollte ich die Abfrage quasi schon in der foreach-Zeile machen.... So gibts mir jetzt schön die Artikel-ID und die Anzahl aus. Jetzt brauche ich es eigentlich nur noch mit den restlichen Angaben zu kombinieren. Aber das sollte ich hinkriegen!
Vielen Dank!!!
Mit Zitat antworten
  #7 (permalink)  
Alt 02-01-2010, 11:00
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das nächste Problem ist jetzt doch noch aufgetaucht...
Die Ausgabe nur von den Artikeln bei denen der Kunde eine Anzahl eingibt, klappt perfekt. Jetzt hat es aber ein weiteres Input-Feld "extras" gegeben. In diesem Feld sind standardmässig versch. mögliche Geschmacksrichtungen eingetragen. Der Kunde kann nun aus diesem Feld, wenn nötig, die Geschmacksrichtungen löschen, die er nicht will...

Code:
<input value="Natur,Curry" name="geschmacksrichtung[153]" /> 
<input value="0" name="anzahl[153]" />

<input value="Natur,Curry,Peperoncino" name="geschmacksrichtung[156]" /> 
<input value="0" name="anzahl[156]" />

<input value="Natur,Quattro gusti" name="geschmacksrichtung[157]" /> 
<input value="0" name="anzahl[157]" />

<input value="Natur" name="geschmacksrichtung[160]" /> 
<input value="0" name="anzahl[160]" />

<input value="Natur,Curry" name="geschmacksrichtung[163]" /> 
<input value="0" name="anzahl[163]" />
Ich dachte mir jetzt, ich könnte ja bei der foreach-Anweisung eine zweites Element einbauen, also in dieser Art

Code:
$str = '';

foreach($_POST['anzahl'] as $key => $value AND $_POST['geschmacksrichtung'] as $key2 => $value2 ) 

{
  if (!empty($value))
  {
    $str .=  $key.'-'.$value.'-'.$value2."\n";
  }
}
echo $str;
Aber das bringt mir eine Fehlermeldung. Gibt es eine Möglichkeit, diese zwei Anweisungen zu kombinieren?
Als Ausgabe sollen wie bisher nur die Einträge aufgeführt werden, die auch Anzahl grösser als 0 haben. Aber einfach noch mit dem dazugehörenden Geschmacksfeld.

Hoffe ihr versteht was ich meine....
Vielen Dank!

Geändert von Fanello (02-01-2010 um 11:02 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 02-01-2010, 11:20
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum willst du das überhaupt übergeben? Woher kommen die Geschmacksrichtungen? Gibt die der User ein?
Mit Zitat antworten
  #9 (permalink)  
Alt 02-01-2010, 11:33
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das ganze ist eigentlich ein ganz "simpler" Shop-Script.
Die Geschmacksrichtungen stehen bereits in diesem Input-Feld, da diese aus der DB ausgelesen werden. Die Produkte haben aber nicht alle die gleichen Geschmacksrichtungen.
Einige sind nur "Natur", andere haben z.B. auch Curry und/oder Peperoncino.

Der User kann nun bei einem Produkt mit mehreren Geschmacksrichtungen diejenige aus dem Input-Feld löschen, die er nicht will.

Es ist eigentlich nicht ganz ideal her vom Ansatz.. denn es wäre wahrscheinlich einiges benutzerfreundlicher, wenn es mit Checkboxen gelöst wäre. Also bei jedem Produkt sind die versch. erhältlichen Geschmacksrichtungen mittels Checkbox anwählbar.

Da hätte ich aber auch ein Problem.. Die Geschmacksrichtungen sind in der einem Feld der DB-Tabelle eingetragen und jeweils mit einem Komma getrennt. Also z.B. "Natur,Curry,Peperoncino". Mit "explode" könnte ich diese ja nun quasi in ein Array schreiben. Aber nun müsste ich aus diesem Array Checkboxen generieren, und da hört mein aktuelles Wissen auf..
Müsste das mit einer While-Schleife gelöst werden?
Mit Zitat antworten
  #10 (permalink)  
Alt 02-01-2010, 11:36
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Fanello Beitrag anzeigen
das ganze ist eigentlich ein ganz "simpler" Shop-Script.
Die Geschmacksrichtungen stehen bereits in diesem Input-Feld, da diese aus der DB ausgelesen werden. Die Produkte haben aber nicht alle die gleichen Geschmacksrichtungen.
Einige sind nur "Natur", andere haben z.B. auch Curry und/oder Peperoncino.
Und warum übergibst du die Geschmacksrichtungen im Input-Feld, wenn sie doch eh in der Datenbank stehen? Es reicht doch, wenn du einfach nur die ID übergibst:

Code:
<input type="text" name="anzahl[1]" />
<input type="text" name="anzahl[2]" />
<input type="text" name="anzahl[3]" />
1, 2 und 3 wären in dem Fall die ID zum Eintrag in der Datenbank.

Zitat:
Zitat von Fanello Beitrag anzeigen
Da hätte ich aber auch ein Problem.. Die Geschmacksrichtungen sind in der einem Feld der DB-Tabelle eingetragen und jeweils mit einem Komma getrennt. Also z.B. "Natur,Curry,Peperoncino". Mit "explode" könnte ich diese ja nun quasi in ein Array schreiben. Aber nun müsste ich aus diesem Array Checkboxen generieren, und da hört mein aktuelles Wissen auf..
Müsste das mit einer While-Schleife gelöst werden?
Das Datenbankdesign ist fehlerhaft. Mehrere Werte dürfen nicht mit Komma getrennt werden. Halte ich an die Normalformen:

Normalisierung (Datenbank) – Wikipedia

Geändert von h3ll (02-01-2010 um 11:38 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 02-01-2010, 11:50
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Und warum übergibst du die Geschmacksrichtungen im Input-Feld, wenn sie doch eh in der Datenbank stehen? Es reicht doch, wenn du einfach nur die ID übergibst:

Code:
<input type="text" name="anzahl[1]" />
<input type="text" name="anzahl[2]" />
<input type="text" name="anzahl[3]" />
der User muss ja aber die Möglichkeit haben, die Geschmacksrichtung zu löschen die er nicht will. Es kann ja sein, dass ein Produkt in 4 Geschmacksrichtungen erhältlich ist und vielleicht mag er zwei davon überhaupt nicht und er will das Produkt nur in den anderen beiden Geschmacksrichtungen haben.
Mit Zitat antworten
  #12 (permalink)  
Alt 02-01-2010, 11:55
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Fanello Beitrag anzeigen
der User muss ja aber die Möglichkeit haben, die Geschmacksrichtung zu löschen die er nicht will. Es kann ja sein, dass ein Produkt in 4 Geschmacksrichtungen erhältlich ist und vielleicht mag er zwei davon überhaupt nicht und er will das Produkt nur in den anderen beiden Geschmacksrichtungen haben.
Dafür gibts die Check-Boxen.
Mit Zitat antworten
  #13 (permalink)  
Alt 02-01-2010, 12:03
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Dafür gibts die Check-Boxen.
ja genau. Das war jetzt eben die zweite Überlegung. Ist es möglich die im aktuellen Datenbank-Design aufgeführten Geschmacksrichtungen (mit Komma getrennt) in Checkboxen zu generieren?
Wäre das nicht der richtige Ansatz?
Code:
for($i=0;$i<count($geschmack);$i++)
{
echo '<input type="checkbox" name="check'.$i.'" value="'.$geschmack[$i].'">'.$geschmack[$i].'<br>';
}
Mit Zitat antworten
  #14 (permalink)  
Alt 02-01-2010, 12:04
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Geht mit explode() und foreach(). Würde aber dringend dazu raten, das Datenbankdesign in Ordnung zu bringen, sonst wirst du in Zukunft auf weitere Probleme stoßen.
Mit Zitat antworten
  #15 (permalink)  
Alt 02-01-2010, 13:18
Fanello
 Registrierter Benutzer
Links : Onlinestatus : Fanello ist offline
Registriert seit: Jul 2005
Beiträge: 64
Fanello ist zur Zeit noch ein unbeschriebenes Blatt
Standard

werde mir die Zeit auf jeden Fall nehmen.. sobald der Auftrag abgeschlossen ist. Leider haben wir diesen Übernommen und mein Chef hat sich einfach zu wenig gut informiert wie der Aufwand wäre...

Auf jeden Fall habe ich es jetzt hinbekommen, dass bei jedem Produkt die Anzahl benötigter Checkboxen angzeigt wird.

Danke!!!

Als nächstes muss ich noch die Checkbox-Formularwerte übertragen.. aber das sollte ich hinbekommen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MYSQL, Tabelle auslesen mit gleich oder grösser. Xad1 SQL / Datenbanken 12 09-11-2004 19:08
Datum und Uhrzeit grösser als ... jetzt Doomer SQL / Datenbanken 8 01-04-2004 23:06
Abfrage Datum1 grösser als Datum2, geht das? Der-Sucher PHP Developer Forum 11 31-08-2003 16:33
mail - Schrift grösser, aber nicht per html?! soenke PHP Developer Forum 22 19-08-2003 15:45
Where Feld 1 grösser als $var1 und kleiner als $var2 BlackPixel SQL / Datenbanken 32 24-12-2002 00:14

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:39 Uhr.