PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fragen zu onclick und php in einem form


warri
12.03.2008, 11:03:59
hi
ich hab nen problem mit einem formular für einen online shop
der benutzter kommt auf die seite kann eine auswahl an produkten machen
diese sollen nach dem bestätigen noch ma ausgegeben werden auf eienr extra seite
das funktioniert soweit auch
achja der benutzter is nicht angemeldet

also hier ma mein script für die wiedergabe der auswahl der vollständigkeit halber
<?php
session_start();

$express=$_POST['express'];
$va_bs=$_POST['va_bs'];
// Konfigurationsdatei laden
include 'functions.php';
//hier kommen dann mit echo befehln die produkte
//das klappt soweit auch ganz gut
?>



dann gehts weiter die auswahl des benutzters soll nun in eine datenbank eingetragen werden und gleichzeitig eine session gestartet werden
$_SESSION['ANr'] soll nun aus der tabelle in die grade die auswahl eingetragen wurde
der wert von dem feld ANr eingetragen werdn
und da hab ich das problem:
er weisst $_SESSION['ANr'] nicht die ANr aus der Tabelle "auswahl"
er lässt es einfach komplett leer
hab bisel rumgelesen und erfahren das man onclick nicht mit php functions benutzten kann
kA wie man es anders machen soll
hier ma der abschnitt für den submit button auf dessen klick das alles passieren soll

<html>
<head></head>
<body>
<form action="login.php" method="post">
<input type="Submit" name="submit" value="Weiter" onclick="<?php
// alle Fehler anzeigen
error_reporting(E_ALL);

//Bestelldatum und -uhrzeit
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
$date=$datum." - ".$uhrzeit." Uhr";
//Daten in die Tabelle eintragen
$sql="INSERT INTO auswahl
(ANr,Material, Ma_Beschreibung, Verarbeitung, Va_Beschreibung, Express, Menge, Breite, Höhe, Stückpreis, Preis_qm, Summe, Datum)
VALUES
('','$material','$ma_bs','$verarbeitung','$va_bs','$express','$menge', '$breite','$hoehe','$epreis','$preis','$summa','$date')";
$result=do_sql($sql);
//achja do_sql is in functions.php definiert und erträgt den datensatz auch ein
//ANr weiter geben als session was einfach nicht funktioniert
$sql="SELECT `ANr` FROM `auswahl` WHERE Datum='$date'";
$result=do_sql($sql);
$row=mysql_fetch_object($result);
//Auswahlummer als Sessionvariable speichern
$_SESSION['ANr']=$row->ANr;

//Zeitvariablen löschen
unset($timestamp);
unset($datum);
unset($uhrzeit);
unset($date);

?>" >
</form>
</body>
</html>

vllt könnnt ihr ma ja ne andere variante zeigen:
wie ich auf den click eins buttons eines formulares einen datensatz einfüge
in eine mysql datenbank und eine session starte mit einem wert aus der gleichen datenbank

sry is alles verrutscht :(

Opendix
12.03.2008, 14:12:17
Ne das geht nicht... und genau darum:

Javascript (onclick...) wird beim Client ausgeführt
PHP (Dein ganzer Code da) wird beim Server ausgeführt

Sprich deine Datei wird zuerst vom Server ausgeführt, dabei handelt er alles was hier zwischen den <?php ?> -Tags steht ab. Anschliessend sendet der Server das HTML an den Client.

Nun wie kannst du dieses Problem lösen:
Mach doch einfach eine Seite "einfuegen.php". In dieser platzierst du den ganzen PHP-Code den du hier hast. Jetzt setzt du einfach das Action-Attribut des Form-Tags auf diese "einfuegen.php". Somit wird sobald der Button gedrückt wird das PHP ausgeführt...

warri
12.03.2008, 15:06:22
hab das ma gemacht aber nun trägt er nichts mehr in die datenabnk ein
und die sache mit $_SESSION funzt auch noch nich :/
bzw kA ob sie funzt weil er hat ja kein datensatz auf den die sql anweisung zu trifft, also kann er auch nichts zu weisen
meine einfuegen.php sieht nun so aus

<?php
session_start();
// Konfigurationsdatei laden
include 'functions.php';
if (isset($_POST['submit']))
{
//Bestelldatum und -uhrzeit
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);
$auswahldatum=$datum." - ".$uhrzeit." Uhr";
$sql="INSERT INTO
auswahl
( ANr,
Material,
Ma_Beschreibung,
Verarbeitung,
Va_Beschreibung,
Express,
Menge,
Breite,
Höhe,
Stückpreis,
Preis_qm,
Summe,
Datum)
VALUES
( '',
'".$_POST['material']."',
'".$_POST['ma_bs']."',
'".$_POST['verarbeitung']."',
'".$_POST['va_bs']."',
'".$_POST['express']."',
'".$_POST['menge']."',
'".$_POST['breite']."',
'".$_POST['hoehe']."',
'".$_POST['epreis']."',
'".$_POST['preis']."',
'".$_POST['summa']."',
'".$_POST['auswahldatum']."'
)";
$result=do_sql($sql);
//ANr weiter geben als session
$sql="SELECT ANr FROM auswahl WHERE Datum='$auswahldatum'";
$result=do_sql($sql);
$row=mysql_fetch_assoc($result);
$_SESSION['ANr']=$row['ANr'];
//Zeitvariablen leeren
unset($timestamp);
unset($datum);
unset($uhrzeit);
unset($date);
header("location:login.php");
}
?>

doppelklick
12.03.2008, 22:53:47
Probier mal folgendes:
$sql = "INSERT INTO auswahl (ANr, Material, Ma_Beschreibung, Verarbeitung, Va_Beschreibung, Express, Menge, Breite, Höhe, Stückpreis, Preis_qm, Summe, Datum) values (' ', '$_POST[material]', '$_POST[ma_bs]', '$_POST[verarbeitung]', '$_POST[va_bs]', '$_POST[express]', '$_POST[menge]', '$_POST[breite]', '$_POST[hoehe]', '$_POST[epreis]', '$_POST[preis]', '$_POST[summa]', '$_POST[auswahldatum]')";

Vor lauter Anführungzeichen kennt sich ja kein Mensch mehr aus.

doppelklick

lukgestach
12.03.2008, 22:57:30
das wird nicht gehen, da $_POST nicht ein string ist! zuerst muss der string mit " . unterbrohen werden und danach mit . " wieder angefangen bzw. weitergeführt werden!

Gruss Lukas

doppelklick
12.03.2008, 23:04:57
Habe es aber so bei mir laufen und es funzt.

Was nicht geht ist "$_POST['variable']"

doppelklick

lukgestach
12.03.2008, 23:19:10
schau mal hier (http://ch2.php.net/manual/de/language.types.array.php) unter: Array do's und don'ts
Warum ist $foo[bar] falsch?