php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.06.2005, 19:44  
Gast
 
Beiträge: n/a
Standard Session Variable oder Globale Variable ?

Hallo Leuts,

ich bewege mich erst seit sehr kurzem auf PHP-Gebiet. Habe eine Website mit Contenido erstellt, ein existierndes Modul mit meinen schmalen PHP-Kenntnissen auf meine Bedürfnisse angepasst.
Jetzt versuche ich eine Suchfunktion auf das Ausgabeformular zu legen. Klapp auch, bis ich blättere. Dann geht die Variable aus dem Select flöten und es wird alles aufgerufen.
Meine Frage ist nun, wie kann ich die Variable bis zum nächsten Submit beibehalten?
Funzt mit $sess->register("land"), aber wie kann ich die wieder beim Submit erneuern?
Code:
<?php 

echo "<table>";
echo "<form method=post action=$meineseite>
<input type=hidden name=land value=$land>
                   <select name=land>
                    <option selected></option>
                    <option value=DE>DE</option>
                    <option value=A>A</option>
                    <option value=CH>CH</option>
                  </select>
<input type=\"submit\" name=\"senden\" value=\"test\">
</form>";

switch ($eintrag) {      // das erste mal beim aufruf ist $eintrag undefiniert 
  case ""; 

    $eintrag = "0";      // deswegen wertzuweisung 0 
}

$zps = "4";              // anzeige der einträge pro Seite 
$max = ($eintrag + $zps); 
$meineseite=$auth->url(); 

$acontext = "view";

if ($land != "") { $where = " WHERE active=1 AND client=$client AND land='$land'"; }
else { $where = " WHERE active=1 AND client=$client"; }

if($acontext = "view") {
    //Zählen der Datensätze
  $sql = "SELECT count(*) AS total FROM ".$cfgTab_test.$where; 
  $db->query($sql); 
  $db->next_record(); 
  $eintraege = $db->f("total");

echo "<table>";
  //Unternavigation zusammenbauen 
  $gbnav = ""; 
  $gbnav .= "<table width=100% cellspacing=0 cellpadding=0><tr>"; 

  if ($max >= $eintraege) 
  $gbnav .= "<td align=center>

  Einträge: ".($eintrag+1)."-".($eintraege)." von ".$eintraege."</p></td></tr>"; 
  else 
  $gbnav .= "<tr><td align=center>

  Einträge: ".($eintrag+1)."-".($max)." von ".$eintraege."</p></td></tr>"; 
  $gbnav .= "<tr><td align=center>

"; 
  $pages = $eintraege / $zps; 

  if ($pages > 1) { 
    $gbnav .= "gehe zu Seite "; 

    for ($ii = 0; $ii < $pages; $ii++) { 

     if ($ii != ($eintrag / $zps)) {

       $gbnav .= "<a class=klein href=\"$meineseite&acontext=view&eintrag="; 
       $gbnav .= ($ii * $zps); 
       $gbnav .= "\">[".($ii+1)."]</a>"; 
    } 
    } 
  }

$gbnav .= "</p></td>"; 
 
  //Ausgabe Navigation 
echo $gbnav; 

  // Daten aus der Datenbank abfragen mit der Einschränkung $eintrag (d.h. welche ausgegeben werden sollen) und $zps (anzahl der anzuzeigenden elemente)

$sql = "SELECT name, email, url, date, location, comments, id, active, land, zip, city, street, telephone, fax, deal, marke1, ". "marke2, onlineshop, angebot1, angebot2, angebot3, angebot4, angebot5, angebot6, angebot7, angebot8 ".
"FROM $cfgTab_test $where order by zip LIMIT $eintrag,$zps"; 
  $db->query($sql);

  // Auslesen des Ergebnisse pro Reihe und Generierung der Seite 
  while ($db->next_record()) { 

      if ($db->f("deal") == 0) { $deal="Macht keinen Deal mit euch"; } 
      if ($db->f("deal") == 1) { $deal="<a class=klein href=front_content.php?idart=73> Macht den Deal mit euch</a>"; } 
      if ($db->f("angebot1") == "") { $angebot1 = ""; } 
      if ($db->f("angebot1") != "") { $angebot1 = $db->f("angebot1"); }  
      if ($db->f("angebot2") == "") { $angebot2 = ""; } 
      if ($db->f("angebot2") != "") { $angebot2 = $db->f("angebot2"); } 
      if ($db->f("angebot3") == "") { $angebot3 = ""; } 
      if ($db->f("angebot3") != "") { $angebot3 = $db->f("angebot3"); } 
      if ($db->f("angebot4") == "") { $angebot4 = ""; } 
      if ($db->f("angebot4") != "") { $angebot4 = $db->f("angebot4"); } 
      if ($db->f("angebot5") == "") { $angebot5 = ""; } 
      if ($db->f("angebot5") != "") { $angebot5 = $db->f("angebot5"); } 
      if ($db->f("angebot6") == "") { $angebot6 = ""; } 
      if ($db->f("angebot6") != "") { $angebot6 = $db->f("angebot6"); } 
      if ($db->f("angebot7") == "") { $angebot7 = ""; } 
      if ($db->f("angebot7") != "") { $angebot7 = $db->f("angebot7"); } 
      if ($db->f("angebot8") == "") { $angebot8 = ""; } 
      if ($db->f("angebot8") != "") { $angebot8 = $db->f("angebot8"); } 
//Prüfen ob Überschrift für Spalte 5
      if ($db->f("marke1") == "" And $db->f("marke2") == "" And $db->f("onlineshop") == "") { $spalte5 = ""; } 
      if ($db->f("marke1") != "" Or $db->f("marke2") != "") { $spalte5 = "Vertragsh&auml;ndler"; } 
      if ($db->f("onlineshop") != "") { $spalte5 = "Onlineshop"; } 
      
    echo "<table width=100% border=0 cellpadding=0 cellspacing=0>"; 
    echo "<td style=\"background-color:#c1ffc1; padding-left:3px;\" width=20% class=nameaus ID=fontCMS_VALUE[1]>".$db->f("name")."</td>
<td class=addre style=\"background-color:#c1ffc1;\" width=100 ID=fontCMS_VALUE[2]>".date("d.m.Y",strtotime($db->f("date")))."</td>";

//Value deal abfragen und Bild bereitstellen
echo " <td class=addre valign=middle style=\"background-color:#c1ffc1;\" width=25>";
if ($db->f("deal") == 1) { echo "[img].$cfgClient[1][[/img]"; }

if ($db->f("deal") == 0) { echo "[img].$cfgClient[1][[/img]"; }

echo " </td>";

echo " <td class=addre width=180 valign=middle style=\"background-color:#c1ffc1;\">".$deal."</td>";
echo " <td class=addre width=70 align=right valign=middle style=\"background-color:#c1ffc1;\">"; 

if($accessGranted) { 

      if ($db->f("active") == 0) { $x_context = "-activate-"; } 
      if ($db->f("active") == 1) { $x_context = "-deactivate-"; } 


      echo "<a class=klein href=$meineseite&acontext=set&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag.">".$x_context."
</a>"; 
     echo "<a class=klein href=$meineseite&acontext=delete"."&gbid=".$db->f("id").">  -kill-</a>"; 
    } 

if ($db->f("url") != "") { echo "<a href=\"http://".$db->f("url")."\" target=_blank>[img].$cfgClient[1][[/img]</a>"; } 

if ($db->f("email") != "") { echo "<a href=\"mailto:".$db->f("email")."\">[img].$cfgClient[1][[/img]</a></td>"; } 

echo "</tr>"; 

 echo" <tr bgcolor=#9BCD9B>
<td width=20% valign=top class=addre1 style=\" padding-left:3px;\">Anschrift</td>
<td width=100 class=addre1>Angebot</td>
<td width=25 class=addre1></td>
<td width=180 valign=top class=addre1>Kurzbeschreibung</td>
<td width=70 valign=top class=addre1>".$spalte5."<td></tr>
<tr>
<td valign=top class=addre  style=\" padding-left:3px;\">".$db->f("land")." -  ".$db->f("zip")."
".$db->f("city")."
".$db->f("street")."
".$db->f("telephone")."
".$db->f("fax")."</td>
<td valign=top class=addre>".$angebot1."
".$angebot2."
".$angebot3."
 ".$angebot4."
".$angebot5."
".$angebot6."
".$angebot7."
".$angebot8."</td>     
<td valign=top class=addre></td>
<td ID=fontCMS_VALUE[3] valign=top class=addre>".$db->f("comments")."</td>
<td valign=top class=addre>".$db->f("marke1")." ".$db->f("marke2")." ".$db->f("onlineshop")."</td>
</tr>
";

    //Eintrag aktivieren/deaktivieren 
    { 
      if ($acontext == "view") { $imgsrc = "images/spacer_FF8C00.gif"; } 
     echo "<tr><td style=\"border-bottom:1px #f5fffa solid; padding-top:3px;\" align=right colspan=5><a class=klein href=\"#top\"><img src=$imgsrc border=0 height=1 width=100%>top</a></td></tr>"; 
    } 

    echo "</table>"; 

  } 
echo "</table>"; 

  //Ausgabe Navigation 
  echo $gbnav; 
  }

echo "</table>"; 
  
?>
Wenn irgendjemandem dazu etwas einfällt, wäre ich euch sehr dankbar!

Gruß
Frank
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.06.2005, 20:02  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Hi, willkommen hier im Forum.

Wenn Du willst, dass sich den Code jemand anguckt, solltest Du ihn mal lesbar machen. So ist es eine Katastrophe.
Dazu nimm statt der Code-Tags die PHP-Tags. Das kannst Du in Deinem obigen Posting noch editieren.
Dann sieht das ganze schön bunt aus...

An den Einrückungen solltest Du auch dringend mal arbeiten.

Ich hab noch nicht viel davon angesehen. Mir sind nur gleich mal diese Konstruktionen aufgefallen:

PHP-Code:
<?php
  
if ($db->f("angebot2") == "") { $angebot2 ""; }
  if (
$db->f("angebot2") != "") { $angebot2 $db->f("angebot2"); } 
?>
Wie wäre es mit einem else oder vielleicht einer temporären Variable? So musst Du u. U. $db->f() dreimal aufrufen.
Je nach Funktion kann das natürlich auch dreimal ein anderes Ergebnis liefern. Im besten Fall kostet das nur unnötige Bearbeitungszeit.

PHP-Code:
<?php
   
if (($TempVar $db->f("angebot2")) == "")
   {
      
$angebot2 "";
   }
   else 
   {
      
$angebot2 $TempVar;
   } 
?>
Und wenn Du eh schon mit "" vergleichst, kannst Du auch gleich zuweisen:
PHP-Code:
<?php
  $angebot2 
=  $db->f("angebot2");
?>

Jetzt zum Problem (wie gesagt ohne den Code abgesehen zu haben):
Es gibt keine globalen Variablen in der Art, dass sie zwischen zwei Aufrufen eines Scripts erhalten bleiben.
Das geht nur mit Sessions. Damit kannst Du Dir beliebige Daten zwischen verschiedenen Aufrufen merken.
Dann aber bitte nicht mir session_register(), sondern mit $_SESSION[].


EDIT nach dem zweiten Blick in den Code:
Anscheinend verwendest Du register_globals=on, da auf $land etc. aus dem Formular direkt zugegriffen wird und nicht über $_POST['land']. DAs ist schonmal ganz schlecht wenn man keine Erfahrung hat. Und Verwechslungen mit der Session-Variable 'land' sind eigentlich schon vorprogrammiert.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 27.06.2005, 21:34  
Gast
 
Beiträge: n/a
Standard

@ Der_Gerhard

deine kontruktive Kritik am Code habe ich verstanden, aber das loest mein Problem nicht.
Werde ihn repektive aendern.
Wie definiere ich die Variable $_POST, wo wird auf die Variable zugegriffen?
Kann ich die Variable $land in $_SESSION speichern, wenn ja wie?
Keine Ahnung -> Verzweiflung -> Suicid

Gruss Frank
 
Alt 27.06.2005, 21:49  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

$_POST[] definierst Du gar nicht. Bei Aufruf Deines Scripts durch post werden alle Parameter aus dem Forumlar darin gespeichert.
Das Feld land ist darin z.B. als $_POST['land'] gespeichert.

Vor der Verwendung solltest Du das natürlich prüfen. Mit isset() und/oder empty(). Damit Du sicherstellt, dass auch was drinsteht.

Du musst zuerst (und vor allen Ausgaben des Scripts) session_start() aufrufen.
Danach kannst Du sowas machen:
PHP-Code:
<?php
if (!empty($_POST['land']))
{
   
$_SESSION['land'] = $_POST['land'];
}
?>
In einem anderen Script oder beim nächsten Aufruf des gleichen Scripts kannst Du dann nach session_start wieder auf $_SESSION['land'] zugreifen.

Such hier im Forum mal nach Session. Du findest sicher ausreichend Hinweise, wie Sessions funktionieren. Normalerweise klappt es mit Cookies und Du musst nix extra machen. Wenn nicht, dann musst Du halt die SID an die Links anhängen.

Was den Code betrifft, so kannst Du das erste Posting mit dem "edit" Button noch ändern. Ersetzt dort mal [code] durch [php]
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
js: globale Variable lokal global Deklarieren Blank HTML, Usability und Barrierefreiheit 1 22.04.2006 15:42
GLobale Variable PHP Tipps 2006 15 09.02.2006 20:29
[Erledigt] MySQL Abfrage mit Session Variable PHP Tipps 2005-2 5 13.10.2005 13:17
Globale Variable aus Funktion?? PHP Tipps 2005-2 0 05.08.2005 18:57
session variable übergeben PHP Tipps 2005 31 27.05.2005 11:02
eine SESSION Variable wird geleert PHP Tipps 2005 6 06.04.2005 17:10
Globale Variable nixdorf PHP Tipps 2005 4 19.03.2005 13:05
Session Variable geht verloren! (Homepage inside) PHP Tipps 2005 11 15.02.2005 09:17
Problem mit Session Variable PHP Tipps 2004-2 3 23.11.2004 11:11
session übergibt variable nicht (ich weiß es liegt an mir) PHP Tipps 2004-2 7 15.11.2004 12:54
Session Variable über Hyperlink übergeben DannyD PHP Tipps 2004-2 2 07.11.2004 14:22
Variable / wert auf neue seite mit session... WIE?! PHP Tipps 2004 3 05.10.2004 15:21
[Erledigt] Session Variable setzen und Link per click auf ein Image PHP Tipps 2004 7 23.08.2004 20:45
session variable will nicht PHP Tipps 2004 2 14.07.2004 19:59
Globale Variable der php.ini hinzufügen PHP-Fortgeschrittene 5 09.06.2004 19:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session globale variablen, contenido variablen, globale variable php session, php globale session variablen, php globale variable session, globale session variable php, php select mit variablen onlineshop, php sowas wie session nur global, php gelten globale variablen nur für die session, contenido session, global session variable php, contenido session variablen erstellen und abfragen, php globale variablen auch beim nächsten aufruf, global sess contenido, php session global variablen, php globale session variable, contenido session value, contenido globale variablen, php werden globale variablen automatisch in session gespeichert, php select als globale variablen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.