php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-04-2008, 01:49
david2
 Registrierter Benutzer
Links : Onlinestatus : david2 ist offline
Registriert seit: Feb 2008
Beiträge: 25
david2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Variable vergisst Inhalt

Hallo

Zur Zeit arbeite ich an einem PHP-Script für eine Bildergalerie. Das Script steht unten. Das Script ist leider etwas lang, aber nur so kann ich mein Problem erklären.

Zuerst wird der Titel ausgeben also z. Bsp.: Fotogalerie von Max Mustermann. Das wird aus einer txt-Datei ausgelesen.
Dann erfolgt die Bildausgabe, also beim Öffnen der Galerie, wird Bild 01.jpg angezeigt.
Innerhalb dieser Bildausgabe habe ich die Abfrageroutinen für die Buttons eingebaut in diesem Fall erstmal nur für den Button "Erstes". Durch dessen Anklicken wird das erste Bild angezeigt, also ebenfalls 01.jpg. Das Problem ist, dass in dieser If-Abfrage die Variable $path ihren Inhalt verliert. Ich habe versucht, dies mit einer Session-Variable zu beheben, aber es funktioniert nicht. In $path steckt der Nachname des Galeriemitgliedes in diesem Beispiel "mustermann", welcher der Name des Ordners ist, in dem die Bilder liegen.
Alles andere funktioniert so wie es soll.

Hat jemand hier eine Idee, wie es zu diesem Problem kommt und wie man es lösen könnte? Das wäre mir sehr wichtig.

Mit freundlichen Grüßen

david2



PHP-Code:
<?

global $cfile;
//$file=$_SESSION['xfile'];
//$path=$_SESSION['xpath'];
$xstart=$_SESSION['xxstart'];
 
//-----------------------------------------------------------------------
//-------- Anzeige von 01.jpg beim Oeffnen der Galerie -----
//-----------------------------------------------------------------------
     
     //$path=$pfad;

if (($xstart<>1)||($file==""))   
{    
     
$file="01.jpg";
     echo
"FFFile=$file";
     
$text=$path."/titel.txt";
     
     
$beschr=$path."/01.txt";
     
     
$xstart=1;  
}    
     
     
   
// $_SESSION['xpath'] = $path; 
   //echo"123ABC=$pfad;;;$path";

//---------------------------------------------------------------------------------------//
//-------------Anzeige des Titels der Fotogalerie --- BEIDE Routinen ------//
//---------------------------------------------------------------------------------------//

     //if ($anzeige != "")
     // {
       
$fp =fopen($path."/titel.txt","r");
       
          if (
$fp)
          {
            while (!
feof($fp))
             {
              
$zeile=fgets($fp,100);
              echo
"<font size=\"4\" color=\"#cc3300\"><p><b><u>$zeile</u></b><p>";
               
             }
           
fclose ($fp); 
          }
      
//}
   
//---------------------------------------------------------//
//------ Die Bildausgabe für BEIDE Routinen -----//
//---------------------------------------------------------//

if ($xstart==1)
{
 
$cutstrtok($file,".");  //string dateiendung von der jpg-Datei (Bild-Datei) abschneiden ab punkt 
 
echo "2Path=$path";
 
$anzeige=$cut;
 
 
       if (
$submit=="Erstes")
           {
            
$file="01";
            echo 
"4Path=$path";    
           }
 
 
 echo 
"<table align=\"center\">";                                           
 echo 
"<tr><td  align=\"center\"><img src=$path/$file></td></tr>";     
 echo 
"</table>";
 
 }
 
 
//------------------------------------------------------//
 //-------- Anziege der Bildunterschrift ----------//
 //------------------------------------------------------//
 
 
if ($anzeige != "")
      {
       
$fp =fopen("$path/$anzeige.txt","r");
         
          if (
$fp)
           {
             while (!
feof($fp))
              {
               
$zeile=fgets($fp,100);
               echo
"<font size=\"3\" color=\"#000000\"><p>$zeile<p>";
               
              }
            
fclose ($fp); 
           }
           else
            { 
             echo
"<font size=\"3\" color=\"#000000\"><p>$zeile<br>";
             echo
"<font size=\"3\" color=\"#000000\">Keine Angaben oder kein Bild vorhanden.";     
            }  
      } 

$_SESSION['xxstart']=$xstart;

//---------------------------------------------------------//
//------------ HTML-Formular für die Buttons -----//
//---------------------------------------------------------//

echo

<form action='$PHP_SELF' method='_self'>

<Table><tr>
  <td align='right' width='50'><input type='submit' name='submit' value='Erstes'></td>
  <!--<td align='center' width='55'><input type='submit' name='submit' value='Zurueck'></td> -->
  <td width='600'></td>
  <!--<td align='center' width='55'><input type='submit' name='submit' value='Weiter'></td>-->
  <!--<td align='left' width='50'><input type='submit' name='submit' value='Letztes'></td> -->
</tr></Table>
</form>
"
;
?>

Geändert von Kropff (10-04-2008 um 08:51 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 10-04-2008, 08:38
frodenius
 Registrierter Benutzer
Links : Onlinestatus : frodenius ist offline
Registriert seit: Sep 2006
Ort: Germany, Frankfurt/Main
Beiträge: 156
frodenius ist zur Zeit noch ein unbeschriebenes Blatt
Standard

bitte gescheite code tags!! (dann liest das vielleicht einer wirklich)
dann register_globals auf off! ( ist nicht umsonst empfohlen)

und in welchem if-block geht $path verloren??
__________________
blllubb

Geändert von frodenius (10-04-2008 um 08:40 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 10-04-2008, 10:19
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ich habe versucht, dies mit einer Session-Variable zu beheben, aber es funktioniert nicht
Wenn du nicht in der php.ini session_autostart() auf ON hat, wird die Sache mit den Sessions ohne explizites session_start() wohl nix werden
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 10-04-2008, 20:49
david2
 Registrierter Benutzer
Links : Onlinestatus : david2 ist offline
Registriert seit: Feb 2008
Beiträge: 25
david2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo

Danke für die Antworten. Den session() - Befehl habe ich ganz oben, noch vor dem ersten HTML-Tag gesetzt.

<?
session();
?>
<HTML>
...

Und zu der zweiten Frage in folgender IF-Schleife vergisst die Variable $path ihren Inhalt

PHP-Code:
if ($xstart==1)
{

 
$cutstrtok($file,".");  //string dateiendung von der jpg-Datei (Bild-Datei) abschneiden ab punkt 
 
echo "2Path=$path";
 
$anzeige=$cut;
 
 

       if (
$submit=="Erstes")
           {
            
$file="01";
            echo 
"4Path=$path";    
           }
 
 

 echo 
"<table align=\"center\">";                                           
 echo 
"<tr><td  align=\"center\"><img src=$path/$file></td></tr>";     
 echo 
"</table>";
 
 } 
Ich hoffe, dass jemand hier mir helfen kann.

Mit freundlichen Grüßen

david2

Geändert von david2 (10-04-2008 um 21:01 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 10-04-2008, 21:13
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Und zu der zweiten Frage in folgender IF-Schleife vergisst die Variable $path ihren Inhalt
es gibt keine if-schleifen. welche if-bedingung meinst du? die erste oder die zweite? ich rate mal:
PHP-Code:
if (!empty($_POST['submit'])) 
und bitte gewöhn dir an, ohne diese anführungszeichen zu arbeiten. ... und ohne layout-tabellen und ohne uralte attribute zur optischen auszeichnung.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite

Geändert von Kropff (10-04-2008 um 21:16 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 10-04-2008, 21:23
david2
 Registrierter Benutzer
Links : Onlinestatus : david2 ist offline
Registriert seit: Feb 2008
Beiträge: 25
david2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Kropff

Ich meine diese If - Bedingung

PHP-Code:
      if ($submit=="Erstes")  //Übrigens, diese Abfrage funktioniert auch!
           
{
            
$file="01";
            echo 
"4Path=$path";    
           } 
P.S. Wenn Sie mit uralten Attributen das
//---------------//
//--- Blabla ---//
//---------------//
meinen, das mache ich nur zur Übersichtlichkeit des Quelltextes quasi eine Art Modularisierung.

Und falls Sie mit Layout-Tabellen das

echo "<table align=\"center\">";
echo "<tr><td align=\"center\"><img src=$path/$file></td></tr>";
echo "</table>

meinen, das mache ich, weil ich im Rahmen der HTML-Programmierung gelernt habe und auch die Erfahrung gemacht habe, dass man mit Tabellen die Seitenoptik am besten im Griff hat.

Mit freundlichen Grüßen

david2

Geändert von david2 (10-04-2008 um 21:33 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 10-04-2008, 21:32
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
if ($_POST['submit'] == 'Erstes'
siehe auch register_globals
Zitat:
Was sind Layout-Tabellen
offenbar das, was du machst. ich rate aber.
Zitat:
und "uralte Attribute zur optischen Auszeichnung"
PHP-Code:
echo "<table align=\"center\">"
das ist veraltet. keine attribute mehr zur optischen auszeichnung. dafür nimmt man css.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #8 (permalink)  
Alt 10-04-2008, 21:36
david2
 Registrierter Benutzer
Links : Onlinestatus : david2 ist offline
Registriert seit: Feb 2008
Beiträge: 25
david2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Kropf

Falls Sie meinten durch

PHP-Code:
if ($_POST['submit'] == 'Erstes'
löst sich das Problem mit dem Vergessen, ich habe es ausprobiert und es funktioniert nicht.
Ich weiß dass PHP-Programmierung etwas anders ist normale Programmierung also etwa C oder Delphi, vielleicht übersehe ich dadurch etwas.

MFG

david2

Geändert von david2 (10-04-2008 um 22:00 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 11-04-2008, 09:17
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
ich habe es ausprobiert und es funktioniert nicht.
dann betreib mal ein vernünftiges debugging

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #10 (permalink)  
Alt 11-04-2008, 09:24
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Danke für die Antworten. Den session() - Befehl habe ich ganz oben, noch vor dem ersten HTML-Tag gesetzt.
Ich hoffe für dich, dass das Teil in deinem Originalcode session_start() heisst. Sonst ist nicht viel mit Sessions
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 21-04-2008, 19:56
david2
 Registrierter Benutzer
Links : Onlinestatus : david2 ist offline
Registriert seit: Feb 2008
Beiträge: 25
david2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo

Leider habe ich immernoch das Problem, dass eine Variabel plötzlich und "unerklärlich" ihren Inhalt scheinbar vergisst. Deshalb stelle ich hier nochmal den aktuellen PHP-Quelltext ein.
Es wäre nett, wenn jemand sich diesen Quelltext mal ansehen könnte, ob er konsistent ist und ob die if-Abfragen logisch richtig angeordnet sind. Vielleicht steckt mein Fehler in der logischen Abfolge.
Ich werde die if-Abfrage, in der die Variable ihren Inhalt vergisst besonders markieren.

Mit freundlichen Grüßen

david2

PHP-Code:
<?
session_start
();     
?>

<html>
<head>
<title>Bildanzeige</title>

<body bgcolor="#cccccc">
<center>

<?php

error_reporting
(E_ALL);
ini_set('register_globals'0);

global 
$path;
global 
$xstart;
global 
$file;
global 
$submit;
global 
$zeile;
global 
$cfile;
$_SESSION["xpath"]=$path;
//dies ist die problematische Variable
PHP-Code:
//-------------------------------------------------------------------------------------//
//-------- Vorraussetzungen für die Anzeige von 01.jpg beim Oeffnen der Galerie -------//
//-------------------------------------------------------------------------------------//

if (($xstart<>1)&&($file==""))   
{    
     
$file="01.jpg";
     
     
$anzeige="01";
     
     
$xstart=1;
}    
 
//-------------------------------------------------------------
//------------------------------------------------------------- 
if ($submit=="Erstes") //hier "fehlt" in $path (oben dick markiert) der Inhalt
{
$file="01.jpg";
}
PHP-Code:

//--------------------------------------------------------------------------------------------------//
//-------------- Variablen-Vorbereitungen für die Bildausgabe, wenn ein Bild angeklickt wurde ------//
//--------------------------------------------------------------------------------------------------//

if (($xstart==1) || ($submit==""))
{
$cutstrtok($file,".");  //string dateiendung von der jpg-Datei (Bild-Datei) abschneiden ab punkt 
 
$anzeige=$cut;
}

//---------------------------------------------------------------------------------------//
//-------------Anzeige des Titels der Fotogalerie --- BEIDE Routinen --------------------//
//---------------------------------------------------------------------------------------//

    
if ($path!="");
     
//if ($anzeige != "")
     
{
    
$fp =@fopen($path."/titel.txt","r");
     
          if (
$fp)
          {
            while (!
feof($fp))
             {
              
$zeile=fgets($fp,100);
              echo
"<font size=\"4\" color=\"#cc3300\"><p><b><u>$zeile</u></b><p>";
               
             }
           
fclose ($fp); 
          }
          
           else
            { 
             echo
"<font size=\"3\" color=\"#000000\"><p>$zeile<br>";
             echo
"<font size=\"4\" color=\"#cc3300\"><p><b><u>Fotogalerie von Maxi Mustermann</u></b><p>";     
            }
      }

//---------------------------------------------------
//------ Die Bildausgabe für BEIDE Routinen ---------
//---------------------------------------------------
 
 
echo "<table align=\"center\">";                                           
 echo 
"<tr><td  align=\"center\"><img src=$path/$file></td></tr>";     
 echo 
"</table>";

//--------------------------------------------------------------------------------------------------//
//------ Auslesen der Textdatei zur Anziege der Bildunterschrift wenn in Textdatei vorhanden -------//
//----------------------------------- Auslesen für BEIDE Routinen ----------------------------------//
//--------------------------------------------------------------------------------------------------//
     
     
if ($path!="");
     
//if ($anzeige != "")
     
{
       
$fp =@fopen("$path/$anzeige.txt","r");
         
          if (
$fp)
           {
             while (!
feof($fp))
              {
               
$zeile=fgets($fp,100);
               echo
"<font size=\"3\" color=\"#000000\"><p>$zeile<p>";
               
              }
            
fclose ($fp); 
           }
           else
            { 
             echo
"<font size=\"3\" color=\"#000000\"><p>$zeile<br>";
             echo
"<font size=\"3\" color=\"#000000\">Keine Angaben oder kein Bild vorhanden.";     
            }
    }  

.....


echo
"

<form action='$PHP_SELF' method='_self'>

<Table><tr>
  <td align='right' width='50'><input type='submit' name='submit' value='Erstes'></td>
   </tr></Table>

</form>

"
;
    
?>
</center>
</body>
</html> 

Geändert von david2 (21-04-2008 um 20:19 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 21-04-2008, 20:28
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

woher kommt denn dein $path?
schonmal print_r($_POST) bzw. $_GET angeschaut?

das sieht sehr verdächtig aus:
in dem formular ist nur ein <input> ??
method _self ist mir auch neu


PHP-Code:
<form action='$PHP_SELF' method='_self'>

<
Table><tr>
  <
td align='right' width='50'><input type='submit' name='submit' value='Erstes'></td>
   </
tr></Table>

</
form
Mit Zitat antworten
  #13 (permalink)  
Alt 21-04-2008, 20:33
david2
 Registrierter Benutzer
Links : Onlinestatus : david2 ist offline
Registriert seit: Feb 2008
Beiträge: 25
david2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Fenster, welches auf diesem PHP-Script basiert, wird durch Klick auf einen Link aufgerufen. Bei diesem Aufruf wird die $path-Variable mitgeliefert.

Das seltsame, und das macht mich ziemlich verrückt, ist, dass die Variable nur in der hellgrün markierten if-Abfrage leer ist. Ansonsten funktioniert alles so wie es soll. Daher denke ich, dass das Problem in der logischen Anordnung der if-Abfragen liegt.

Geändert von david2 (21-04-2008 um 20:36 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 21-04-2008, 20:51
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich wette du würdest den fehler finden, wenn du dieses
global zeug mal aus den weg räumen würdest!


Zitat:
[...]dass die Variable nur in der hellgrün markierten if-Abfrage leer ist.
danach ist $path dann wieder nicht leer oder was?

überleg mal was genau passiert wenn du auf deinen submit button drückst
du solltest, wie dir schon vorgeschlagen, einfach mal ordentlich debuggen
und meiner meinung nach auch mal die globals beseitigen ^^
Mit Zitat antworten
  #15 (permalink)  
Alt 21-04-2008, 20:59
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Haste dein error_reporting auf E_ALL stehen?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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