nomade
folgendes Problem beschäftigt mich gerade sehr:
hab ein php-set aus 4 Dateien innerhalb einer Rahmen-PHP.(Zur Erleichterung spreche ich im Folgenden von Frames, auch wenn es natürlich keine sind ;.) ...)
links ist ein Navi-Frame der auf die Mitte verweisen soll.
die Navie besteht aus Daten, die mittels einer While-Schleife gelistet werden. Ich möchte, wenn ich ein Link-Bildchen hier nun anklicke, was zu einem Datensatz referenziert ist, das in der Mitte der entsprechende Datensatz geladen wird und die Session_Variable dabei neu gesetzt wird... Und genau das klappt nicht. Der Detailteufel ist nun Folgendes, er übergibt immer nur die letzte ID aus der While-Schleife. D.h.
es wird anscheinend immer nur der letzte Inhalt der Variablen übergegeben.. o_0. Alles was ich geädert hatte war irgendwie, als ob ich mich im Kreis drehe. Vllt. kann mir jmd. den entscheidenden Hinweis geben? Liegt es vllt. darin, das ich nicht mit einem Submit-Button arbeite, sondern mit dem IMG-Link? Aber das erklärt mir nicht, wieso nur der letzte VarInhalt übergeben wurde.. *grübel* ..
Danke
Hier mal die While Schleife:
- aus der Datei kolo_alle.php >> die dann die Variable an kolo_aendern.php übergeben soll. Die zweite Datei zeigt mir nur erstmal die Variable an...
------------------------------------------------------
<? session_start(); ?>
<link href="css.css" rel="stylesheet" type="text/css">
<form action="start.php?mitte=kolo_aendern.php" method="post" name="form1">
include('datenbank.php');
$anzeige_kolos=mysql_query("select bla bla bla ");
echo('Deine Planeten<br>');
$li=1;
while($anzeige=mysql_fetch_array($anzeige_kolos))
{
$kolo_nr=$anzeige[kolo_id];
echo('- - - - - - - - - - - - - - - - - <br>PlanetNr:'.$kolo_nr.'...'.$anzeige[kolo_name].'<br>
<input type="hidden" name="'.$kolo_nr.'"
id="'.$kolo_nr.'">
<input name="imageField" href="start.php?links=kolo_alle.php&mitte=kolo_aendern.php" type="image" src="bilder/wasserplanet06.jpg" alt="'.$anzeige[kolo_name].'" width="35" height="35" border="0">
<br><span class="kolo_kl"> ((((((diverse Anzeigen)))))
<br>- - - - - - - - - - - - - - - - -<br> </span> ');
$li=$li+1;
}
}
?>
</form>
Chris Hunter
start.php?links=kolo_alle.php&mitte=kolo_aendern.php
tu das nicht
nomade
du meinst die ganze LinkReferenz rausnehmen? Oder die Variable hinten anhängen?
Chris Hunter
ja schreib da nciht die php dateien rein.
mach n array in der start.php und mach den link so
start.php?links=1&mitte=2
oder sowas in der art
daHooligan
bzw.
start.php?links=kolo_alle&mitte=kolo_aendern
lass einfach die Endung weg, wenn du nur PHP-Dateien hast, dann kannst die imScript selber wieder dranhängen und verwenden....
würde aberpersönlich auch chris zustimmen. vllt. lagerst du das array noch in ne config.inc.php oder so aus, dann biste am flexibelsten.
tkshorty
<input type="hidden" name="kolo'.$li.'" id="'.$kolo_nr.'">
<input name="imageField" href="start.php?links=kolo_alle.php&mitte=kolo_aendern.php&kolo=".$li."" type="image" src="bilder/wasserplanet06.jpg" alt="'.$anzeige[kolo_name].'" width="35" height="35" border="0">
in der aendern.php erhälst du dann durch
$_POST["kolo'.$li'"]
die id der kolo die auch in der datenbank steht.
dem rat von chris und hooligan kann ich übrigens nur zustimmen
nomade
Danke erstmal für die Antworten.
Ihr meint es wäre ein Sicherheitsrisiko, ohne die genannte Array-Möglichkeit zu arbeiten?
Ich soll also, die Seiten einfach nur durch eine Variable ausdrücken? Das würde auch eine Sicherheitslücke schließen, nämlich, wenn ich dem System sagen, das nur diese Dateien "wahr" sind, können auch keine anderen Scriptdateien ausgeführt werden... okay...
Aber mein genanntes Problem konnte ich bisher noch nicht lösen. Wie gesagt, meine Vermutung ist, das es was mit der While-Schleife zu tun hat und dadurch irgendwie nur der letzte Datenbankinhalt in die Variable geschrieben wird. o_0...
Chris Hunter
wie steht es denn im code der genereierten seite drinne? auch nur die letzte id? ist schon komisch. hab so auf den ersten blick keinen fehler gefunden...
tkshorty
ich hab grad gesehen was ich vorher bei dem post falsch hatte
<input type="hidden" name="kolo'.$li.'" value="'.$kolo_nr.'">
wenn das net klappt poste doch mal den code von der aendern.php
tkshorty
sorry war wieder blödsinn. du musst für jedes ein extra formular erstellen
hab dir ein kleines beispiel gemacht
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
<?php echo $_POST["hallo"];
$kolo_nr=array(7,8,4,3,1);
for($i=0;$i<5;$i++)
{
echo "<form action=\"test2.php\" method=\"post\" name=\"form".$i."\">";
echo('- - - - - - - - - - - - - - - - - <br>PlanetNr:'.$kolo_nr[$i].'
<br>
<input type="hidden" name="hallo" value="'.$kolo_nr[$i].'">
<input name="imageField" type="image" src="bilder/brechen_kl_600x800.jpg" width="35" height="35" border="0">
</form><br><span class="kolo_kl"> ((((((diverse Anzeigen)))))
<br>- - - - - - - - - - - - - - - - -<br> </span> ');
} ?> |
|
Chris Hunter
| php: |
1:
|
<?php echo ('echt? geht das?'); ?> |
|
daHooligan
chris ist irgendwie (wieder) PHP-gestört....
| php: |
1:
|
<?php echo "wasdennüberhaupt???"; ?> |
|
MfG
daHool
tkshorty
chris meint glaub ich das:
| php: |
1:
2:
3:
4:
5:
6:
|
<?php echo('- - - - - - - - - - - - - - - - - <br>PlanetNr:'.$kolo_nr[$i].'
<br>
<input type="hidden" name="hallo" value="'.$kolo_nr[$i].'">
<input name="imageField" type="image" src="bilder/brechen_kl_600x800.jpg" width="35" height="35" border="0">
</form><br><span class="kolo_kl"> ((((((diverse Anzeigen)))))
<br>- - - - - - - - - - - - - - - - -<br> </span> '); ?> |
|
also das man echo(' dann einen text über mehrere zeilen und dann ')
wusst ich auch noch net aber funzt einwandfrei
nomade
danke für Eure Hilfe, nur hat sie mich nicht weiterbringen können bei diesem Problem. Einerseits kann ich mit den "aarys" nicht umgehen zum zweiten habe ich auch noch nie mit _POST(????) gearbeitet. :-(
mfg
hat vllt. jmd TS? Damit er mir das online erklären kann was gemeint ist. Eigentlich sollte das Alles ein Informatiker erledigen, der hat sich aber abgeseilt und ich muß mich da einarbeiten. *uff*...
zitat:
Fatal error: Function name must be a string in .php on line ...
daHooligan
| Zitat: |
Original von nomade
zitat:
Fatal error: Function name must be a string in .php on line ... |
ähm... das ist eigentlich nix besonderes behaupte ich mal. ich denke mal, dass einfach dein funktions-name net stimmt.
kannst du mal die betreffende zeile bzw. dein script posten, dann wird sich das lösen lassen.
nomade
include('datenbank.php');
$anzeige_kolos=mysql_query("select * from ...... ");
echo('Deine Planeten<br>');
$li=1;
while($anzeige=mysql_fetch_array($anzeige_kolos))
{
echo('<form type="text" action="start.php?mitte=kolo_aendern.php" method="post" name="form1'.$li.'">');
echo ('- - - - - - - - - - - - - - - - -<br>PlanetNr:'.$anzeige[kolo_id].'..'.$anzeige[kolo_name].'<br>
<input type="hidden" name="kolo'.$li.'" id="'.$anzeige[kolo_id].' value="'.$anzeige[kolo_id].'">
<input name="imageField" href="start.php?mitte=kolo_aendern.php&kolo="'.$li.'"" type="image" src="bilder/wasserplanet06.jpg" alt="'.$anzeige[kolo_name].'" width="35" height="35" border="0">
<input type="submit" name="Submit" value="Wählen">
<br><span class="kolo_kl" align="left">
((((Planetendaten))))
<br>- - - - - - - - - - - - - - - - -<br> </span>
');
$li=$li+1;
}
echo('</form>');
$kolo_array=$_POST("form1");
}
^--- Das ist die erste Datei und die zweite folgt sogleich:
<?
session_start();
echo('Nr. 1:');
var_dump($kolo_array); <-- gibt mir immer ein
"NULL" aus..
/* hier soll die Übergabe der neuen ID stattfinden und ein reload gemacht werden, mit der Planetenübersicht der Auswahl...
session_register("kolo_id");
header("location: start.php?mitte=kolo_blank.php");*/
?>
Mein Problem ist, glaub ich, das ich nicht weiß wie ich mit Formularfeldern umgehe, deren Namen selbst Variablen sind. Ich stehe dann auf der fortführenden Seite vor der Tatsache, das ich die Variable des Feldnamens nicht bezeichnen kann, da er ja auf der vorrangegangenen Seite aus einem Fixnamen und einer Variablen aus der Datenbank zusammengesetzt ist.
Bsp.:
<input type="hidden" name="kolo'.$li.'" id="'.$anzeige[kolo_id].' value="'.$anzeige[kolo_id].'">
Gibt es hierfür eine Lösung? Wenn es die Version mit arrays ist, dann folgendes:
echo $_POST["hallo"]; <-- "hallo" setht für den Formularnamen?
$kolo_nr=array(7,8,4,3,1); <-- "7,8,4,3,1" sind Fixwerte für [1],[2],
[3], usw ?? wenn nun hier eine
Variable drinn gespeichert ist, wie lese
ich die auf der übergeben Seite aus?
Einerseits um deren Wert in die DB
einzutragen und ihn anzeigen zu
lassen zur Bestätigung und einigen
Berechnungen für ein Jacascript...
for($i=0;$i<5;$i++) <-- hab das mit einer while-Schleife
{ gemacht, ist doch auch okay? Sind
dabei großartige Unterschiede?
tkshorty
also ich hab das vereinfacht dargestellt.
$kolo_nr=array(7,8,4,3,1); soll nur die werte aus der datenbank simulieren. das hab ich gebraucht zum testen. ( $kolo_nr[0]=7)
while schleife find ich in deinem fall besser. wie gesagt ich wollt nur ein vereinfachtest script mit das auch funktioniert.
$_POST[] ist das array das allle werte enthält die mit post weitergeleitet wurden. das hallo steht für den feldnamen.
du kannst also mehrere formulare haben, und die einzelnen felder ham alle die gleichen namen. in $_POST[] werde nur die werte reingeschrieben die in dem formular stehen wo du submit gedrückt hast. so kannst du im verarbeitungsscript immer auf die gleiche variable zugreifen.
wenns zu undeutlich war frag ruhig nochmal
hier mal was du oben in der datei auf jeden fall ändern müsstest
include('datenbank.php');
$anzeige_kolos=mysql_query("select * from ...... ");
echo('Deine Planeten<br>');
$li=1;
while($anzeige=mysql_fetch_array($anzeige_kolos))
{
echo('<form type="text" action="start.php?mitte=kolo_aendern.php" method="post" name="form'.$li.'">');
echo ('- - - - - - - - - - - - - - - - -<br>PlanetNr:'.$anzeige[kolo_id].'..'.$anzeige[kolo_name].'<br>
<input type="hidden" name="kolo" id="'.$anzeige[kolo_id].' value="'.$anzeige[kolo_id].'">
<input name="imageField" href="start.php" type="image" src="bilder/wasserplanet06.jpg" alt="'.$anzeige[kolo_name].'" width="35" height="35" border="0">
<br><span class="kolo_kl" align="left">
((((Planetendaten))))
<br>- - - - - - - - - - - - - - - - -<br> </span>
');
$li=$li+1;
}
echo('</form>');
}
^---dann in der kolo_aendern.php
$kolo_id=$_POST["kolo"];
nomade
das habe ich auf der Ausgabenseite:
Nr. 1:string(0) "" <-- das sollte die kolo_id sein /*vardump($kolo_id=$_POST["kolo"]

*/
Nr2: kolo_228 <-- die aktuelle Kolonie wurde nicht gewechselt.. :-|
nomade
der erzeugte Code sieht aber ganz okay aus, so auf den ersten Blick..
Deine Planeten<br>
<form type="text" action="start.php?mitte=kolo_aendern.php" method="post" name="form11">- - - - - - - - - - - - - - - - -<br>PlanetNr:228..Planet<br>
<input type="hidden" name="kolo" id="228 value="228">
<input name="imageField" href="start.php?mitte=kolo_aendern.php" type="image" src="bilder/wasserplanet06.jpg" alt="Planet" width="35" height="35" border="0">
<input type="submit" name="Submit" value="Wählen">
<br><span class="kolo_kl" align="left"> Koordinaten: 21:15:8
<br>| Rohstoffe - - - <br>| Metall: 0 <br>| Kristall: 0<br>| Wasserstoff: 0<br>|
Gesamtgröße : 205 Felder.|<br>- - - - - - - - - - - - - - - - -<br> </span>
</form>
<form type="text" action="start.php?mitte=kolo_aendern.php" method="post" name="form12">- - - - - - - - - - - - - - - - -<br>PlanetNr:248..Planet<br>
<input type="hidden" name="kolo" id="248 value="248">
<input name="imageField" href="start.php?mitte=kolo_aendern.php" type="image" src="bilder/wasserplanet06.jpg" alt="Planet" width="35" height="35" border="0">
<input type="submit" name="Submit" value="Wählen">
<br><span class="kolo_kl" align="left"> Koordinaten: 3:6:8
<br>| Rohstoffe - - - <br>| Metall: 0 <br>| Kristall: 0<br>| Wasserstoff: 0<br>|
Gesamtgröße : 170 Felder.|<br>- - - - - - - - - - - - - - - - -<br> </span>
</form>
tkshorty
hä ich dachte es soll nur ein datensatz angezeigt werden.
poste mal den link ich versteh nämlich net so ganz was du meinst.
achsu das id in den input feldern kannst du weglassen