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 15-09-2006, 11:38
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard Session, Konstante, oder was...?

Hallo, ich habe ein Skript bei dem eine Datenbank erzeugt wird (erst in ein Formular den DB-Namen eingeben und wenn es abgeschickt wird, wird ein Skript gestartet das die DB anlegt). Nun habe ich das Problem, das ja alle weiteren Skripte auf die erzeugte DB zugreifen müssen. Also wird der DB-Name aus dem Formular gleich noch in einer Session gespeichert:

PHP-Code:
session_start(); 
extract($_POSTEXTR_OVERWRITE);
$_SESSION['datenbankname']=$datenbankname
ABER, wenn man dann eben am nächsten Tag weiter arbeiten will, gibt es ja die session nicht mehr. Also habe ich mir auf umständlichen Weg ein Skript gebaut, das mittels mysql_list_dbs alle Datenbanken auflistet und dort kann man dann seine DB auswählen und somit wieder in einer Session "aktivieren". Ich finde das aber total bescheuert so. Also habe ich mir die Konstanten reingezogen. Klingt ja soweit ganz gut. Aber Konstanten kann man halt nicht überschreiben. Ich wollte praktisch den Datenbanknamen per $_POST als Konstante definieren. Aber was ist nun wenn das Skript irgendwann mal wieder ausgeführt wird.... Kann er dann die Konstante anpassen? Die Konstanten sollen in einer eigenen Datei stehen und per include () aufgerufen werden. MfG Simauki
Mit Zitat antworten
  #2 (permalink)  
Alt 15-09-2006, 12:04
strauberry
 Registrierter Benutzer
Links : Onlinestatus : strauberry ist offline
Registriert seit: Nov 2002
Beiträge: 616
strauberry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du könntest in einem Cookie eine eindeutige Benutzer-ID speichern und dann in der DB jeder Benutzer-ID den Datenbank-Namen zuweisen... oder hab ich das nicht ganz kapiert?
Mit Zitat antworten
  #3 (permalink)  
Alt 15-09-2006, 12:10
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, ich glaube da reden wir von verschiedenen Dingen. MfG Simauki
Mit Zitat antworten
  #4 (permalink)  
Alt 15-09-2006, 13:10
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

PHP-Code:
extract($_POSTEXTR_OVERWRITE); 
Oje, damit machst du die ganzen Vorteile von
register_globals=Off mit einem Schlag wieder kaputt!

Datenbankname:
Wieviele Datenbanken setzt du in deinem Script ein?
Eine ? Dann sind Konstanten genau richtig für dich!

Sessions:
Sessions halten in der Voreinstellung ca 24 min
inaktivität aus. Das Sessioncookie verfällt beim
Schließen des Browsers.


Ansonsten kann ich strauberry nur zustimmen! Wenn du
Benutzerbezogene Daten überlängere Zeit halten
möchtest, dann verwende Cookies in verbindung mit
einer Datenbank.

Frage:
Noch habe ich nicht verstanden, was du nun wirklich
erreichen möchtest..? Versuche es bitte nochmal zu
erklären..

Geändert von combie (15-09-2006 um 13:34 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 15-09-2006, 13:16
strauberry
 Registrierter Benutzer
Links : Onlinestatus : strauberry ist offline
Registriert seit: Nov 2002
Beiträge: 616
strauberry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich hatte das so verstanden, dass jeder Benutzer seine eigene DB anlegen kann, bei der er den Namen selbst vorgibt. Dieser Name soll über längere Zeit gespeichert werden. Ist das falsch?
Mit Zitat antworten
  #6 (permalink)  
Alt 15-09-2006, 15:17
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, Strauberry hats doch (fast) verstanden. Ich will nicht das jeder Nutzer seine eigene Datenbank anlegen kann, sondern das das bei jedem Skriptdurchlauf möglich ist. Ist also fast dasselbe. Hintergrund des Ganzen ist, das ich eine Webapplikation für ein Seminar entwickele, bei der die Daten bzw. die Datenbank so wie die Seminarteilnehmer sie verlassen haben, erhalten bleiben soll. Und wenn praktisch der Kurs vom Montag eine Woche später wiederkommt, soll die DB unverändert sein und ich brauche eben den DB-Namen, den die Jungs sich zu dem früheren Zeitpunkt ausgesucht haben. Und am Dienstag gilt dasselbe. Es werden die selben Skripte mit den selben Abfragen benötigt. Nur das eben der DB-Name immer ein anderer ist. Session würde sicher gehen, wenn das seminar immer an einem Tag abgeschlossen wäre und die DB sonst nicht mehr vom dümmsten anzunehmenden User gebraucht werden würde. Ist aber nicht der Fall.

Nun war meine Idee, den Datenbanknamen als Konstante zu speichern:

PHP-Code:

define
("DBNAME","".$_REQUEST['datenbankname'].""); 
Das Ganze natürlich in einer eigenen Datei. Die Konstante soll aber in den anderen Skripten per include eingebunden werden können.

PHP-Code:

include 'konstanten.php';
echo 
DBNAME
Nun zum Problem, den Problemen.

1. So wie ich das da oben skizziert habe funktioniert das nicht. Kann man Konstanten überhaupt aus Variablen "herstellen"?
2. Die Konstante, oder die Datei konstante.php muß irgendwie austauschbar sein, es soll ja beim nächsten Durchlauf eine andere DB verwendet werden.

MfG Simauki

Geändert von simauki (15-09-2006 um 15:20 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 15-09-2006, 15:20
strauberry
 Registrierter Benutzer
Links : Onlinestatus : strauberry ist offline
Registriert seit: Nov 2002
Beiträge: 616
strauberry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

folgende Fragen:
- Wieso müssen es verschiedene DBs sein, man kann auch eine Flag in die Tabelle setzen, zu welchem Seminar das ganze gehört
- Wie erkennt das System, wer gerade am PC sitzt? Loggen die sich ein? Geht es nach Zeit?
Mit Zitat antworten
  #8 (permalink)  
Alt 15-09-2006, 15:25
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, für jeden Kurs eine eigene DB wäre mir lieber. Aber selbst so wie Du es vorschlägst und ich nehme meinetwegen andere Tabellen, oder was auch immer. Ich will das Ganze ja dynamisch halten und immer dieselben Skripte verwenden können nur das dort eben in irgendeiner Form immer eine Variable (welche auch immer) anders ist. Und ich will das jeder Kurs einmal den Namen der Variablen eingibt und danach nichts weiter tun muß, außer vielleicht noch die Variable in irgendeiner simplen Form auszuwählen.

Und zum wie erkennt das System wer am PC sitzt? Eigentlich sollen die sich nur ransetzen und dann im schlimmsten Falle noch in einer simplen Form die Arbeit vom letzten Mal zu "aktivieren". Weiß halt nur nicht wie es am sinnvollsten ist. MfG Simauki

Geändert von simauki (15-09-2006 um 15:27 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 15-09-2006, 15:30
strauberry
 Registrierter Benutzer
Links : Onlinestatus : strauberry ist offline
Registriert seit: Nov 2002
Beiträge: 616
strauberry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, alles klar.

Was mir aber immer noch nicht klar ist: woher weiß das System, welches "Seminar" gerade am PC sitzt bzw. das Script aufruft? Hat jedes Seminar andere Computer/Domains/Scriptparameter/Logins/... irgendwie muss man das ja zuweisen oder ist es zeitabhängig: Montag DB 1, Dienstag DB 2, ...
Mit Zitat antworten
  #10 (permalink)  
Alt 15-09-2006, 15:31
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, das ist die Methode "ransetzen und loslegen"....

So "aktivieren" die jetzt die DB:
PHP-Code:

echo "Um die Datenbank mit welcher zuletzt gearbeitet wurde 
auszuwählen, klicken sie einfach auf den entsprechenden Namen.<br><br>"
;

$link = @mysql_connect("localhost","root","s1t2r3i4")
or die(
"Keine Verbindung möglich: " mysql_error());

$dblist mysql_list_dbs($link);

while (
$row mysql_fetch_object($dblist)) 
{echo 
"
<a href=session_datenbankname.php?datenbank="
.urlencode($row->Database).">
"
.urlencode($row->Database)."</a><br>";}

mysql_close($link); 
Im nächsten Skript wird der DB-Name in einer neuen Session gespeichert.

PHP-Code:

session_start
(); 
$_SESSION['datenbank']=$_GET['datenbank'];

echo 
"Die Datenbank -".$_SESSION['datenbank']."- ist jetzt aktiviert."
Das funktioniert, ich finde die Lösung aber so zum kotzen. MfG Simauki
Mit Zitat antworten
  #11 (permalink)  
Alt 15-09-2006, 15:32
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von simauki
Kann man Konstanten überhaupt aus Variablen "herstellen"?
Ja - allerdings lässt man dabei die absolut schwachsinnige Verkettung des Variableninhaltes mit Leerstrings am Anfang und am Ende weg.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 15-09-2006, 15:42
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, wenn ich aber

PHP-Code:
define("DBNAME","$_REQUEST['datenbankname']"); 
statt

PHP-Code:
define("DBNAME","".$_REQUEST['datenbankname'].""); 
mache, nimmt er die Konstante nicht an. MfG Simauki
Mit Zitat antworten
  #13 (permalink)  
Alt 15-09-2006, 15:44
strauberry
 Registrierter Benutzer
Links : Onlinestatus : strauberry ist offline
Registriert seit: Nov 2002
Beiträge: 616
strauberry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Er meinte eher

PHP-Code:
define("DBNAME",$_REQUEST['datenbankname']); 
Das "" davor und danach ist absolut sinnfrei!
Mit Zitat antworten
  #14 (permalink)  
Alt 15-09-2006, 15:50
simauki
 Newbie
Links : Onlinestatus : simauki ist offline
Registriert seit: Mar 2004
Beiträge: 93
simauki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, was total komisch ist, ist das

PHP-Code:
define("DBNAME",$_REQUEST['datenbankname']);
echo 
DBNAME
funktioniert, aber wie gesagt, im nächsten Schritt

PHP-Code:
include 'konstanten.php';
echo 
DBNAME
zeigt er die Konstante nicht an. Was ist denn da los? MfG Simauki
Mit Zitat antworten
  #15 (permalink)  
Alt 15-09-2006, 16:25
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von simauki

funktioniert, aber wie gesagt, im nächsten Schritt
...
zeigt er die Konstante nicht an. Was ist denn da los? MfG Simauki
kann es sein, dass du da etwas durcheinanderbringst?

selbst wenn du in einem script eine konstante definierst, ist sie nur zur laufzeit des scriptes bekannt.
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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:48 Uhr.