php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.05.2006, 09:15  
Erfahrener Benutzer
 
Registriert seit: 01.06.2004
Beiträge: 136
NetLook
Standard Variable oberhalb des Skripts anzeigen, wenn Seite an sich..

...selbst gesendet wird?!

Hallo!

Ich habe eine Seite mit einem Formular, wenn dies abgeschickt wird, wird die gleiche Seite wieder aufgerufen und das PHP Skript ausgeführt.

In dem Skript wird ein Array durchlaufen und eine Varibale hoch gezählt, diese möchte ich zur gleichen Zeit oberhalb des Skriptes ausgeben.

Ich habe es mit Session probiert, aber auch dann wird die Variable erst beim nächsten Aufruf angezeigt. Das Skript brauche ich nicht posten, da es einfach nur eine Schleife ist. Es geht eher um den Ablauf:

1. Formular wird mit Werten gesendet

2. Das Skript wird ausgeführt:

Hier soll die Varibale hin: <php echo $i ?>

Hier (darunter) läuft die Schleife und zählt die Variable hoch: $i++;
An dieser Stelle habe ich also den Wert von $i ermittelt, der nun nach oben gebracht werden soll zur gleichen Zeit.
__________________
Gruß
NetLook

www.werbeset.com
NetLook ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.05.2006, 09:49  
Benutzer
 
Registriert seit: 02.12.2005
Beiträge: 73
jbay
Standard

Wenn ich Dich richtig verstehe geht das doch rein logisch gar nicht.
Du kannst doch nicht eine Variable ausgeben bevor du sie berechnet hast.

Dein Anliegen ist bloss mit einer Client-seitigen Programmiersprache realisierbar und das ist php nun mal nicht.
jbay ist offline  
Alt 08.05.2006, 09:55  
Erfahrener Benutzer
 
Registriert seit: 03.04.2006
Beiträge: 222
&lt;Daniel&gt;
Standard

Also moment mal ^^
Sagen wir mal so sieht dein Code aus:
PHP-Code:
<?php

echo $i;

//schleife

?>
Du willst das die schleife durch gezählt wird und das das Ergebnis oben angezeigt wird, oder wie?
Poste bitte den Code ^^

mfg
&lt;Daniel&gt; ist offline  
Alt 08.05.2006, 10:03  
Erfahrener Benutzer
 
Registriert seit: 01.06.2004
Beiträge: 136
NetLook
Standard

Hallo!

Code posten bingt nichts. So ist der Code strukturiert:

Code:
<?php 

echo $i; 

//schleife 

?>
Dann geht es wohl nicht

Werd mal was mit Javascript probieren!
__________________
Gruß
NetLook

www.werbeset.com
NetLook ist offline  
Alt 08.05.2006, 10:14  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "NetLook".

Ja, du musst deinen Entwurf umbauen. Im einfachsten Fall kann man sowas folgendermaßen halbwegs
sauber umsetzen:

PHP-Code:
<?php

$sAction 
'displayForm';

if (isset(
$_POST['sent']))
    
$sAction 'processForm';

switch (
$sAction) {

    case 
'displayForm':
    
$sView 'Form';
    break;

    case 
'processForm':
    
// validate data
    
if (!$bIsValid) {
        
$sView 'Form';
        break;
    
// store data
    
$sView 'Table';
}

switch (
$sView) {

    case 
'Form':
    
$sTarget 'bla';
    break;

    case 
'Table':
    
$aTableData = ... get from data base or somwhere else...
    break;
}

include 
'templates/main.php'
?>

// templates/main.php

<html>
    <some headers />
    <?php include "templates/{$sView}.php"?>
    <footer>
</html>

// templates/Table.php

<table>
<?php foreach ($aTableData as $aRow) { ?>
    <tr>
    <?php foreach ($aRow as $sCell) { ?>
        <td><?php print $sCell?></td>
    <?php ?>
    </tr>    
<?php ?>
</table>
?>
Diese Tabelle kannst du dann beliebig oft einbauen, wenn du die Daten worher zusammengestellt
hast.

Basti
Basti ist offline  
Alt 08.05.2006, 10:28  
Erfahrener Benutzer
 
Registriert seit: 01.06.2004
Beiträge: 136
NetLook
Standard

Hallo!

Vielen dank, muss das erstmal in ruhe durchgehen, um es zu verstehen!
__________________
Gruß
NetLook

www.werbeset.com
NetLook ist offline  
Alt 08.05.2006, 11:04  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von NetLook
muss das erstmal in ruhe durchgehen, um es zu verstehen!
Ist eigentlich nicht so komplex *g

Im ersten Block entscheidest du anhand der Anfrage, was zu tun ist. Gegebenenfalls kannst du hier auch Zugriffsrechte prüfen oder sonst was anstellen, um herauszubekommen, welche Aktion durchgeführt werden soll.

Im zweiten Block führst du die Aktion dann aus. Hier führst du Änderungen an der Datenbank etc. durch und entscheidest am Ende, welche Seite (Seiten-Komponente etc.) angezeigt werden soll.

Im dritten Block bereitest du für die anzuzeigende Seite die Daten vor. Trägst sie also aus der Datenbank etc. zusammen und machst alles, um im Template möglichst nur noch String-Ausgaben, Iterationen (foreach) über Arrays für Listen und Tabellen, sowie konditionale Ausdrücke (if) anhand von vorbereiteten Flags (boolschen Werten) zu haben, z.B. ob ein Block angezeigt werden soll oder nicht.

Im letzten Schritt wird dann das Haupt-Template eingebunden, dass die jeweilige Komponente nachläd.

Das Ganz hat so natürlich die Nachteile, dass so a) die Werte nicht klarenen Namensräumen zugeordnet sind. Im Template könntest du also auch auf $sAction zugreifen, obwohl das garnicht so vorgesehen war. Und b) hast du womöglich Redundanzen in den Datenbankabfragen. Wenn also die Action eine ganze Tabelle einliest, um die Aktion durchführen zu können, dann liest der Teil im View-Block die Tabelle vielleicht nochmal ein, um sie für die Ausgabe vorzubereiten.

Aber ohne Klassen/Objekte lässt sich das wohl kaum sinnvoll anders lösen.

Obwohl ... wenn du den include-Befehl in eine Funktion packst und dieser ein Array mit den vorbereiteten Daten übergibst kannst in der Funktion das Array mit extract() quasi entpacken und dann das Template einbinden.

Und für das zweite Problem müsstst du über Funktionen auf globale Variablen zugreifen und diese dort ggf. aus der Datenbank auslesen, falls sie noch nicht ausgelesen wurden. Aber dann kannst du auch gleich ne Klasse schreiben.

Basti
Basti 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
Bei richtiger Eingabe Daten an nächste Seite versenden xx_heidi_xx PHP Tipps 2008 49 27.05.2008 14:56
String aus einer Seite in Variable speichern KimKaye PHP Tipps 2008 10 14.05.2008 09:57
Anzeigen der Seite, daraufhin Weiterleitung hoamer PHP Tipps 2008 15 08.03.2008 15:39
seite anzeigen anno PHP Tipps 2008 4 11.10.2007 15:16
Gültigkeit einer Variable nur für ein Seitenaufruf ruferp PHP Tipps 2007 6 17.02.2007 18:19
Variable auf anderer Seite eintragen duderino HTML, Usability und Barrierefreiheit 10 02.11.2006 12:55
Variable in neuem Dokument anzeigen PHP Tipps 2005 8 21.02.2005 21:18
Variable übergeben PHP Tipps 2004 2 04.09.2004 14:34
news.php in html Seite anzeigen PHP Tipps 2004 4 30.08.2004 18:20
grafik anzeigen für bestimmte seite PHP Tipps 2004 4 23.08.2004 12:57
Nur eine Variable aus einer anderen Seite übernehmen ??? PHP Tipps 2004 4 17.08.2004 00:34
Zugriff von einer PHP Seite auf eine Variable der anderen. PHP Tipps 2004 4 02.08.2004 01:24
Bild + URL auf neuer Seite anzeigen PHP Tipps 2004 8 18.07.2004 20:51
Variable über eine Seite an andere übergeben? PHP Tipps 2004 12 10.06.2004 11:00
variable mit letzter Seite die vom Besucher aufgerufen wurde PHP Tipps 2004 7 06.06.2004 12:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html variable anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:57 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.