SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 01.06.2010, 14:20:37
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 45
Beiträge: 57
Funktioniert list() nicht mit Session Arrays?

Über ein Formular werden via $_POST Werte in ein Session-Array geschrieben.
Wenn ich dieses Array einer Variabel zuweise und diese mit var_dump ausgebe, sieht die Ausgabe so aus:
Zitat:
array(2)
{
[0]=> array(8)
{
["position"]=> int(1)
["typ"]=> string(5) "Typ15"
["system"]=> string(12) "Ideal 4000RL"
["glasart"]=> string(7) "doppelt"
["rfarbe"]=> string(4) "weiß"
["x"]=> string(3) "150"
["y"]=> string(3) "160"
["menge"]=> string(1) "8"
}
[1]=> array(8)
{
["position"]=> int(2)
["typ"]=> string(4) "Typ1"
["system"]=> string(12) "Ideal 2000RL"
["glasart"]=> string(5) "3fach"
["rfarbe"]=> string(4) "weiß"
["x"]=> string(2) "45"
["y"]=> string(2) "60"
["menge"]=> string(2) "10"
}
}
Nun wollt ich den Inhalt des Arrays via list() in einer while-Schleife ausgeben und hab diese Variante ausprobiert, die aber nicht das gewünschte Ergebnis brachte!

PHP-Code:
$anfragen $_SESSION['anfrage'];
while (list(
$pos$typ$system$glasart$rfarbe$x$y$menge) = each($anfragen))
{
 echo 
$pos.'&nbsp;'.$typ.'&nbsp;'.$system.'&nbsp;'.$glasart.'&nbsp;'.$rfarbe.'&nbsp;'.$x.'&nbsp;'.$y.'&nbsp;'.$menge.'<br>';

Die echo-Anweisung innerhalb der Schleife führte zu diesen Fehlermeldungen:
Zitat:
Notice: Undefined offset: 7 in /anfragen_send.php on line 80

Notice: Undefined offset: 6 in /anfragen_send.php on line 80

Notice: Undefined offset: 5 in /anfragen_send.php on line 80

Notice: Undefined offset: 4 in /anfragen_send.php on line 80

Notice: Undefined offset: 3 in /anfragen_send.php on line 80

Notice: Undefined offset: 2 in /anfragen_send.php on line 80
0 Array

Notice: Undefined offset: 7 in /anfragen_send.php on line 80

Notice: Undefined offset: 6 in /anfragen_send.php on line 80

Notice: Undefined offset: 5 in /anfragen_send.php on line 80

Notice: Undefined offset: 4 in /anfragen_send.php on line 80

Notice: Undefined offset: 3 in /anfragen_send.php on line 80

Notice: Undefined offset: 2 in /anfragen_send.php on line 80
1 Array
Was mir an dieser Stelle wohl die meisten Schwierigkeiten macht ist, dass ich noch keine Literatur im Web(Tutorial/Dokumentation) gefunden hab, die nicht mit einem fest definierten Array arbeitet.

In meinem PHP5-Handbuch wird list z.B. so erläutert:
PHP-Code:
$produkte = array("Gurke""Lauch""Brokoli""Kohl");

list(
$produkt1$produkt2$produkt3$produkt4) =  $produkte;
echo 
produkt1
In meinem Fall ist eine solche fixe Arraydeklartion jedoch nicht möglich, da es abhängig von der Formularübergabe ist und nicht nur 1 Zeile(Subarray), sondern mehrere Zeilen enthalten kann.

Wäre nett, wenn mir mal einer nen Ansatz aufzeigen könnte, um zunächst mal nur die Position Zeilenweise auszugeben.

Thx vorab!

Geändert von cortex (01.06.2010 um 15:36:09 Uhr)
Mit Zitat antworten
  #2  
Alt 01.06.2010, 14:33:00
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 45
Beiträge: 57
AW: Funktioniert list() nicht mit Session Arrays?

OK, grade nen Geistesblitz gehabt und doch noch auf die Lösung gekommen.
So sieht es jetzt aus und funktioniert auch:
PHP-Code:
$gesamt=count($_SESSION['anfrage']); 
$index=0;
$anfragen $_SESSION['anfrage'];
while (
$gesamt 0)
{
  list(
$pos$typ$system$glasart$rfarbe$x$y$menge) = each($anfragen);
  
$pos=$_SESSION['anfrage'][$index]['position'];
  
$typ=$_SESSION['anfrage'][$index]['typ'];
  
$system=$_SESSION['anfrage'][$index]['system'];
  
$glasart=$_SESSION['anfrage'][$index]['glasart'];
  
$rfarbe=$_SESSION['anfrage'][$index]['rfarbe'];
  
$x=$_SESSION['anfrage'][$index]['x'];
  
$y=$_SESSION['anfrage'][$index]['y'];
  
$menge=$_SESSION['anfrage'][$index]['menge'];
  echo 
$pos.'<br>';
  
$index++; $gesamt--;         

Als nächstes werde ich daran arbeiten, dass auf der Seite immer nur jeweils eine Zeile des Array angezeigt wird und man durchblättern kann.

Nichts desto trotz, falls jemand noch ne elegantere/kürzer Lösung vom Coding her kann, bitte posten.
Mit Zitat antworten
  #3  
Alt 01.06.2010, 14:34:57
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Funktioniert list() nicht mit Session Arrays?

Du möchtest nicht list() verwenden, sondern extract().
(oder sogar ganz auf dem import in den Namensraum verzichten)
Auch möchtest du sicherlich viel lieber mit foreach, statt mit while/each arbeiten.
Mit Zitat antworten
  #4  
Alt 01.06.2010, 16:59:48
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 45
Beiträge: 57
AW: Funktioniert list() nicht mit Session Arrays?

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
(oder sogar ganz auf dem import in den Namensraum verzichten)
Was meinst du an dieser Stelle mit Namensraum?
Mit Zitat antworten
  #5  
Alt 01.06.2010, 18:12:15
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Funktioniert list() nicht mit Session Arrays?

Mit dem Namensraum meine ich den Bereich, wo die Variablen angelegt werden.

Tipp:
Die Qualität des Codes steigt nicht mit der Anzahl der Variablen.
Mit Zitat antworten
  #6  
Alt 02.06.2010, 10:57:16
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 45
Beiträge: 57
AW: Funktioniert list() nicht mit Session Arrays?

Also hab mir nochmals die Dokumentation zur extract und foreach durchgelesen und zu dieser Codeänderung gelangt, welche auch funktioniert.

PHP-Code:
//$gesamt=count($_SESSION['anfrage']); 
$index=0;
$anfragen $_SESSION['anfrage'];


foreach ( 
$anfragen as $value )
{
  
extract($anfragen[$index], EXTR_PREFIX_ALL'tmp');

  echo 
'Pos.:$nbsp;' $tmp_position'<br>' "\n";
  echo 
'Typ.:$nbsp;' $tmp_typ'<br>' "\n";
  echo 
'System.:$nbsp;' $tmp_system '<br>' "\n";
  echo 
'Verglasung:$nbsp;' $tmp_glasart '<br>' "\n";
  echo 
'Rahhmenfarbe:$nbsp;' $tmp_rfarbe'<br>' "\n";
  echo 
'X:$nbsp;' $tmp_x'<br>' "\n";
  echo 
'Y:$nbsp;' $tmp_y '<br>' "\n";
  echo 
'Menge:$nbsp;' $tmp_menge '<br>' "\n";
  
$index++;

Somit kann ich nun den nächsten Schritt angehen und versuchen eine Blätterfunktion zu integrieren, so dass immer nur 1 Position aktuelle angezeigt wird.
Mit Zitat antworten
  #7  
Alt 02.06.2010, 11:14:53
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Funktioniert list() nicht mit Session Arrays?

Den Index bauchst du nicht selber zu zählen!
Auch könnte er später mal lückenhaft oder unsortiert sein.

PHP-Code:
//$gesamt=count($_SESSION['anfrage']);  



foreach ($_SESSION['anfrage'] as $index => $value // hier gibts den Index ohne rechnen geschenkt

  
extract($valueEXTR_PREFIX_ALL'tmp'); 

  echo 
'Pos.:&nbsp;'          $tmp_position '<br>' "\n"
  echo 
'Typ.:&nbsp;'          $tmp_typ      '<br>' "\n"
  echo 
'System.:&nbsp;'       $tmp_system   '<br>' "\n"
  echo 
'Verglasung:&nbsp;'    $tmp_glasart  '<br>' "\n"
  echo 
'Rahhmenfarbe:&nbsp;'  $tmp_rfarbe   '<br>' "\n"
  echo 
'X:&nbsp;'             $tmp_x        '<br>' "\n"
  echo 
'Y:&nbsp;'             $tmp_y        '<br>' "\n"
  echo 
'Menge:&nbsp;'         $tmp_menge    '<br>' "\n"


Und für die Blätterfunktion lässt sich folgendes nutzen:
http://de.php.net/manual/en/class.arrayiterator.php
http://de.php.net/manual/en/class.limititerator.php


Und?
Warum nicht so...

PHP-Code:
//$gesamt=count($_SESSION['anfrage']);  


foreach ($_SESSION['anfrage'] as $index => $value // hier gibts den Index ohne rechnen geschenkt

  echo 
'Pos.:&nbsp;'          $value['position']  . '<br>' "\n"
  echo 
'Typ.:&nbsp;'          $value['typ']       . '<br>' "\n"
  echo 
'System.:&nbsp;'       $value['system']    . '<br>' "\n"
  echo 
'Verglasung:&nbsp;'    $value['glasart ']  . '<br>' "\n"
  echo 
'Rahhmenfarbe:&nbsp;'  $value['rfarbe']    . '<br>' "\n"
  echo 
'X:&nbsp;'             $value['x']         . '<br>' "\n"
  echo 
'Y:&nbsp;'             $value['y']         . '<br>' "\n"
  echo 
'Menge:&nbsp;'         $value['menge']     . '<br>' "\n"


Geändert von DokuLeseHemmung (02.06.2010 um 11:27:46 Uhr)
Mit Zitat antworten
  #8  
Alt 02.06.2010, 13:11:04
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 45
Beiträge: 57
AW: Funktioniert list() nicht mit Session Arrays?

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Und?
Warum nicht so...
Naja, dass muss ich noch austesten, was für die spätere Weiterverarbeitung besser geignet ist. Sobald das mit dem Blättern läuft soll noch eine Möglichkeit geschaffen werden eine Position im Array komplett zu löschen bzw. die einzelnen Werte zu verändern.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Bringt mich momentan noch nicht weiter.
Sehe da leider keinen Ansatz wie es sich so umsetzen lässt, dass es durch das Anklicken von Links funktioniert.
PHP-Code:
echo '<a href="anfragen_senden.php?index='.($index-1).'" target="_self"><<</a>&nbsp;&nbsp;<b>Position</b>&nbsp;&nbsp;<a href="anfragen_senden.php?index='.($index+1).'" target="_self">>></a>'
Mit Zitat antworten
  #9  
Alt 02.06.2010, 13:30:43
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Funktioniert list() nicht mit Session Arrays?

Zitat:
Sobald das mit dem Blättern läuft soll noch eine Möglichkeit geschaffen werden eine Position im Array komplett zu löschen bzw. die einzelnen Werte zu verändern.
Ein Grund mehr mit dem konkreten Array zu arbeiten. Und nicht mit Kopien.

Zitat:
Bringt mich momentan noch nicht weiter.
Sehe da leider keinen Ansatz wie es sich so umsetzen lässt, dass es durch das Anklicken von Links funktioniert.
Das soll ich dir jetzt auch vorkauen?

Jagut, hier mal ein Beispiel für den Einsatz des LimitIterators:

PHP-Code:
<?php
error_reporting
(E_ALL E_STRICT); 
ini_set('display_errors'TRUE);


// ------------------
// Einstellungen
$such_in    '.';   // Verzeichnis, welches durchsucht werden soll
$pro_seite  10;           // Anzahl Einträge pro Seite


// Pager , Blätterfunktion
$seite  max(0,empty($_GET['S'])?0:(int)$_GET['S']);
$offset $seite*$pro_seite;

// Rekursivgedöns
$dir =  new LimitIterator(
            new 
RecursiveIteratorIterator(
              new 
RecursiveDirectoryIterator($such_in)),$offset,$pro_seite);
              
              
// Ausgabe
?>
<h1>Seite:  <?php echo  $seite   ?>     </h1>
<a href="?S=<?php echo ($seite-1)?>">Prev</a>  ||
<a href="?S=<?php echo ($seite+1)?>">Next</a>
<hr>
<?php


$dir
->rewind();
if(
$dir->valid())
  foreach(
$dir as $datei)
    echo 
$datei->getPathname()."<br>";
else echo 
'Hier ist Ende!<br>';
Mit Zitat antworten
  #10  
Alt 02.06.2010, 15:47:09
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 45
Beiträge: 57
AW: Funktioniert list() nicht mit Session Arrays?

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Das soll ich dir jetzt auch vorkauen?
Sry, aber das die PHP-Dokumentation(php.net) nicht gerade mit verständlichen Beispielcodes glänzt, liegt nicht an mir.
Es fehlen halt Erklärungen anhand von praxisnahen Beispielen.

Aber so läuft es jetzt:
PHP-Code:
$gesamt=count($_SESSION['anfrage']);
$dir=new LimitIterator(new RecursiveArrayIterator($anfragen), $offset$pps);
$dir->rewind();
if(
$dir->valid())
{
 foreach ( 
$dir as $index => $value 
 { 
  
// Ausgabe

 // Blättern
 
if ($gesamt '1')
 {
  if ((
$index '0') AND ($index < ($gesamt-1)))
  {
    echo 
'<a href="anfragen_send.php?step='.($index-1).'" target="_self"><<</a>&nbsp;&nbsp;<b>Position</b>&nbsp;&nbsp;<a href="anfragen_send.php?step='.($index+1).'" target="_self">>></a>';
  }
  elseif (
$index == '0'
  {
    echo 
'<<&nbsp;&nbsp;<b>Position</b>&nbsp;&nbsp;<a href="anfragen_send.php?step='.($index+1).'" target="_self">>></a>';
  }
  elseif (
$index == ($gesamt-1))
  {
    echo 
'<a href="anfragen_send.php?step='.($index-1).'" target="_self"><<</a>&nbsp;&nbsp;<b>Position</b>&nbsp;&nbsp;>>';
  }
 }


Geändert von KeinenPlan (02.06.2010 um 16:16:25 Uhr)
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session funktioniert im IE ohne Cookies, im FF nicht. Nuntius PHP Grundlagen 33 24.08.2008 10:17:56
Session wird zu früh beendet ... sk4ter PHP Grundlagen 2 15.11.2007 18:49:57
Session ID - Übergabe von Arrays Baracus PHP Grundlagen 4 28.12.2006 13:36:38
Session funktioniert lokal, online aber nicht?! 8805-evergreen. PHP Grundlagen 11 27.03.2006 11:58:45
session funktioniert nicht!! flomll PHP Grundlagen 7 15.03.2006 17:25:36


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt