• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Form ruft sich 2x auf

Status
Für weitere Antworten geschlossen.

wolfgang_sp

Neues Mitglied
Hi, ich will eine poll auswerten und in mysql speichern und dann auf die seite von der poll aufgerufen wird zurücklinken. das modul wird über include eingebettet. anscheinend ruft es sich aber zweimal auf und $_GET['id']; verliert dann den wert. und schreibt bitte nicht, dass ich die auswertung in eine eigene datei auslagern und dann includen soll, das funktioniert auch nicht. der code:

PHP:
<? $aktuelles_video=$_GET['id']; // das ist die Seite in der dieser Code included wird
$link = 'start_content.php?id='.$aktuelles_video;
// reset für IF Abfrage
$ergebnis == 0
?>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
   Wie gefällt Ihnen dieses Video?
    <table width="90%" border="0">
    <tr>
      <td><span class="Stil1">sehr gut</span></td>
      <td align="right"><span class="Stil1">gar nicht</span></td>
    </tr>
  </table>
    <table width="90%" border="0">
    <tr>
      <td align="center"><label>
        <input type="radio" name="Bewertung" value="5" />
      </label></td>
      <td align="center"><label>
        <input type="radio" name="Bewertung" value="4" />
      </label></td>
      <td align="center"><label>
       ... usw. 
  </table>
    <table width="90%" border="0">
      <tr>
        <td><div align="center">
          <input name="submit" type="submit" value="Bewerten" />
        </div></td>
      </tr>
    </table>
</form>
</div>
<?php
// speichere nur, wenn value <> 0
$ergebnis=$_POST['Bewertung'];
if (!$ergebnis='0') {
include_once("open_db.php"); // öffne DB
    $query = "INSERT INTO bewertung (id_bewertung, wert) VALUES ('$aktuelles_video','$ergebnis')"; // speichere Bewertung zum zugehörigen Video
    $dummy = mysql_query($query) or die(mysql_error());
    print $_SERVER['$link']; // Und jetzt spring zur Seite von der dieser Code included wurde zurück UND HIER VERLIERT ER DEN WERT FÜR $_GET['id'], das heiss der link heisst dann zum Beispiel nur [url]http://localhost:8502/cw_tv/show_video.php[/url]
und nicht - wie er eigentlich heißen sollte:
[url]http://localhost:8502/cw_tv/show_video.php?id=12[/url]
// reset $ergebnis für die if abfrage
$ergebnis == 0
}
?>

bin schon leicht verzweifelt...
bitte um hilfe
wolfgang

MOD EDIT Code Tags hinzugefügt, Bitte das nächste mal dran denken - (Frank)
 
Zuletzt bearbeitet von einem Moderator:
1. Bin kein Mod, aber sie werden dir sagen, dass du die code Tags benutzen solls.
<php>Dein Code</php> (< und > durch [ und ] ersetzen.

2. Ich verstehe nicht, wieso du print $_SERVER[$link] machst. Der Wert mit dem du $link definiert, besitz die Variable $_SERVER als Index nicht.
 
hi, ich sehe, dass du ein erfahrener Benutzer bist, ich wurschtle erst seit einer woche mit php herum..., also wenn ich was falsch mache ("1. Bin kein Mod, aber sie werden dir sagen, dass du die code Tags benutzen solls."), sorry

$link = 'start_content.php?id='.$aktuelles_video;

wird ganz am anfang aus der seite, in die der code included ist definiert, das funktioniert auch beim ersten aufruf (also beim include) nur nach dem absenden des werts in der form und dem eintrag in die tabelle soll eben mit print $_SERVER['$link']; auf die ursprungsseite zurückgesprungen werden und da ist die id weg.
 
Okey,

was falsch mache ("1. Bin kein Mod, aber sie werden dir sagen, dass du die code Tags benutzen solls."), sorry

macht ja nichts ;)

wenn du den Index via Variable aufrufst, dann benutze keine ''.

benutze:

PHP:
$_SERVER['$link']  mach zu => $_SERVER[$link];
Dann ist es so, dass die Variable Server den Index "'start_content.php?id='.$aktuelles_video", nicht kennt.

Siehe: PHP: Predefined Variables - Manual

Gebe am Ende doch einfach das aus:

PHP:
print $link;
mfg

Web_spider
 
probier es mal so

PHP:
<?php 
$aktuelles_video=$_GET['id'];
$link = 'start_content.php?id='.$aktuelles_video;
$ergebnis = 0
?>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
   Wie gefällt Ihnen dieses Video?
    <table width="90%" border="0">
    <tr>
      <td><span class="Stil1">sehr gut</span></td>
      <td align="right"><span class="Stil1">gar nicht</span></td>
    </tr>
  </table>
    <table width="90%" border="0">
    <tr>
      <td align="center"><label>
        <input type="radio" name="Bewertung" value="5" />
      </label></td>
      <td align="center"><label>
        <input type="radio" name="Bewertung" value="4" />
      </label></td>
      <td align="center"><label>
       ... usw.
  </table>
    <table width="90%" border="0">
      <tr>
        <td><div align="center">
          <input name="submit" type="submit" value="Bewerten" />
        </div></td>
      </tr>
    </table>
</form>
</div>
<?php
// speichere nur, wenn value <> 0
if(isset($_POST["Bewertung"]))
  $ergebnis=$_POST['Bewertung'];
if ($ergebnis != 0) 
{
  include_once("open_db.php");
  $query = "INSERT INTO `bewertung` (`id_bewertung`, `wert`) VALUES ('{$aktuelles_video}','{$ergebnis}')";
  $dummy = mysql_query($query) or die(mysql_error());
  
  /**
  * Nach einem Include musst du nicht zur includierenden Seite zurückspringen
  * Wird der Code includiert und ist ausgeführt worden
  * Wird der Code der Includierenden Seite weiter geparst.
  * Das heißt die includierende Seite hat Code der ausgeführt wird,
  * Dann kommt dieser Include
  * Und danach wird der Code der includierenden Seite weiter ausgeführt
  * Variablen des Includes sind in der includierenden Datei nutzbar, ebenso
  * andersherum, es sei denn, die Variablen liegen außerhalb des
  * Scope
  */
  
  $ergebnis = 0;
}
?>
 
hi, leider der selbe effekt, ich weiss nicht ob ich das problem richtig beschrieben habe. also: ich habe eine seite index.php in die zB navigation.php, content.php, rechts.php included ist.
jetzt ruf ich aus content.php einen link auf, zum Beispiel: .../show_video.php?id=123 (123=nummer des Videos, das gezeigt wird) die zusammenstellung heißt dann navigation.php, show_video.php (statt content) und bewertung.php. bisher läßt sich in allen phps die id verfolgen. aber wenn ich jetzt eben in der Form in bewertung.php auf "Absenden" klicke, komme ich auf .../show_video.php (eben ohne ?id=123)
 
ja weil es vom formular nicht übergeben wird xD

Code:
<input type="hidden" name="id" value="<?php echo $aktuelles_video; ?>" />
 
ja, deswegen wollte ichs ja in einer variablen speichern...
ich hab jetzt die ID ser seite in die der code für die bewertung included wird in eine tabelle gespeichert und rufs dann nach der form wieder ab. ist zwar nicht die eleganteste methode, funktioniert aber wenigstens. danke für alle tipps
 
aber vielleicht kannst du mir noch einmal helfen. irgendwie ignoriert der parser print $_SERVER[$original_link]; (wobei in $original_link) jetzt xyz?id=123 steht. ich muss doch irgendwie aus einer beliebigen stelle im code weiterleiten können. oder geht das nur im header?
 
es gibt kein $_SERVER[$original_link] !!

Es gibt nur und ausschließlich folgende Server variablen:

Code:
Array
(
    [HTTP_HOST] => localhost
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5
    [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    [HTTP_ACCEPT_LANGUAGE] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    [HTTP_ACCEPT_ENCODING] => gzip,deflate
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
    [HTTP_KEEP_ALIVE] => 300
    [HTTP_CONNECTION] => keep-alive
    [HTTP_CACHE_CONTROL] => max-age=0
    [PATH] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\Gemeinsame Dateien\Adobe\AGL
    [SystemRoot] => C:\WINDOWS
    [COMSPEC] => C:\WINDOWS\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
    [WINDIR] => C:\WINDOWS
    [SERVER_SIGNATURE] => 
Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.0 Server at localhost Port 80


    [SERVER_SOFTWARE] => Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.0
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => 127.0.0.1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 127.0.0.1
    [DOCUMENT_ROOT] => C:/Programme/xampp/htdocs
    [SERVER_ADMIN] => admin@localhost
    [SCRIPT_FILENAME] => C:/Programme/xampp/htdocs/index.php
    [REMOTE_PORT] => 4790
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /
    [SCRIPT_NAME] => /index.php
    [PHP_SELF] => /index.php
    [REQUEST_TIME] => 1185539406
    [argv] => Array
        (
        )

    [argc] => 0
)

Die Werte natürlich je nach System
:arrow: PHP: Vordefinierte Variablen - Manual

Weiterleiten geht, was php angeht, nur im header
 
vielen dank. die variable $aktueller_link kommt von mir, das ist also schon OK. Was ich suche ist ohne einen link auf den man klicken muss eben aus dem code weiterzuleiten. wenn das nicht geht muss ich also ein include zu zB "weiterleiten.php" einbauen und dort im header print $_SERVER[$original_link]; (also mit meiner variablen, die dann zu der seite linkt, die ich eigentlich haben will) einbauen?
 
OMG es gibt kein $_SERVER[$original_link]!!!!! wie oft noch, es ist scheiß egal wo der $original_link herkommt ........

Sry aber langsam bin ich genervt
 
sorry, hast ein eis gut wenn ich einmal nach berlin kommen :-)
also gibts irgendeine möglichkeit ohne auf einen link klicken zu müssen auf eine bestimmte seite weiterzuspringen
 
hab ich dir doch oben schon gesagt, was php angeht, geht das nur im header

PHP:
header("Location: seite.php");

ansonsten musst du auf javascript umsteigen
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben