schimpy
Goto Top

Übergabe von Werten PHP-JS an die nächste Seite - Datenbank -Datei oder Mail

Übergabe von Werten PHP-JS an die nächste Seite - Datenbank -Datei oder Mail

<form action="warenkorb.php" method="post">  
<table border="0">  
<?
				$sql = "SELECT * FROM sm_snacks";  
				$result = mysql_query($sql);
				while($row = mysql_fetch_array($result, MYSQL_ASSOC))
				{ ?>
				<tr>
				<td><?=$row['name'];?></td>  
				<td><div " id="<?=$row['name'];?>">0</div></td>  
				<td><a href="#" onclick="document.getElementById('<?=$row['name'];?>').innerHTML-=-1;return false">+1</a></td>  
				<td><a href="#" onclick="document.getElementById('<?=$row['name'];?>').innerHTML-=+1;return false">-1</a></td>  
				</tr><?
				}
?></table>
<input type="submit" value="Absenden">  
</form>

Hallo !

Ich habe eine Tabelle erstellt, in der Snacks stehen
Mars, Snickers, Twix dahinter ist eine Zahl " 0 " und dahinter ist ein Button für "+1" und ein Button" für -1

wenn man jetzt hinter dem Mars auf +1 klickt, wird der Wert um 1 erhöht...
am Ende klickt man auf den Absende Button
und die Werte werden übermittelt
wie ist mir eigentlich egal - hauptsache irgendwie face-smile)

ich schaffe es nicht, die Werte an eine neue Seite zu übermitteln
habs jetzt auch schon mit $_POST und HTTP_POST_VARS probiert
keine Chance.... wo drin stehen die Werte??? m.E. in <div id="<?=$row['name'];?>">
aber die Werte kann ich nicht auslesen

dem div ein "name" zu geben, bringt auch nix face-sad

Content-Key: 135356

Url: https://administrator.de/contentid/135356

Printed on: April 26, 2024 at 16:04 o'clock

Member: Arano
Arano Feb 06, 2010 at 18:01:26 (UTC)
Goto Top
Guten Abend Schimpy,

Soll das ein Shop werden ? Also ein richtiger online Shop über den was bestellt werden kann ?
Ach du heiliger Strohsack

Nee sorry, du solltest erst einmal lernen bevor du ernsthaft irgendwelche Projekte umsetzen möchtest, erst recht wen es dabei um einen Shop o.ä. geht bei dem finanzieller Schaden entstehen kann !
Und so wie ich das sehe, muss du __ganz vorne anfangen__ bei HTML und CSS.
http://de.selfhtml.org/


~Arano
Member: Schimpy
Schimpy Feb 06, 2010 at 18:14:35 (UTC)
Goto Top
tjoa danke für deine Antwort
aber damit kann ich nicht viel anfangen face-smile

soll kein Shop werden, dafür würd ich osCommerce nehmen

ich will einfach nur den Wert hochzählen ( funktioniert ja bereits )
und diesen dann an eine neue seite übergeben...
Mitglied: 16568
16568 Feb 06, 2010 at 18:15:09 (UTC)
Goto Top
Besser kann man hier auch nicht antworten face-smile


Lonesome Walker
Member: Arano
Arano Feb 06, 2010 at 18:25:56 (UTC)
Goto Top
Okay, wollen wir dir mal glauben...

dennoch wirst du nicht drum herum kommen lernen zu müssen !
Und das nicht weil ich das so empfinde, sondern weil dein Quelltext und Startposting es so aussagen.
(Ein div anstelle eines inputs....)

Den Link zu selfHTML habe ich ja schon gepostet, dort kannst du dich mal nach Formularen umsehen - dann solltest du den üblichen weg schnell finden.


~Arano
Member: Schimpy
Schimpy Feb 06, 2010 at 18:33:50 (UTC)
Goto Top
mhhh
drücke ich mich so schlecht aus?

ich brauch keinen verweis auf selfhtml...

ich weiss wie man inputs nutzt und tue dies auch...
das dort oben ist nur eine möglichkeit den Wert um 1 zu erhöhen...

darum geht es aber auch überhaupt nicht...

ich würde gerne wissen wie ich die Werte übergebe...

mit $_POST['name'] geht es nicht, mit HTTP_POST_VARS auch nicht
über ein array bekomme ich es auch nicht hin...

wäre also nett, wenn man mich hier nicht kritisiert und links zu selfhtml.de schreibt
sondern einen Ansatz zum Daten auslesen gibt

danke face-smile
Member: dog
dog Feb 06, 2010 at 18:45:24 (UTC)
Goto Top
$_POST wird ausschließlich durch Werte gefüllt, die per <input> mit einem name-Attribut übergeben werden.

Was den Rest angeht: Da musst du wirklich noch lernen face-smile
Member: Arano
Arano Feb 06, 2010 at 18:49:02 (UTC)
Goto Top
Zitat von @Schimpy:
ich weiss wie man inputs nutzt und tue dies auch...

Zitat von @Schimpy:
ich würde gerne wissen wie ich die Werte übergebe...

Doch doch, den Links scheinst du schon nötig zu haben, denn du widersprichst dir selber was mich darauf schließen lässt das du es eben nicht weisst oder gerade ziemlich auf dem Schlauch stehst.

Wir sprechen hier doch von einem Formular <form> ... </form> in dem Mengen angegeben werden die anschließend an eine weitere Seite übergeben werden sollen !
Das Absenden des Formulares geschieht mittels eines Mausklicks auf einen <input type="submit"> Button, soweit ist das auch richtig. Aber die Werte eines Formulares stehen in weiteren <input> Feldern, inputs verschiedener Typen: text, radio, image, file, ect.
Eben das und welcher Typ wie und wofür zu gebrauchen ist steht auf selfHTML - deine Lösung !

<form method="post">  
  <input type="text" name="menge_twix" value="0"><br>  
  <input type="submit" value="Bestellen">  
</form>
Und ja, __jetzt__ könnte man die Daten in PHP mittels $_POST weiterverwenden aber soweit warst du ja noch gar nicht.


~Arano
Member: Schimpy
Schimpy Feb 06, 2010 at 18:53:46 (UTC)
Goto Top
okay, jetzt kommen wir der Sache schon näher face-smile

das _POST nur mit input geht, wusste ich wirklich nicht... ich arbeite immer mit input und POST und hab jetzt zum ersten mal das <div> benutzt
daher dachte ich, dass ich das auch über die POST Variable bekomme... weils innerhalb des FORM steht....

aber ich brauch ja die beiden zeilen

<td><div id="<?=$row['name'];?>">0</div></td>
<td><a href="#" onclick="document.getElementById('<?=$row['name'];?>').innerHTML-=-1;return false">+1</a></td>
<td><a href="#" onclick="document.getElementById('<?=$row['name'];?>').innerHTML-=+1;return false">-1</a></td>

um den Wert hochzuzählen...
ich könnte natürlich den "value" wert im input type="text" nehmen, dieser würde ja übergeben und ich hätte den Wert

aber wie zähle ich diesen hoch?!?!
Member: Arano
Arano Feb 06, 2010 at 19:14:01 (UTC)
Goto Top
Ahh, siehste :-P

Also ich denke mir schon was bei dem was ich Schreibe, Antworten in denen schon die komplette Lösung in mundgerechten Stücken zerteilt und vorgekaut wurde sind doch ohne jeglichen lern Effekt, weder das aktuelle Problem betreffend noch für zukünftige Probleme wenn die Person nie lernt selber zu suchen weil man ihr die Quellen nicht nennt. Google und Co sind als Antworten eh fürn Arsch, da hätte der Antwortende lieber die klappe halten sollen.

Aber nun zu deiner nächsten Frage es gibt Formatierungshilfen:
<td><input id="name" name="menge['name']" value="0"></td>  
<td><a href="#" onclick="document.getElementById('name').value+=1;return false">+1</a></td>  
<td><a href="#" onclick="document.getElementById('name').value-=1;return false">-1</a></td>  
Habe das nur im Browser kopiert und geändert, ist also ungetestet aber sollte funktionierten.


~Arano
Member: Schimpy
Schimpy Feb 06, 2010 at 19:23:00 (UTC)
Goto Top
finds nett dass du mir hilfst face-smile

und ja mir ist bewusst, dass ich lernen muss und nur lerne wenn ich nicht kopiere sondern selber das köpfchen einschalte und probiere face-smile
hab ich auch durchaus vor !

aber dein Code kapier ich nur Ansatzweise face-smile)

meines erachtens geht das nicht:
name="menge['name']" <<< da muss doch was dazwischen sein?

bei 'name' würd ich jetzt den Wert aus der Datenbank einfügen...
<?=$row['name'];?>

da es bei mir ja nicht nur um "Mars" geht sondern um Mars,Snickers, Twix, Bounty, etc.

prob is auch -> der wert im input feld wird nicht hochgezählt...
Member: Arano
Arano Feb 06, 2010 at 20:03:45 (UTC)
Goto Top
Ja stimmt, habe beim absenden schon vermutet das ich das doch vorher hätte ausprobieren sollen, gleich kommt meine Testversion.

Die Verwendung von eckigen Klammern ist okay, das erzeugt in PHP dann direkt ein mehrdimensionales Array das die entsprechenden Daten enthält.
Ja genau, die Namen werden dann durch die richtigen ersetzt.

Ja, das die Werte in den Feldern nicht hochgezählt werden war meine Vermutung beim absenden. Das liegt daran, das die Felder ja TEXT enthalten aber mit Text kann man nicht Rechnen, dazu braucht man Zahlen. In Javascript ist das "+" ja zum rechnen und zusammenfügen von Zeichenketten da.
Nunja, es folgt eine getestete Version mit einem Beispiel für das erstellen mehrdimensionaler PHP-Arrays von HTML aus.
<html>
  <head>
    <title>add</title>
    <script type="text/javascript">  
      <!--
        function add_one(ID)
        {
            item = document.getElementById(ID);
            item.value = 1+parseInt(item.value);
        }
        function remove_one(ID)
        {
            item = document.getElementById(ID);
            item.value = parseInt(item.value)-1;
        }
      -->
    </script>
  </head>
  <body>
  
  <?php
    if(TRUE===isset($_POST['menge']))  
    {
        echo '<pre>';  
        print_r($_POST['menge']);  
        echo '</pre>';  
    }
  ?>
  
  <form action="" method="POST">  
    <input type="text" id="mars" name="menge['mars']" value="0">  
    <a href="#"onclick="add_one('mars'); return false;">mehr</a> -  
    <a href="#"onclick="remove_one('mars'); return false;">weniger</a><br>  
    <input type="text" id="twix" name="menge['twix']" value="0">  
    <a href="#"onclick="add_one('twix'); return false;">mehr</a> -  
    <a href="#"onclick="remove_one('twix'); return false;">weniger</a><br>  
    <input type="text" id="snickers" name="menge['snickers']" value="0">  
    <a href="#"onclick="add_one('snickers'); return false;">mehr</a> -  
    <a href="#"onclick="remove_one('snickers'); return false;">weniger</a><br>  
    <br>
    <input type="submit">  
  </form>
  
  </body>
</html>

~Arano
Member: Schimpy
Schimpy Feb 06, 2010 at 20:27:05 (UTC)
Goto Top
wow, supi - klappt einwandfrei...

jetzt hast du ja in dem formular, jeden Riegel einzelnd da stehen...
dort könnte ich ja meine schleife nutzen und dort wo jetzt ein Riegelname wie z.B. Mars, Snickers, etc. steht
meine Variable $row['name']; einfügen oder?

und wie ist jetzt der Name der Variable die an die nächste Seite übergeben wird?

$_POST(menge['snickers']) ??

??

normalerweise ist ja der "name" die Variable - also $_POST('name')
wie ist das jetzt hier mit der eckigen Klammer?
Member: Schimpy
Schimpy Feb 06, 2010 at 20:29:45 (UTC)
Goto Top
okay ich seh grad...

$test = $_POST['snickers']; << egal was ich da eintrage..
es kommt immer

Array
(
[\'mars\'] => 4
[\'twix\'] => 3
[\'snickers\'] => 3
)


ist ja perfekt... nur... wie hast du das gemacht??? face-smile)
thx!!
Member: Arano
Arano Feb 06, 2010 at 20:44:26 (UTC)
Goto Top
Ich ? Das war PHP face-wink *mit finger zeig*

$_POST ist ein Array, das sämtliche Feldes eines vorher abgesandten Formulares
<?php

// Über den Name dieses Feldes bekommt man in PHP den Wert des Feldes
<input name="snickers" value="5">  
<input name="mars" value="4">  
$_POST = array(
    'snickers' => 5,  
    'mars' => 4,  
);


<input name="menge" value="3">  
<input name="menge" value="15">  
<input name="menge" value="50">  
$_POST = array(
    0 => 3,
    1 => 15,
    2 => 50,
);


<input name="menge['snickers']" value="5">  
<input name="menge['mars']" value="6">  
<input name="menge['twix]" value="2">  
$_POST = array(
    'menge' = array(  
        'snickers' => 5,  
        'mars' => 6,  
        'twix' => 1,  
    )
);

?>
Member: Schimpy
Schimpy Feb 06, 2010 at 20:47:58 (UTC)
Goto Top
ich habs grad gesehen ->>>> print_r($_POST['menge']);

stand mittendrin und ich dachte ich es hätte es oben über meine Variable ausgegeben, war aber garnicht so face-smile

dürfte jetzt funktionieren face-smile

big thx !!!!!!!!!!! face-smile
Member: Schimpy
Schimpy Feb 06, 2010 at 20:56:06 (UTC)
Goto Top
doch noch ein Problem...

mit print_r geb ich das ganze array aus - das hab ich kapiert...
aber ich kann es nicht an eine variable übergeben, da es ja ein array ist und da was mehr drin steht ;)

kann ich es irgendwie mit der mail() Funktion per Mail schicken?

oder in ner Datenbank speichern? dann müsste ich wahrscheinlich das array wieder stück für stück auslesen oder?
Member: Arano
Arano Feb 06, 2010 at 21:07:08 (UTC)
Goto Top
Klar doch, das ist doch das schöne an einem Array !

<?php

// enthält alles POST-Formularvariablen
$_POST

// enthält nur den teil ab "menge", also mars, snickers, twix 
$_POST['menge']  

// enthält einen bestimmten Wert
$_POST['menge']['mars']  

/*
  So kann man übersichtlich auf die einzelnen Werte zugreifen.
  Aber auch ganze Gruppen einfach weiterreichen:
*/
$bestellte_mengen = $_POST['menge'];  
echo $bestellte_menge['snickers']  
// Ausgabe z.B.: 5
?>

~Arano


EDIT
Doppelpostinsg müssen ncihts sein, man kann seine Beiträge in der Regel bearbeiten face-wink
Member: Schimpy
Schimpy Feb 06, 2010 at 21:22:15 (UTC)
Goto Top
sorry, ich bins gewohnt, wenn ich zwei mal hintereinander poste, dass die beiträge zusammengefügt werden face-smile
war länger nicht mehr hier, werds mir wieder angewöhnen face-smile

hatte es so:

$mars_wert = $_POST['menge']['mars'];

echo $mars_wert;

dann müsste er mir ja eigentlich den Wert ausgeben, der bei Mars stand....

tut er aber nüsch, kommt nix bei raus face-sad

er gibt maximal "Array" aus...
Member: Arano
Arano Feb 06, 2010 at 21:56:03 (UTC)
Goto Top
Oh, wieder mein Fehler.

Bei der Namensgebung des <input>s habe ich in den eckigen Klammern auch die einfachen Anführungszeichen benutzt, diese einfach weglassen - aber nur beim HTML Teil !
<input name="menge[snickers]" value="5">  


~Arano
Member: Schimpy
Schimpy Feb 07, 2010 at 09:07:25 (UTC)
Goto Top
kein prob
hat alles bestens geklappt

vielen dank!