Rechnen mit PHP

Camod

Grünschnabel
Hallo Leute,

ich habe mir einen Preisberechner mit PHP gebastelt.
Der Kunde hat ein HTML-Formular wo er diverse Dinge ankreuzeln kann und sobald er auf berechnen klickt steht da die Summe.

Nun mein Problem: Die Preise habe ich im Value definiert.
HTML:
<input type="radio" name="sitemap" value="220"

Hier kostet die Dienstleistung 220 EUR.

Berechnet wird das ganze so:

Code:
$ergebnis = $_POST['sitemap'] + $_POST['workshop_konzeption']*3 + $_POST['workshop_inhalte']

Nun würde ich gerne die Werte aus einer Datenbank auslesen lassen und das ganze dann berechnen. Weiters würdet Ihr mir sehr weiterhelfen, wenn ich ausserdem och auf der ergebnis-Seite anzeigen lassen könnte, was der Kunde für Kästchen angeklickt hat.

Das heißt, wenn er angenommem im Formular anklickt, das er PC-Reparatur 90 min wünscht, steht dann auf der Ergebnis-Seite Sie wählten PC-Reparatur 90 min Preis

Vielen Dank schon mal
 
Hey,
ich würde das ungefähr so machen:

PHP:
$x = new Array('sitemap', 'workshop_konzeption', 'workshop_inhalte');

foreach($x as $y)
{
  if (isset($_POST['$y']))
    $select = $select." `$y`";
}

$query = "SELECT ".$select." FROM `tabelle`";
$result = mysql_query($query);
$preise = mysql_fetch_array($result);

foreach($preise as $preis)
{
  $ergebnis += $preis;
}

Musst du halt noch ein bissel an deine Bedürfnisse anpassen... ;)
 
WArum hast du $x = new Array(""); geschrieben statt $x = array(""); Hat das einen bestimmten Grund ?

gruß
henry
 
Sorry, das kapier ich nicht ganz - hoffe ich nerve nicht, aber da ich PHP lernen möchte könntest du mir eventuell erklären was da in etwa passiert?

Bekomme eine Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/web1/html/test/rechnen.php on line 32
 
Ok, pass auf ;)
PHP:
$x = array('sitemap', 'workshop_konzeption', 'workshop_inhalte');
//Das Array könntest du natürlich auch einfach mit den Namen deiner Kostenpunkte aus der Datenbank füttern

foreach($x as $y)
{
  if (isset($_POST['$y']))
    $select = $select." `$y`";
}
Hier wird ein Array $x, mit den Elementen sitemap, workshop und workshop_inhalte erstellt. In der foreach-Schleife werden die Elemente von $x durchlaufen und jeweils überprüft ob sie von deinem Formular übertragen wurden. Wenn ja, dann wird der String $select um jeweils das Element ergänzt. Das sieht dann ungefähr so aus wenn es fertig ist, "sitemap, workshop_inhalte". Wenn sitemap und workshop_inhalte von deinem Formular übergeben wurde.

PHP:
$query = "SELECT ".$select." FROM `tabelle`";
$result = mysql_query($query);
$preise = mysql_fetch_array($result);
Hier wird der String $query gebaut, aus "SELECT ", dem $select-String und "FROM `tabelle`". Bei dem Beispiel von oben sähe das dann so aus "SELECT sitemap, workshop_inhalte FROM `tabelle`". Dann wird der $query-String an die Funktion mysql_query() übergeben. Und mit der Funktion mysql_fetch_array() werden die Inhalte, die du in $query Definiert hast, in das Array $preise geschrieben.

PHP:
foreach($preise as $preis)
{
  $ergebnis += $preis;
}
Mit dieser foreach-Schleife wird das Array $preise durchlaufen, und das aktuelle Element wird in die Variable $preis geschrieben. In der Schleife wird dann einfach zu der Variable jeder Preis addiert... D.h. also wenn "sitemap" 50€, und "workshop_inhalte" 20€ kostet, dann steht in $ergebnis = 70€;

Hoffe das war verständlich, wenn nicht einfach nochmal fragen ;)

Ahja, und wegen dem Fehler mach aus der Zeile:
$select = $select."`$y`";

mal das hier:
if ($select == "")
$select = "`$y`";
else
$select = ", `$y`";


mfg Daniel
 
Zuletzt bearbeitet:
Ein Frage hätte ich noch? Was muß im Formular als VALUE stehen? Jetzt stehen ja die Preise drin, die werden ja dann aber aus der DB ausgelesen. einfach leer lassen?
 
Hab ausserdem die Änderung gemacht und erhalte nun folgende Fehlermeldung:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/web1/html/test/test_forum.php on line 23
 
Also, ich bekomme das nicht hin. Wenn ich mir das mit Echo ausgeben lasse dann kommt folgendes:

SELECT FROM `cd_webdesign`
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/web1/html/test/test_forum.php on line 23

Warning: Invalid argument supplied for foreach() in /srv/www/web1/html/test/test_forum.php on line 25


Ich sende dir mal die zwei Dateien:

test_forum1.php:

HTML:
 <form name="form1" method="post" action="test_forum.php">
  <table width="410" height="*" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td align="left" valign="top" class="text" Colspan="2" height="30"><B>Die Konzeption</B></td>
      <td align="right" valign="top" class="text" Colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td height="1" colspan="4" bgcolor="#cccccc"></td>
    </tr>
    <tr>
      <td align="left" valign="middle" class="text"> Standard Struktur kleines Unternehmen:</td>
      <td>&nbsp;</td>
      <td align="left" valign="middle" class="text"><input type="radio" name="standard" value=""
		checked		></td>
      <td align="right" valign="middle" class="text"> 0,00 &euro;</td>
    </tr>
    <tr>
      <td height="1" colspan="4" bgcolor="#cccccc"></td>
    </tr>
    <tr>
      <td align="left" valign="middle" class="text"> Individuelle Struktur:</td>
      <td>&nbsp;</td>
      <td align="left" valign="middle" class="text"><input type="radio" name="standard" value=""
				></td>
      <td align="right" valign="middle" class="text"> 220,00 &euro;</td>
    </tr>
    <tr>
      <td height="1" colspan="4" bgcolor="#cccccc"></td>
    </tr>
    <tr>
      <td align="left" valign="middle" class="text"> Workshop zur Konzeption der Seite:</td>
      <td>&nbsp;</td>
      <td align="left" valign="middle" class="text"><input type=checkbox name="workshop_konzeption" value=""
				></td>
      <td align="right" valign="middle" class="text"> 640,00 &euro;</td>
    </tr>
    <tr>
      <td height="1" colspan="4" bgcolor="#cccccc"></td>
    </tr>
    <tr>
      <td align="left" valign="middle" class="text"> Workshop zur Entwicklung der Inhalte:</td>
      <td>&nbsp;</td>
      <td align="left" valign="middle" class="text"><input type=checkbox name="workshop_inhalte" value=""
				></td>
      <td align="right" valign="middle" class="text"> auf Anfrage</td>
    </tr>
  </table>
  <p>
    <input type="submit" name="Submit" value="Senden" >
  </p>
</form>
<p>&nbsp;</p>

Die Datei test_forum:

PHP:
<?
$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="web1"; // MySQL-User angeben
$mysqlpwd="******"; // Passwort angeben
$mysqldb="******"; // Gewuenschte Datenbank angeben

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
$x = array('standard', 'individuell', 'workshop_inhalte' ,'workshop_inhalte'); 
foreach($x as $y) 
{ 
  if (isset($_POST['$y'])) 
    //$select = $select." `$y`"; 
	if ($select == "")
	$select = "`$y`";
	else
	$select = ", `$y`";
} 

echo ($query = "SELECT ".$select." FROM `cd_webdesign`"); 
$result = mysql_query($query); 
$preise = mysql_fetch_array($result); 

foreach($preise as $preis) 
{ 
  $ergebnis += $preis; 
} 

?>

Vielleicht kannst du dir das nochmal ansehen :-(
 
Zurück