problem $_POST daten gehen verloren

vedam

Grünschnabel
Hallo alle zusammen

ich habe ein ausleseformular erstellt, bei dem der user spezifische details angeben kann und dann die dem entsprechenden daten ausgelesen bekommt.
nadem ich den submit button betätige bekomme ich die Daten korrekt ausgelesen, sobald ich dann aber auf den next link drücke bekomme ich nur undefined index der postvariable.

woran könnte das liegen.

<?php
// DB connect **********************************************************************************************************
error_reporting(E_ALL);
// Database Connection
include "inc/db_config.inc.php";
$db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

$bundesland = " ";
$landkreis = " ";
$stadt = " ";
$arbeitsbereich = " ";
//if ($_POST){
$bundesland = $_REQUEST['bundesland'];
$landkreis = $_POST['landkreis'];
$stadt = $_POST['stadt'];
$arbeitsbereich = $_POST['arbeitsbereich'];
//}

/*Headpart */
@include "inc/headpart.inc.php";
?>
<?php // Suchformular anfang **********************************************************************************************************+
/*suchformular */
@include "inc/suchformular.inc.php";
?>

</td></tr>
<tr><td>
<?php
// define variables *********************************************************************************************

// If current page number, use it
// if not, set one!

if(!isset($_GET['page'])){
$page = 1;

} else {
$page = $_GET['page'];

}

// Define the number of results per page
$max_results = 7;

// Figure out the limit for the query based
// on the current page number.
$from = (($page * $max_results) - $max_results);

// Perform MySQL query on only the current page number's results
$sDetails[] = "BD_bundesland";
$sDetails[] = "BD_landkreis";
$sDetails[] = "BD_ort";
$sDetails[] = "BD_type";

$suchwert[] = $bundesland;
$suchwert[] = $landkreis;
$suchwert[] = $stadt;
$suchwert[] = $arbeitsbereich;

$items = mysql_result(mysql_query("SELECT COUNT(BD_Datum)as Num FROM bauherren_daten WHERE ".$sDetails[1]."
LIKE '".$suchwert[1]."%' "),0);

$i = 1;
$bgcolor = " ";
$scountP = 0;
$CP = 1;

echo "<br>";
echo("<table align=\"center\" width=\"610\" border=\"0\" cellspacing=\"1\">");

foreach($sDetails as $value){

// echo $sDetails[$scountP]." ist ".$value."<br>";
$sql = "SELECT BD_text, BD_Datum FROM `bauherren_daten` WHERE ".$sDetails[$scountP]."
= '".$suchwert[$scountP]."' ORDER BY `BD_ID` DESC LIMIT $from, $max_results ";

$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {
if ($bgcolor == "#DBDEB1"){
$bgcolor = "#FFFFFF";
}else{
$bgcolor = "#F0F3C4";
}

$datumP = $row['BD_Datum'];
$textP = $row['BD_text'];
$datenP[$CP] = $datumP;
$datenTP[$CP] = $textP;
//echo "Output ".$CP." ist: ".$datenP[$CP].", ".$datenTP[$CP]."<br>";
echo "<tr bgcolor=".$bgcolor.">";
echo "<td width=\"100\" class=\"Stil1\" scope=\"col\"><div align=\"left\">Angebot ".$CP.":</div></td>";
echo "<td width=\"110\" scope=\"col\"><div align=\"left\"> &nbsp;".$datenP[$CP]."</div></td>";
echo "<td width=\"400\" scope=\"col\"><div align=\"left\">".$datenTP[$CP]."</div></td>";
echo "<td ><a href=\"login.php\">Interessiert ? </a> </td>";
echo "</tr>";
$CP++;
}
$scountP++;
$i++;
}

echo("</table>");
echo "<br>".$items;

// Figure out the total number of results in DB:
$total_results = $items;
//$total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM bauherren_daten "),0);
//$total_results = $scountP-1;
// Figure out the total number of pages. Always round up using ceil()
$total_pages = ceil($total_results / $max_results);
?>
</td></tr>
<tr><td bgcolor="#DBDEB1" scope="col"><span class="Stil8">
<?php
// Build Page Number Hyperlinks
echo "<center>Select a Page<br />";

// Build Previous Link
if($page > 1){
$prev = ($page - 1);
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><< Zurueck</a> &nbsp;";

}

for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i ";
} else {
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
}
}

// Build Next Link
if($page < $total_pages){
$next = ($page + 1);
echo "&nbsp; <a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Weiter>></a>";

}

echo "</center>";
?>
</span>
<?php
/* Footpart */
@include "inc/footpart.inc.php";
?>
 
Du musst anfangen mit Sessions anzufangen.
PHP:
<?php

// Im ganz obersten Teil des Scriptes kopieren!
session_start();
$sname = session_name();
$sessid = session_id();
?>

und dann gibst du einfach in den urls ganz unten also im hyperlink dahiner einfach das den sessionnamen und so mit bsp.:
PHP:
<?php 

echo "&nbsp; <a href=\"".$_SERVER['PHP_SELF']."?page=$next&$sname=$sessid\">Weiter>></a>"; 

?>

Ich denke mal so sollte es gehen ;)

MfG
KD3
 
Zu aller erst: setze Quellcode bitte immer in die [code]-Tags, das erleichter das lesen ungemein. So wie es jetzt ist, ist das ein einziges Grauen. ;)

Nun zu deinem Problem.
Der Vorschlag mit den Session's ist gut, aber (wie ich finde) vollkommen unverständlich beschrieben. (Sorry. ;))

Mit diesem Beispiel sollte man das eher verstehen
Code:
$_SESSION['bundesland'] = $_REQUEST['bundesland'];
$_SESSION['landkreis']= $_POST['landkreis'];
$_SESSION['stadt'] = $_POST['stadt'];
$_SESSION['arbeitsbereich'] = $_POST['arbeitsbereich'];

Dann kannst du von jeder beliebigen Seite mit $_SESSION['bundesland'] z. B. auf das Bundesland zugreifen.

Wobei du den ersten Punkt von KD3 mit umsetzen musst, ohne session_start() geht das nicht.

Ps.: Der KD3 ist doch schon wieder fast veraltet. :D
 
@DeluXe

naja den script habe ich fast sowieso garnicht verstanden wenn ich ehrlich bin XD

@vedam
1. Woher kommen die POST Daten
2. Es drohen File Inclusions im Script...
3. Die POST Daten solltest du bei der Session Variablen erstellung mit htmlspecialchars() escapen ;)

MfG
KD3
 
Vielen Dank für Eure Bemühungen ich habe jetzt folgendes gemacht, aber bekomme noch immer den gleichen Output. :confused:

Code:
<?php
// Session starten

session_start();
$sname = session_name();
$sessid = session_id();


  /* header-file
  *  Bauen-Sie-Sparsam.de ® 22 media
  *  © 2006-12-20 Call 110 GbR | http://call110.de
  *  This source is generated under the GNU Public License.
  *  You may copy the script, if these lines are not deleted.
  */
?>
<?php
// DB connect **********************************************************************************************************
   error_reporting(E_ALL);
// Database Connection
include "inc/db_config.inc.php";
  $db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    
$bundesland = " ";
$landkreis = " ";
$stadt = " ";
$arbeitsbereich = " ";
if ($_POST){

// Sessionvariablen erstellen und registrieren
  $_SESSION['bundesland'] = $_POST['bundesland'];
  $_SESSION['landkreis'] = $_POST['landkreis'];
  $_SESSION['stadt'] = $_POST['stadt'];
  $_SESSION['arbeitsbereich'] = $_POST['arbeitsbereich'];
}

			/*Headpart */
			@include "inc/headpart.inc.php";
?>
	<?php // Suchformular anfang **********************************************************************************************************+
           /*suchformular */
			@include "inc/suchformular.inc.php";
    ?>
    
    </td></tr>
    <tr><td>
    <?php
    // define variables *********************************************************************************************

// If current page number, use it
// if not, set one!

if(!isset($_GET['page'])){
    $page = 1;

} else {
    $page = $_GET['page'];

}

// Define the number of results per page
$max_results = 7;

// Figure out the limit for the query based
// on the current page number.
$from = (($page * $max_results) - $max_results);

// Perform MySQL query on only the current page number's results
$sDetails[] = "BD_bundesland";
$sDetails[] = "BD_landkreis";
$sDetails[] = "BD_ort";
$sDetails[] = "BD_type";

$suchwert[] = $_SESSION['bundesland'];
$suchwert[] = $_SESSION['landkreis'];
$suchwert[] = $_SESSION['stadt'];
$suchwert[] = $_SESSION['arbeitsbereich'];
  
$items = mysql_result(mysql_query("SELECT COUNT(BD_Datum)as Num FROM bauherren_daten WHERE ".$sDetails[1]."
                         LIKE '".$suchwert[1]."%' "),0);
 //$sql = "SELECT * FROM benutzer WHERE (id LIKE '%".mysql_real_escape_string($_POST['suche'])."%') OR (benutzername LIKE '%".mysql_real_escape_string($_POST['suche'])."%') OR (email LIKE '%".mysql_real_escape_string($_POST['suche'])."%')";

$i = 1;
$bgcolor = " ";
$scountP = 0;
$CP = 1;

echo "<br>";
echo("<table align=\"center\" width=\"610\" border=\"0\" cellspacing=\"1\">");
 
foreach($sDetails as $value){

   // echo $sDetails[$scountP]." ist ".$value."<br>";
    $sql = "SELECT BD_text, BD_Datum FROM `bauherren_daten` WHERE ".$sDetails[$scountP]."
                         = '".$suchwert[$scountP]."' ORDER BY `BD_ID` DESC LIMIT $from, $max_results ";
                         
     $result = mysql_query($sql);

  while ($row = mysql_fetch_array($result)) {
       if ($bgcolor == "#DBDEB1"){
           $bgcolor = "#FFFFFF";
        }else{
            $bgcolor = "#F0F3C4";
        }

				$datumP = $row['BD_Datum'];
				$textP = $row['BD_text'];
				$datenP[$CP] = $datumP;
                $datenTP[$CP] = $textP;
                  //echo "Output ".$CP." ist: ".$datenP[$CP].", ".$datenTP[$CP]."<br>";
                   echo "<tr bgcolor=".$bgcolor.">";
                   echo "<td width=\"100\" class=\"Stil1\" scope=\"col\"><div align=\"left\">Angebot ".$CP.":</div></td>";
                   echo "<td width=\"110\" scope=\"col\"><div align=\"left\"> &nbsp;".$datenP[$CP]."</div></td>";
                   echo "<td width=\"400\" scope=\"col\"><div align=\"left\">".$datenTP[$CP]."</div></td>";
                   echo "<td ><a href=\"login.php\">Interessiert ? </a> </td>";
                   echo "</tr>";
                $CP++;
			}
   $scountP++;
   $i++;
}

    echo("</table>");
    echo "<br>".$items;

// Figure out the total number of results in DB:
$total_results = $items;
//$total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM bauherren_daten "),0);
 //$total_results = $scountP-1;
// Figure out the total number of pages. Always round up using ceil()
$total_pages = ceil($total_results / $max_results);
?>
  </td></tr>
    <tr><td  bgcolor="#DBDEB1" scope="col"><span class="Stil8">
<?php
// Build Page Number Hyperlinks
echo "<center>Select a Page<br />";

// Build Previous Link
if($page > 1){
    $prev = ($page - 1);
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev&$sname=$sessid\"><< Zurueck</a> &nbsp;";

}

for($i = 1; $i <= $total_pages; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i&$sname=$sessid\">$i</a> ";
    }
}

// Build Next Link
if($page < $total_pages){
    $next = ($page + 1);
    echo "&nbsp; <a href=\"".$_SERVER['PHP_SELF']."?page=$next&$sname=$sessid\">Weiter>></a>";

}

echo "</center>";
?>
</span>
    <?php
			/* Footpart */
			@include "inc/footpart.inc.php";
   ?>
 
Das hier ist bestimmt verantwortlich:

if ($_POST){ ............. }

was soll das denn bewirken? was möchtest du denn da gerne überprüfen?

MfG
KD3
 
Code:
$bundesland = " ";
Wenn du dir nicht sicher bist, ob bei dir register_globals=on oder off ist, dann schmeiß die Zeilen lieber raus. Ansonsten überschreibst du die per Post übergebenen Seiten, bevor du sie ausließt, wenn register_globals=on ist.
 
Vilen Dank jetzt funktionierts!

das Problem lag an $bundesland = " "; welches mir die Daten überschrieb.

cu

vedam
 
Zurück