zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Wert aus Variabele mit eckigen klammern auslesen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 02.10.2009, 13:42
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 14.03.2009
Beiträge: 29
labbixenja befindet sich auf einem aufstrebenden Ast
Standard Wert aus Variabele mit eckigen klammern auslesen

Hallo,

hänge mal wieder fest....

Für eine externe Datenbankabfrage bedarf es im Formular einer kleinen checkbox

HTML-Code:
<input type="checkbox" name="verschlagw[ ]" value="bea">
Wenn nun der Wert von verschlagw[ ] für die Session ausgelesen werden soll, erkennt er das nicht. Lasse ich die Klammern weg, klappt es einwandfrei, aber stimmt die Datenbankabfrage nicht. Die Klammern werden also zwingend benötigt.

Die einzelnen Werte werden per Link übergeben. Wie kann ich erreichen, dass aus dem folgenden Link bei der Variabele verschlagw[ ]

pauschal.php?typ=P&stp=2&ixp=katalog&ntc=1&cfg=008 0013670000000&col=weiss-orange&hmi=FRA&dsi=BKK&vnd=03.10.2009&bsd=25.10.20 09&mmc=1w&epc=2&ka3=0&ka2=0&ka1=0&zac=*&vpc=*&htn= &hon=&opi=&xP=0000+0000&verschlagw[]=bea

der Wert 'bea' ausgelesen werden kann?

Folgendes habe ich bereits probiert (ohne Erfolg)

PHP-Code:
//1. Variante
$_SESSION["eso"]= $_GET["verschlagw[]"];

//2. Variante
$_SESSION["eso"]= $_GET['verschlagw'][''];

//3. Variante
$_SESSION["eso"]= $_GET["{verschlagw[]}"]; 
Leider erkennt er es nicht.

Hintergrund ist, dass der Wert in der Session gespeichert wird und beim erneuten Aufruf der Seite im Formular die Checkbox als 'checked' ausgegeben wird. Hier noch der weitere code der Seite (verkürzt)

AUF EINER SEITE
PHP-Code:

<?php

//ganz oben ab 1. Zeile


session_start();
$_SESSION["hmi"]= $_GET["hmi"];
$_SESSION["dsi"]= $_GET["dsi"];
$_SESSION["vnd"]= $_GET["vnd"];
$_SESSION["bsd"]= $_GET["bsd"];
$_SESSION["mmc"]= $_GET["mmc"];
$_SESSION["epc"]= $_GET["epc"];
$_SESSION["ka1"]= $_GET["ka1"];
$_SESSION["ka2"]= $_GET["ka2"];
$_SESSION["ka3"]= $_GET["ka3"];
$_SESSION["stc"]= $_GET["stc"];
$_SESSION["zac"]= $_GET["zac"];
$_SESSION["vpc"]= $_GET["vpc"];
$_SESSION["htn"]= $_GET["htn"];
$_SESSION["hon"]= $_GET["hon"];
$_SESSION["opi"]= $_GET["opi"];
$_SESSION["xP"]= $_GET["xP"];
$_SESSION["eso"]= $_GET['verschlagw'][''];
?> 


<?php
//später unten im Formular


${"check_verschlagw_".$_SESSION["eso"]}    = "checked";

echo 
" <div style=\"width:250px;\" class=\"input\">".
"<input type=\"checkbox\" name=\"verschlagw[]\" value=\"bea\" $check_verschlagw_bea>".
"<label>direkt</label>".

"<div style=\"width:250px;\" class=\"input\">".       
"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_ben value=\"ben\">".
"<label>nah</label>".

"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_clb value=\"clb\">".
"<label>fern</label>".
"</div>".

"<div style=\"width:250px;\" class=\"input\">".      
"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_spt value=\"spt\">".
"<label>Sport</label>".

"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_pol value=\"pol\">".
"<label>Pool</label>".
"</div>";
?>

Vorab schonmal vielen Dank für Eure Hilfe.

Gruss Labbixenja
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 02.10.2009, 14:00
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Lies dir mal How do I create arrays in a HTML <form>? durch.
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 02.10.2009, 14:04
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Wenn Du im HTML zwischen [ und ] kein Leerzeichen hast, dann wird ein einfaches numerisches Array erstellt, welches dann ganz normal per
PHP-Code:
$_GET['verschlagw'
zugreifbar ist.

Ein einfaches
PHP-Code:
foreach ($_GET['verschlagw'] as $value) {
   echo 
$value"<br />\n";

Würde Dir dann sämtliche Werte untereinander ausgeben.

Du solltest aber vorher prüfen, ob $_GET['verschlagw'] tatsächlich gesetzt und ein Array ist, da $_GET['verschlagw'] nicht gesetzt wird, wenn keine Checkbox angehakt wird.

// Edit: zu langsam ...
Mit Zitat antworten
  #4 (permalink)  
Alt 02.10.2009, 15:01
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 14.03.2009
Beiträge: 29
labbixenja befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mantiz Beitrag anzeigen

Du solltest aber vorher prüfen, ob $_GET['verschlagw'] tatsächlich gesetzt und ein Array ist.....
Ja ist es. Habe ich geprüft, hilft mir aber jetzt nicht weiter.

PHP-Code:

<?php 
$_SESSION
["eso"]= $_GET['verschlagw'];
echo 
$_SESSION['eso'];?>
ergibt nur: Array

HTML-Code:
<input type="checkbox" name="verschlagw[ ]" value="bea">
Also auf die Namensvergabe der checkbox (und die Tatsache dass da ein array erstellt wird) habe ich keinen Einfluss, bzw. ist durch externen Anbieter so vorgegeben. Ohne die eckigen Klammern wir die Abfrage nicht richtig gestellt.

Zitat:
Zitat von Gumbo Beitrag anzeigen
Hatte ich vorher auch schon gesehen, aber auch das hilft mir leider nicht weiter, weil wie lese ich denn Wert wieder aus, damit die checkbox gesetzt wird?

Code:
<input name="MyArray[]" value="something" />
das steht da leider nicht.....(und ich habe -wie ihr sicher schon bemerkt habt- nur bedingt Ahnung....)

Mit Zitat antworten
  #5 (permalink)  
Alt 02.10.2009, 15:25
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Zitat:
Zitat von labbixenja Beitrag anzeigen
PHP-Code:

<?php 
$_SESSION
["eso"]= $_GET['verschlagw'];
echo 
$_SESSION['eso'];?>
ergibt nur: Array
Ist klar, denn ein Array kann nicht so einfach als String ausgegeben werden.

Wenn Du aber
PHP-Code:
echo implode(', '$_SESSION['eso']); 
schreibst, dann sollten alle angeklickten Werte mit "," getrennt ausgegeben werden.

Überprüfen, ob ein Wert in dem Array ist, kannst Du z.B. mit PHP: in_array - Manual
Mit Zitat antworten
  #6 (permalink)  
Alt 05.10.2009, 18:49
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 14.03.2009
Beiträge: 29
labbixenja befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mantiz Beitrag anzeigen
Ist klar, denn ein Array kann nicht so einfach als String ausgegeben werden.

Wenn Du aber
PHP-Code:
echo implode(', '$_SESSION['eso']); 
schreibst, dann sollten alle angeklickten Werte mit "," getrennt ausgegeben werden.
Habe ich gemacht und die Werte wurden getrennt ausgegeben. DANKE

Aber trotz tagelanger Experimente, habe ich es dann aber NICHT hinbekommen, dass die Werte auch richtig eingelesen wurden und die checkbox abgehakt war....

Ein netter Mensch beim Support des Fremdanbieters hat mir auf Nachfrage dann den Code gegeben. Hier der vollständigkeithalber für alle:

PHP-Code:

<?php
session_start
();
$_SESSION["eso"] = $_GET["verschlagw"];
?> 


<?php
//und unten im Formular


//die Zahl 8 entspricht der Anzahl checkboxen, 
//hier im Beispiel allerdings nur 3 checkboxen, da verkürzt dargestellt

for($v=0$v<8$v++)
    {
    ${
"check_verschlagw_".$_SESSION["eso"][$v]}    = "checked";
    }

echo 
" <div style=\"width:250px;\" class=\"input\">".
"<input type=\"checkbox\" name=\"verschlagw[]\" value=\"bea\" $check_verschlagw_bea>".
"<label>direkt</label>".
  
"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_wel value=\"wel\">".
"<label>Wellness</label>".
"</div>".

"<div style=\"width:250px;\" class=\"input\">".       
"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_ben value=\"ben\">".
"<label>strandnah&nbsp;</label>".
    
"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_clb value=\"clb\">".
"<label>Club</label>".
"</div>".

"<div style=\"width:250px;\" class=\"input\">".      
"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_spt value=\"spt\">".
"<label>sport</label>".

"<input type=\"checkbox\" name=\"verschlagw[]\" $check_verschlagw_pol value=\"pol\">".
"<label>Pool</label>".
"</div>";
?>
Die dazugehörige Erklärung (von ihm, nicht von mir):

"Aus dem eindimensionalen Array wird durch das
Anhängen an die GET-Vars ein mehrdimensionales Array"


Wussten wir ja schon!

Die Einzelnen Werte sind damit über
$_GET["name"][index von 0 bis 7] ansprechbar


Da in den values unterschiedliche Werte sind,
ist es egal an welcher Stelle welcher Wert steht.

Die for-Schleife führt die Zuordnung einfach nur
7 mal aus und erhöht dabei den Index immer um 1.


Gewusst wie. Dann ist ja alles klar, oder? Verstanden habe ICH es trotzdem nicht. Aber es funkt. und vielleicht kann es irgend jemand noch brauchen!

Danke Euch trotzdem allen für Eure Hilfsbereitschaft und die entsprechenden Anregungen.

Gruss Labbixenja
Mit Zitat antworten
  #7 (permalink)  
Alt 05.10.2009, 21:14
Benutzerbild von Pr0g
(^.^)
XHTMLforum-Mitglied
 
Registriert seit: 22.08.2005
Ort: Düsseldorf
Beiträge: 535
Pr0g wird schon bald berühmt werden
Standard

Code:
${"check_verschlagw_".$_SESSION["eso"][$v]}    = "checked";
Garnicht schön sowas, warum belässt du die Daten nicht im Array?

Edit: Oder wenns sein muss leg zumindest ein neues Array mit "checked" Werten an. Aber von VarVars halte ich nichts, wenn es nicht unbedingt nötig ist...
__________________
Mit Zitat antworten
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wert eines Parameters aus String auslesen markuskoehler Serveradministration und serverseitige Scripte 15 25.07.2008 11:59
Attribut Selektor im IE - keine eckigen Klammern motzi CSS 1 10.05.2007 14:52
IDs mit eckigen Klammern? xm22 CSS 2 30.03.2006 11:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:20 Uhr.