fenster
Banned by Moderators
|
hallo
habe da folgendes prob.
habe _____________________________ index.php mit session_start(); und der $variable1 und $variable2 ________________________________
dann habe ich _____________________________ login.php mit session_start(); in login.php sollten die variablen $variable1 und $variable2 übergeben sein dh.: der inhalt soll verfügbar sein und sie müssen ansprechbar sein
jetzt kommt die $variable3 dazu __________________________________________________
alle 3 variablen kommen dann in das file verarbeiten.php session_start(); $variable1 $variable2 $variable3
in verarbeiten php brauche ich alle drei variablen diese werden dann dort weiterverabeitet zb.: ausgegeben oder in eine mysql datenbank eingetragen _________________________________________________________
wie muss ich das jetzt anstellen dass ich alle variablen in verarbeiten.php3 bekomme ???????????????????
gruß fenster
|
hausi181
Bloody Newbie
|
du bist schon auf dem richtigen weg. eine wichtige funktion fehlt allerdings noch und zwar musst du die session-variablen registrieren.
dies funktioniert mit der funktion session_register("variable1") ...
du musst jede variable registrieren, danach kannst du von überall aus auf diese variablen zugreifen, sowie auf eine globale variable.
|
mat
AdministratorLegends never die
|
$_SESSION['varname'] = varwert ist imo schöner. bis auf superglobals würd ich auf globale variablen eher verzichten. umso weniger desto besser.
|
FMFlash
tranceCoder
|
bis auf superglobals würd ich auf globale variablen eher verzichten. umso weniger desto besser. register_globals sollte aus Sicherheitsgründen sowieso deaktiviert sein, und per POST/GET übergebene Parameter immer aus den superglobals $_POST, $_GET oder (funktioniert für beides) $_REQUEST ausgelesen werden.
|
mat
AdministratorLegends never die
|
register_globals sollte aus Sicherheitsgründen sowieso deaktiviert sein, und per POST/GET übergebene Parameter immer aus den superglobals $_POST, $_GET oder (funktioniert für beides) $_REQUEST ausgelesen werden. ich meinte eher innerhalb eines scripts.. über request ist natürlich noch ![:bash:](/images/smilies/bash.gif) iger. Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist. grade gesehen.. also: full ack @fmflash
|
fenster
Banned by Moderators
|
hallo ich mache nämlich als schulprojekt einen warenkorb nur zur info aber kenn mich nicht so gut mit der ganzen session geschichte aus das würde mal funzen das seht ganz oben in der seite index.htm <?php session_start(); session_register("artnr"); ?> und in der login.php ist die echo "$artnr <br>"; dann verfügbar aber ich habe schon wieder ein prob. !!! die $artnr wird von einer sqldatenbank dynamisch mit formular ausgegeben // * Shopdaten mit Bestellfunktion ausgeben *************
for($i=0;$i<=$Anzahl-1;$i++)
{
$artnr =mysql_result($Resultat,$i,artnr);
$hersteller =mysql_result($Resultat,$i,hersteller);
$name =mysql_result($Resultat,$i,name);
$beschreibung =mysql_result($Resultat,$i,beschreibung);
$bild =mysql_result($Resultat,$i,bild);
$preis =mysql_result($Resultat,$i,preis);
echo "<form name='' method='get' action='warenkorb.php'>";
echo "<tr><td class='text1'>$artnr </td>
<td class='text1'>$hersteller </td>
<td class='text1'>$name </td>
<td class='text1'>$beschreibung </td>
<td ><img src= ' $bild' width='60' height='60'></td>
<td class='text1'>$preis </td>
<input type='hidden' name='artnr' value='$artnr'>
<td><input type='text' name='menge' size='2' value='1'> </td>
<td><input type='submit' name='Bestellung' value='Bestellen'></td>
</form></tr>";
}
echo "</table>";
und jetzt habe ich in der $artnr immer den wert des letzten artikels der liste drinnen und nicht den den ich will wenn ich auf bestellen klicke wer kann mir weiter helfen ??????? gruß fenster
Bearbeitet von watchout am 02.12.2004, 22:01
|
FMFlash
tranceCoder
|
hallo ich mache nämlich als schulprojekt einen warenkorb nur zur info aber kenn mich nicht so gut mit der ganzen session geschichte aus Es ist im Grunde ganz einfach: Du kannst in jedem deiner Skripten in der die Session mit session_start () initialisiert wurde (Achtung: Vorher keine Ausgaben machen da sonst der für die session passende http header nicht mehr gesendet werden kann -> Fehlermeldung) auf die Superglobale (= überall verfügbare) Variable $_SESSION zugreifen wie auf jede andere auch. Willst du dir also die Variable $var für zukünftige Skripten (die in der selben Session ausgeführt werden, also grob gesagt pro user) merken kannst du sie dir zb so in die Session speichern: $_SESSION["var"] = $var; Zu jedem späteren Zeitpunkt (sofern die Session noch besteht und initialisiert wurde) kannst du genauso auf diesen gemerkten Wert wieder zugreifen: $var = $_SESSION["var"]; PS: <tr> und <td> sind child-elemente von <table>, nicht von <form>, dir fehlt also der eigentliche table ... <form ....> <table ...> <tr> <td> </td> </tr> </table> </form> PPS: Verwende für forms _immer_ POST. GET ist nicht nur unschön sondern führt früher oder später zu Problemen (die max URI Länge ist nicht besonders groß). Nur für links darfs ein get sein ![;)](/images/smilies/wink.gif) Add: Es wäre vielleicht nicht schlecht wenn du die query hier posten würdest, denn wenn du die Resultate als assoc gelesen hast, solltest du zumindest " " bei der Positionsangabe benutzen: Aus mysql_result($Resultat,$i,artnr) wird mysql_result($Resultat,$i,"artnr"); Ist vielleicht Geschmackssache, aber statt mysql_result würde ich mir an deiner Stelle mal mysql_fetch_assoc, mysql_fetch_row und/oder mysql_fetch_array anschauen. Die Doku auf php.net gibt durchaus was her.
Bearbeitet von FMFlash am 02.12.2004, 15:49
|
fenster
Banned by Moderators
|
Add: Es wäre vielleicht nicht schlecht wenn du die query hier posten würdest, denn wenn du die Resultate als assoc gelesen hast, solltest du zumindest " " bei der Positionsangabe benutzen: hier ist mal das ganze script gruß fenster
index_69058.txt (downloaded 70x)
|
watchout
Legendundead
|
omfg... dein Indenting is ja absolut unlesbar... Ich verstehe ja dass du Programmieranfänger bist, aber bitte bemühe dich doch um etwas mehr lesbarkeit, das sollte man auch als Anfänger hinkriegen.
anyway: Ich kann jetzt auf anhieb die Stelle nicht finden wo du die daten in den Warenkorb schreibst...
so zum Schluss möchte ich noch darauf hinweisen, dass dieses Forum eigentlich kein Hausaufgaben-Forum ist, sondern dazu dienen sollte das Können aller Forumuser, die sich hier beteiligen in einer Diskussion zu steigern. Diese Diskussion kann (und wird wohl) anhand einer besonders herausfordernden Aufgabe geführt werden. Mir ist klar, dass es immer Fragenstellende geben wird, die Anfänger, oder nahezu solche sind, und auch diese sollten und werden wir beantworten und wenn notwendig leiten. Denn immerhin sind diese ja potenzielle Hilfen in der Zukunft. Es sollte aber nicht zu einem "Mach' meine Hausaufgabe" ausarten, da dies absolut nicht im Interesse der beteiligten stehen kann. Dies ist hier zwar (noch?) nicht der Fall, ich wollte es nur gesagt haben...
|
FMFlash
tranceCoder
|
hier ist mal das ganze script Deine Hausaufgaben bin ich zwar nicht bereit zu machen, aber grobe Dinge die mir aufgefallen sind: session_register("artnr");
echo "$artnr";
Das macht keinen Sinn -> kannst du weglassen. Deine registrieren() Funktion schreibt <html><head> usw nochmal. Die Browser werdens dir zwar verzeihen, korrekt ists trotzdem nicht. Tags die du nicht brauchst musst du auch nicht als "leer" definieren: <head></head> ... <form name="" ... SQL-Abfragen würde ich eher so auswerten: $result = mysql_query (...) or die ( ... );
/*
mysql_fetch_array() gibt ein assoziatives (["name"]) sowie ein indexbasiertes array ([0]) zurück - braucht dafür den doppelten speicher, also besser du benutzt nur das was du wirklich brauchst -> mysql_fetch_row () bzw mysql_fetch_assoc()
*/
while ($array = mysql_fetch_array ($result)){
$name = $array["name"];
$artnr= $array["artnr"];
$hersteller = $array[2];
....
.... verarbeitung deiner daten ....
}
Noch besser ist imho eine Trennung von Datensammlung und -auswertung, aber das würde wohl zu weit führen.... PS: <form> tags gehören entweder: Vor und nach einem <table> oder innerhalb eines <td>, nicht aber vor und nach einem <tr>. hth
|
fenster
Banned by Moderators
|
hallo dein Indenting is ja absolut unlesbar... Ich verstehe.... nö ich habe das ordentlich geschrieben ober der text editor kommt mit meinem editor in dem ich das geschrieben habe mit den absätzen und zeilen nicht zurecht noch eine frage: ich habe in meinem formular: <td><input type='text' name='menge' size='2' value='1'> </td> <td><input type='submit' name='Bestellung' value='Bestellen'></td> die menge mit dem value wie soll ich das (wenn auf bestellen geklickt wird) in eine variable verwandeln damit ich es als session variable verwenden kann ? nochmals danke für eure hilfe hat mir schon ein stück weiter geholfen gruß fenster
|
FMFlash
tranceCoder
|
<td><input type='text' name='menge' size='2' value='1'> </td> <td><input type='submit' name='Bestellung' value='Bestellen'></td>
die menge mit dem value wie soll ich das (wenn auf bestellen geklickt wird) in eine variable verwandeln damit ich es als session variable verwenden kann ? In dem Skript auf das die Form zeigt holst du dir die Parameter zb so: $menge = $_POST["menge"]; <--- funktioniert nur wenn deine form method="post" hat, was wie gesagt der Fall sein sollte ..... $_REQUEST funktioniert für beides, ist also flexibler, deshalb aber auch "unsicherer". Weiters in die Session speichern: $_SESSION["menge"] = $menge; Den Zwischenschritt kannst du auch weglassen ... je nachdem wie du es brauchst ...
|
watchout
Legendundead
|
nö ich habe das ordentlich geschrieben ober der text editor kommt mit meinem editor in dem ich das geschrieben habe mit den absätzen und zeilen nicht zurecht also, ich habe jetzt das file mit 7 verschiedenen text-editoren von Con-Text bis VIM angschaut, und überall schauts gleich aus... keine Ahnung was du für einen strangen editor hast... noch eine frage: ich habe in meinem formular:
<td><input type='text' name='menge' size='2' value='1'> </td> <td><input type='submit' name='Bestellung' value='Bestellen'></td>
die menge mit dem value wie soll ich das (wenn auf bestellen geklickt wird) in eine variable verwandeln damit ich es als session variable verwenden kann ? füg' doch einfach mal folgendes an den anfang deines files: <pre><?php print_r($GLOBALS); ?></pre>
hth
|
fenster
Banned by Moderators
|
hallo also, ich habe jetzt das file mit 7 verschiedenen text-editoren von Con-Text bis VIM angschaut, und überall schauts gleich aus... keine Ahnung was du für einen strangen editor hast... ich verwende http://www.chami.com/html-kit/das mit den variablen klappt jetzt schon gruß fenster
|
fenster
Banned by Moderators
|
hat sich erledigt
Bearbeitet von fenster am 03.12.2004, 15:18
|