Danke dir Mit den '' und "" komme ich immer wieder durcheinander
Achso, ich dachte weil ich ja schon im "echo" bin, brauche ich das nicht noch einmal schreiben.
Danke dir Mit den '' und "" komme ich immer wieder durcheinander
Achso, ich dachte weil ich ja schon im "echo" bin, brauche ich das nicht noch einmal schreiben.
Moin,
ich hab ein kleines Problem. Kann ich innerhalb von einer Echo Ausgabe eine IF Abfrage machen?
echo "<div class="abstand_preis">";
echo "<form method="post" action="">
if ($record['p_vk1'] == '' && $ps_p1 == 0):
<input type="radio" name="preis" id="".htmlspecialchars($record['p_code'])."-preis1" value="$preis1" onClick="document.getElementById('button_".htmlspecialchars($record['p_code'])."').disabled=false; document.getElementById('eigener_preis').style.display='none';">
<label for="".htmlspecialchars($record['p_code'])."-preis1">$preis1 €</label>
endif;
<input type="radio" name="preis" id="".htmlspecialchars($record['p_code'])."-preis2" value="$preis2" onClick="document.getElementById('button_".htmlspecialchars($record['p_code'])."').disabled=false; document.getElementById('eigener_preis').style.display='none';">
<label for="".htmlspecialchars($record['p_code'])."-preis2">$preis2 €</label>
[......]
Alles anzeigen
In meiner PHP Error Log steht folgendes:
PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Hallo cottton,
vielen dank für deine Hilfe, ich verzichte auf meine Funktion und setzte es so um wie du es gemacht hast. Dazu hätte ich noch eine Frage, wenn für mich ist nicht ganz klar, wie du es schaffst, alle Beträge zusammen zu zählen Ich nehme an, es liegt an dieser Zeit
heißt das mit dem + kann man bei jedem Durchlauf der Schleife einen Betrag mit dranhängen? Hab dieses so noch nie gesehen.
Außerdem hätte ich noch eine weitere Frage zum zählen, entweder kann ich bzw. OpenOffice nicht richtig zusammen zählen, oder PHP macht einen kleinen Fehler:
Folgende Beträge sollen zusammengezählt werden:
ZitatAlles anzeigen5,95
13,39
13,39
5,95
14,33
14,33
macht zusammen laut OpenOffice 67,34 Euro. Wenn ich dein PHP Code ausführen lasse, dann kommt 67,33 Euro raus. Ich meine wir reden wir von einem Cent, aber dennoch wäre es schön, wenn PHP richtig rechnet oder auch OpenOffice
Zu deiner Frage warum ich beide Beträge speichere, das mache ich nicht In meiner Datenbank stehen Preise mit einem , also deutscher Schreibweise, deshalb lass ich die für bestimmte Funktionen wieder umrechnen, dass PHP damit rechnen kann.
Hallo,
mein Warenkorb funktioniert sehr gut, nun möchte ich gerne noch die Summe zusammen zählen, das ist meine Funktion die ich bis jetzt habe:
function warenkorb($mysqli, $userID) {
$stmt = $mysqli->prepare("SELECT wk_id, wk_wkID, wk_userID, wk_artikelID, wk_preis, wk_test, wk_mail_fax, p_bezeichnung, p_artnr, p_farbe, p_inhalt
FROM web_warenkorb
LEFT JOIN web_produkte ON web_produkte.p_code = web_warenkorb.wk_artikelID
WHERE wk_userID = ? ");
$stmt->bind_param("s", $userID);
$stmt->execute();
$stmt->bind_result($wk_id, $wk_wkID, $wk_userID, $wk_artikelID, $wk_preis, $wk_test, $wk_mail_fax, $p_bezeichnung, $p_artnr, $p_farbe, $p_inhalt);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$warenkorb[] = array(
'wk_id' => $wk_id,
'wk_wkID' => $wk_wkID,
'wk_userID' => $wk_userID,
'wk_artikelID' => $wk_artikelID,
'wk_preis' => $wk_preis,
'wk_test' => $wk_test,
'wk_mail_fax' => $wk_mail_fax,
'p_bezeichnung' => $p_bezeichnung,
'p_artnr' => $p_artnr,
'p_farbe' => $p_farbe,
'p_inhalt' => $p_inhalt
);
}
return $warenkorb;
}
}
Alles anzeigen
Meine Ausgabe sieht dann so aus
foreach($warenkorb as $array){
$BruttoBetrag = round(str_replace (",", ".", $array['wk_preis']) * 1.19, 2);
$BruttoBetrag = str_replace (".", ",", $BruttoBetrag);
echo htmlspecialchars($array['p_artnr']);
echo htmlspecialchars($array['wk_preis']);
}
Alles anzeigen
Benötige ich jetzt eine zweite Funktion um den Preis zusammen zählen zu können, oder könnte ich dieses mit in meine Hauptfunktion bauen? Ich weiß dass ich es scheinbar direkt in MySQL machen kann mit SUM(wk_preis) AS 'betragKomplett' aber wie wende ich diese an? Auf PHP.net habe ich gelesen, es könnte wohl auch mit Array_sum machen, aber auch hier weiß ich nicht so recht, wie ich dieses anwenden soll.
Vielleicht könnt ihr mir hier weiterhelfen. Der Preis soll natürlich nur einmal ganz am Ende meiner Auflistung stehen. Ich hoffe ihr versteht was ich meine.
Edit: Mit einer Zusätzlichen Funktion geht es
function warenkorbPreis($mysqli, $userID){
$stmt = $mysqli->prepare("SELECT SUM(wk_preis) AS `preisKomplett` FROM web_warenkorb WHERE wk_userID = ? ");
$stmt->bind_param("s", $userID);
$stmt->execute();
$stmt->bind_result($preisKomplett);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$warenkorbPreis[] = array(
'preisKomplett' => $preisKomplett
);
}
return $warenkorbPreis;
}
}
Alles anzeigen
Danke für deine Antwort, wenn ich deinen Code benutzt, erhalte ich folgende Meldung:
ZitatFatal error: Cannot pass parameter 2 by reference
Es muss scheinbar erst eine Variable angelegt werden, die ich dann in bind_parmas verwenden kann, so klappt es:
Moin,
eine kleine Frage, ich möchte gerne aus meiner Suche
if ($KdSuche) {
$stmt = $mysqli->prepare($select . " WHERE kd_firma =?" );
$stmt->bind_param("s", $KdSuche);
}
ein LIKE machen, dass ich nicht genau den Namen schreiben muss. Dazu benötige ich ja das LIKE %WERT% Nur die Frage ist, wie setzte ich das LIKE bei $mysqli->prepare da arbeite ich ja mit =?
Schau mal bitte was ich geschrieben habe und was für eine falsche Antwort du postest. Aber es hat sich eh erledigt, von daher ist keine weitere Diskussion notwendig.
Moin,
was ist an meiner Frage denn nicht zu verstehen? Ich habe z.B. 50 Artikel in meinem Warenkorb, wählen nun einen Kunden aus und möchte ALLE Artikel mit einem Klick einem anderen Kunden zuordnen.
Jetzt verstanden wo mein Problem lag?
Hallo,
die Frage war, wie ich kann ich mehrere Einträge updaten Ich habe doch mein Code schön eingerückt?
Hallo,
ich wollte mehrere Einträge updaten, dachte es geht so:
if(isset($_POST['abschicken'])){
foreach($warenkorb as $array){
if ($stmt = $mysqli->prepare("Update web_warenkorb SET wk_test=? WHERE wk_wkID=?"))
{
$wk_test = $_POST["kunden"];
$wk_wkID = $array['wk_wkID'];
$stmt->bind_param("ss", $wk_test, $wk_wkID);
$stmt->execute();
}
else {
echo $mysqli -> error;
}
}
header("Location: test#uebersicht");
}
Alles anzeigen
Ich bekomme aber immer nur den ersten upgedate, warum?
EDIT - 04.06.2015 - 14:06 Uhr:
OK, ich muss zuerst die Max-Anzahl auslesen von allen Artikel, das habe ich nun so gemacht
$countWK = countWK($mysqli, $object->user_code);
foreach($countWK as $countWK){
$glo = $countWK['amount'];
}
Und anschließend kann ich das Update durchführen und muss einen Zähler nach oben setzten:
if(isset($_POST['abschicken'])){
foreach($warenkorb as $array){
for($x=0;$x<$glo;$x++){ if ($stmt=$mysqli->prepare("Update web_warenkorb SET wk_test=? WHERE wk_wkID=?"))
{
$wk_test = $_POST["kunden"];
$wk_wkID = $array['wk_wkID'];
$stmt->bind_param("ss", $wk_test, $wk_wkID);
$stmt->execute();
}
else {
echo $mysqli -> error;
}
}}
header("Location: test#uebersicht");
}
Alles anzeigen
Wenn ihr noch Verbesserungen habt einfach sagen.
Ich verstehe es auch nicht, lasse ich dieses ausgeben:
erhalte ich dieses:
17,64
150
das heißt also, die Variablen sind richtig gefüllt?
Es liegt an dem , da muss ein Punkt hin Kann ich das , bei der Ausgabe in ein . umwandeln um damit zu rechnen?
OK so: $preis1 = str_replace (",", ".", $object->p_preis) * (1+$ps_p1/100); jetzt muss ich es nur nach dem Rechnen wieder umwandeln?
OK, das geht dann wohl so: <?php echo htmlspecialchars(str_replace (".", ",", $preis1)); ?><br>
Und mit runden auf zwei Nachkommastellen geht es so: $preis1 = round(str_replace (",", ".", $object->p_preis) * (1+$ps_p1/100),2);
Hab es jetzt so gemacht:
$preis1 = $object->p_preis*(1+$ps_p1/100);
Nun erhalte ich 42.5 Euro es muss aber 43,83 raus kommen.
Guten Abend,
die Frage ist ja schon etwas peinlich, aber ich komme einfach nicht dauf
In
steht ein Preis sagen wir 17,46 in
steht ein % Wert sagen wir 150 jetzt möchte ich also Grundpreis * % wie mache ich dieses mit PHP? Als Ergebnis muss 43,65 raus kommen Die 150 ist nur ein Beispiel, es kann auch mal 22 oder 22,5 vorkommen usw.
Vielen Dank für die Hilfe.
Dazu hätte ich noch eine Frage, warum müssen die Daten aus der Datenbank genauso ausgegeben werden wie auf dem Bild bisschen weiter oben zu sehen ist? Würde es nicht mit „normalen“ Daten gehen, wie ich auch das erste Dropdown fülle? Also eine ganz „normale“ Datenbankabfrage?
Hab da hier https://www.youtube.com/watch?v=TvTQnVIAnQY gesehen.
Hallo,
danke für deine Antwort. Aber es funktioniert leider nicht. Ich darf a) leider NICHTS an der Datenbank ändern, da diese Daten von extern kommen und ich unterschrieben musste, dass die Daten genau so genutzt werden, wie diese geliefert werden und an den Scripten kann ich auch kaum noch etwas ändern, da so viel andere Sachen schon damit verbunden sind. Ich muss schauen wie ich das mit meinem Code gelöst bekomme.
EDIT:
Ich habe mal deinen Code eingebaut und es sieht im Quelltext sehr nach Fehler aus? :o
[Blockierte Grafik: http://fs1.directupload.net/images/150403/lbsxubbs.jpg]
Außerdem bleibt mein Feld Serien leider komplett leer. Ist es sinnvoll ALLE Daten im Quelltext ausgeben zu lassen? Ich finde das ehrlichgesagt nicht wirklich schön.
Guten Abend,
durch das Forum konnte ich schon einige lernen. Hab mich nun entschlossen hier anzumelden da ich einfach nicht mehr weiter kommen. Ich hoffe mein Vorhaben ist nicht so schwer umzusetzen. ich bin schon am verzweifeln.
Ich habe in meiner Datenbank zwei Tabellen (an diesen kann ich leider auch nichts mehr ändern, da diese bereits mehrere Tausend Einträge haben)
CREATE TABLE IF NOT EXISTS `web_hersteller` (
`h_id` int(11) NOT NULL,
`h_titel` varchar(100) NOT NULL,
`h_titelURL` varchar(100) NOT NULL,
`h_status` varchar(2) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `web_serien` (
`s_id` int(11) NOT NULL,
`s_hID` varchar(100) NOT NULL,
`s_titel` varchar(200) NOT NULL,
`s_titelUrl` varchar(200) NOT NULL,
`s_status` varchar(1) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8;
In der ersten Tabelle in alle Hersteller vorhanden z.B.
Brother
Canon
Dell
In der zweiten Tabelle in alle Serien aufgelistet z.B.
AX
BSE
CE
Das erste Auswahlfeld mit den Herstellern lasse ich durch diesen (auch hier im Forum gefunden und angepassten) Code füllen:
function hersteller($mysqli) {
$stmt = $mysqli->prepare("SELECT id, titel, titelURL, status FROM web_hersteller");
$stmt->execute();
$stmt->bind_result($id, $titel, $titelURL, $status);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$hersteller[] = array(
'id' => $id,
'titel' => $titel,
'titelURL' => $titelURL,
'status' => $status
);
}
return $hersteller;
}
}
Alles anzeigen
<select name="hersteller" id="hersteller">
<option>-- Bitte wählen --</option>
<?php
$hersteller = hersteller($mysqli);
foreach($hersteller as $array){ ?>
<option value="<?php echo $array['id'];?>"<?php echo ($s_hID == $array['id'] ? "selected" : "");?>><?php echo $array['titel'];?></option>
<?php } ?>
</select>
Klappt auch alles wunderbar. Nun habe ich ein zweites Auswahlfeld mit allen Serien dieses wird mit diesem PHP Code gefüllt
function serien($mysqli) {
$stmt = $mysqli->prepare("SELECT id, hID, titel, titelUrl, status, titel FROM web_serien LEFT JOIN web_hersteller ON web_hersteller.id = web_serien.hID");
$stmt->execute();
$stmt->bind_result($id, $hID, $titel, $titelUrl, $status, $titel);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$serien[] = array(
'id' => $id,
'hID' => $hID,
'titel' => $titel,
'titelUrl' => $titelUrl,
'status' => $status,
'titel' => $titel
);
}
return $serien;
}
}
Alles anzeigen
<select name="serien" id="serien">
<option>-- Bitte wählen --</option>
<?php
$serien = serien($mysqli);
foreach($serien as $array){ ?>
<option value="<?php echo $array['id'];?>"<?php echo ($hID == $array['id'] ? "selected" : "");?>><?php echo $array['titel'];?></option>
<?php } ?>
</select>
Ab jetzt fangen meine Probleme an. Das zweite Auswahlfeld darf natürlich nur diese Daten beinhalten, die zum Hersteller passen, welchen ich im ersten Auswahlfeld ausgewählt habe. Ist im ersten noch nichts ausgewählt, sollte das untere leer sein. Gut währe, wenn die Seite nicht neu aufgebaut wird. Ich habe hier http://www.blogrammierer.de/jq…-boxen-mit-ajax-befullen/ auch etwas gefunden, aber das sieht für mich nicht wirklich gut aus, denn dann hätte ich ja ständig alle Daten in einer Datei stehen?
Ich hoffe ich habe es so geschrieben, dass ihr mein Problem erkennt und mir wenn möglich helfen könnt. Hoffe es ist nicht all zuschwer.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.