PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 statt 42


Rudolfsport
16.01.2005, 12:42:44
hi,
ich habe mehrere Scripte mit verschiedenen werten drinnen. Nun habe ich das problem, dass ich aus zietgründen diese ganzen SCripte gerne in einem vereinen würde.

Ich würde nun die Werte die dem User zur Auswahl stehen (aus dropdown menü) alle speichern. Jetzt weis man nicht welchen wert man nimmt.
Ich denke jetzt dass ich die WErte in einem Arry speicher, aber wie mach ich das mit dem Dropdownmenü (wie bekomme ich heraus, was der User gewählt hat).

Zudem soll an einem bestimmten datum auch noch ein bestimmter wert in eine Rechen OP eingegeben werden (dachte mir per Cronjob)

OK nun leider habe ich keine ahnung, wie ich das Code Technisch lösen kann.
Könnt ihr mir helfen?

xabbuh
16.01.2005, 12:58:09
Original geschrieben von Rudolfsport
Ich denke jetzt dass ich die WErte in einem Arry speicher, aber wie mach ich das mit dem Dropdownmenü (wie bekomme ich heraus, was der User gewählt hat).
Der Benutzer muss das Formular ja abschicken. Anschließend kannst du dann im $_POST-Array das Element weiter verarbeiten, welches den gleichen Namen hat, wie das Dropdownmenü.

Zudem soll an einem bestimmten datum auch noch ein bestimmter wert in eine Rechen OP eingegeben werden (dachte mir per Cronjob)
Da müsstest du jetzt mal konkreter werden, was du genau machen willst.

Rudolfsport
16.01.2005, 14:18:03
Da müsstest du jetzt mal konkreter werden, was du genau machen willst.

Wir haben eine Varibale V ($V). Nun möchte ich, dass $V am 1.1.05 = 1 und am 20.1.05 = 10 ist.
Dann natürlich noch die Zahlen zwischen drinnen und danach.
Dieser wert der $V an dem bestimmten datum solll dann in eine REchen OP genommen werden, die aus der Auswahl des USERS und eben dieser ZAHL besteht.

Nun wie rechne ich da noch den Arry rein in die OP? - Kann ich ganz einfach dann:

($_POST['VARIBALEAUSFORM']) + ($_POST['VARIABLEAUSFORM'])+ $V

machen?

xabbuh
16.01.2005, 16:03:43
Genau, so einfach geht das.

$V könntest du ja ganz einfach bestimmen, in dem du überprüfst, in welchem Zeitraum das aktuelle Datum liegt und $V dementsprechend einen Wert zuweist.

Rudolfsport
16.01.2005, 18:36:20
Und wie soll ich das codetechnishc machen? Hast nen schnipsel für mich

xabbuh
16.01.2005, 19:10:58
Angenommen, du möchtest im Zeitraum von Januar bis August für $V den Wert 2 haben und den restlichen Zeitraum 3, würde ich folgende Abfrage verwenden:

<?php
if(date('n') >= 1 && date('n') <= 8) {
$V = 2;
} else if(date('n') > 8 && date('n') <= 12) {
$V = 3;
}
?>


Ich hoffe, du verstehst, wie ich es machen würde.

Rudolfsport
16.01.2005, 20:57:04
OK funkt nun einwandfrei. Ich habe jetzt in 2 Scripten (Form-,Berechnungsscript) die arbeit von 42 scripten vereint, sit das richtig?

EDIT:

Ich habe nunr noch eine frage, und zwar würde ich gerne wissen was hier falsch ist:

test2.php:

include ("test3.php");
echo "<b>TEXT</b>";
echo "<center>";
echo "<select name='boxenstop'>";
echo "<option value='5' selected> 2";
echo "<option value='4'> 3";
echo "<option value='3'> 4";
echo "<option value='2'> 5";
echo "</select>";
echo "</center>";

Zu test2.php:
Ich habe kein Action am anfang eingebaut, da es ja von der include datei test3.php kommt.

hier die datei test3.php:

<?
if(date('d') >= 16 && date('m') <= 01) {
echo "<FORM ACTION='test.php' METHOD='POST'>";
} else if(date('d') > 17 && date('m') <= 01) {
echo "<FORM ACTION='test4.php' METHOD='POST'>";
}
?>

ok, includet wird. Nur die datei die zum jeweiligen Datum passt wird nicht angezeigt, sondern es wird auf test3.php verlinkt, anstatt z.b. auf test.php
Wo liegt denn oben der Fehler? - Bin mal gespannt, wer den FEhelr zuerst findet, ihr oder ich.

|Coding
16.01.2005, 23:29:34
hi,

1. wie sollen wir wissen, wieviele scripts du mit 2 scripts vereinst.

2. es ist einfach unsinn diese zwei dateien zu splitten (test2.php und test3.php).

3. füge den php code von test3.php in test.2php ein und schließe den php code danach ab (?>).

4. du solltest doch den html code etwas sorgfälltiger schreiben. <option ...> tags schließst man auch wieder: </option>

5. in deinen php code ist "else if" nicht nötig, es reicht ein "else".

6. wer den fehler, wenn überhaupt findet, bedarf glaube ich keiner nachfrage.

Rudolfsport
18.01.2005, 19:39:08
hi,
jetzt bleibt mir noch eine Frage offen:

Wie ist es Codetschnisch möglich eine Sperre in das Script zu machen? - Also es ist so, dass der User die Seite einmal am Tag in einer bestmmten zeitspanne aufrufen kann.
Dann kann er nach diesem Mal dann erst wieder am nächsten Tag auf die Datei zugreifen.
Diese DAtei am anderen Tag ist aber eine andere.

Habt ihr ein Codeschnipsel für mich?

|Coding
18.01.2005, 19:42:47
hmmmmm.... also ich bin wieder fast so weit das thema zu schliesen...

xabbuh
18.01.2005, 20:21:10
Speicher halt irgendwo ab, wann der Benutzer die Datei besucht hat und überprüfe beim Aufruf, ob diese Zeit "heute" ist. Wenn ja, kriegt er die Seite halt nicht angezeigt.

Rudolfsport
20.01.2005, 18:04:59
datei.php:
<?
$heute = time();
$sql= "INSERT INTO DB VALUE $heute";
?>

datei2.php:
<?
$heute2= time();
$sql = "SELECT datum FROM DB";

if($heute2 = $sql)
{
echo "Du hast heute leider schon diese Seite aufgerufen, komme morgen wieder";
}
else
{
//hier kommt die komplette datei ein
}
?>

Ist das nun so richtig

xabbuh
20.01.2005, 18:20:46
Der Inhalt darf also nur einmal am Tag angesehen werden?
Beispiel: User A betritt die Seite, Timestamp wird eingetragen, User B betritt die Seite, bekommt keine Zugriff, da schon jemand die Seite besucht hat.
Neben dem Timestamp musst du schon noch ein weiteres Identifizierungsmerkmal abspeichern, um zu sehen, wer die Seite aufgerufen hat. Am sinnvollsten wäre es hier über eine bestehende Benutzerverwaltung die id des aktuellen Benutzers zu ermitteln und zusammen mit dem Timestamp zu speichern.

Rudolfsport
20.01.2005, 18:35:00
<?
$user = $SID;
$heute = time();
$sql= "INSERT INTO DB VALUE $heute,$user";
?>


geht das so?

xabbuh
20.01.2005, 18:42:47
Gegenfrage: Hast du es ausprobiert?

Rudolfsport
20.01.2005, 18:54:47
Also fehler zeigt es keine an. Aber wird auch die SID übernommen?

xabbuh
21.01.2005, 08:11:55
1. VALUES statt VALUE
2. Hast du mysql_error() benutzt? Dann hätte dir diese Fehler angezeigt werden sollen.
3. Hast du überprüft, ob die Daten in die Datenbank eingetragen werden?
4. Was für einen Wert hat die Variable $SID?

Rudolfsport
21.01.2005, 19:57:46
zu 4:

Das soll die Session ID sein.

zu 3:

ja soweitt geht es nur zeigt es im DATE Feld 0000-00-00 am

zu 2:

Ja.

|Coding
21.01.2005, 20:29:54
Original geschrieben von Rudolfsport
zu 3:

ja soweitt geht es nur zeigt es im DATE Feld 0000-00-00 am

wie wäre es dann mal mit 'ner verbindung zur datenbank und 'nem query?

xabbuh
22.01.2005, 00:52:30
Original geschrieben von Rudolfsport
zu 4:

Das soll die Session ID sein.

Das abspeichern, der Sessionid hilft dir auch nicht weiter, da der Benutzer beim nächsten Besuch der Seite eh wieder eine andere Sessionid bekommt.

Rudolfsport
22.01.2005, 09:45:47
zu xabuhh:

was soll ich dann abspeichern? und vor allem wie soll ich es entstehen lassen.

zu coding:

habe ich bereits eingebaut guckst du hier:

<?
$link = mysql_connect('mamaadsd', 'papa', 'tochert');
if (!$link) {
die('keine Verbindung möglich: ' . mysql_error());
}
$db_selected = mysql_select_db('pochert', $link);
if (!$db_selected) {
die ('Kann Kalender nicht benutzen : ' . mysql_error());
}

$user = $SID;
$heute = date("Y.m.d");
$sql=mysql_query("INSERT INTO kontrolle (heute,user) VALUES ('$heute','$user')")or die(mysql_error());
?>

EDIT:

ICh habe es nun hinbekommen, dass es etwas in der DAte spalte anzeigt.

EDIT2:

Aber das andere fehlt immernoch. Wenn ich jetzt beide DAteien in eine tue, dann kommt beim if, obwohl noch kein eintrag ist die meldung, dass er die seite schon besucht habe.
Hier meld der CODE:

$link = mysql_connect('tutut', 'mama', 'papa');
if (!$link) {
die('keine Verbindung möglich: ' . mysql_error());
}


$db_selected = mysql_select_db('sagichnicht', $link);
if (!$db_selected) {
die ('Kann Kalender nicht benutzen : ' . mysql_error());
}

$user = $SID;
$heute = date("Y.m.d");
$sql=mysql_query("INSERT INTO kontrolle (heute,user) VALUES ('$heute','$user')")or die(mysql_error());
$heute2= date("Y.m.d");
$sql=mysql_query("SELECT heute FROM kontrolle")or die(mysql_error());

if($heute2 = $sql)
{
echo "Dir wurde der Zugriff verweigert";
}
else if($heute2 > $sql)
{
echo "Hello World";
}

Könnt ihr mir sagen wo der Fehler liegt? Und was ich nun statt der Sessionid nehmen muss.

dirter
22.01.2005, 10:56:12
hi,

hmm, hast du mal das php tutorial durchgearbeitet, dass dir in deinen vorigen threads empfohlen wurde?
wohl kaum, sonst würdest du einen vergleich wie diesen hier nicht machen:

if($heute2 = $sql)


du wüsstest, das man werte mit hilfe von == vergleicht, und das ein = nur eine zuweisung ist...

also, muss der vergleich so aussehen:


if($heute2 == $sql)


und jetzt bin ich nur auf die syntax eingegangen, hinzu kommt ein weiterer schwerwiegender fehler.

dein vergleich wird in etwa so aussehen.

if(2005.01.22 == #Resourceid3)

du liest die ergebnistabelle deiner abfrage nicht aus.
richtig lautet der vergleich so:

$sql = mysql_query(.....);
if($heute2 == mysql_result($sql, 0, heute)
....


tu dir und den anderen den gefallen und les www.tut.php-q.net

viele grüße

xabbuh
22.01.2005, 12:37:23
Original geschrieben von Rudolfsport
zu xabuhh:

was soll ich dann abspeichern? und vor allem wie soll ich es entstehen lassen.

Entweder bastelst du dir ein Loginsystem, wie das, was im Tutorial (http://tut.php-q.net/login.html) beschrieben wird und speicherst dann die ID des eingeloggten Benutzers ab oder du verzichtest auf dieses System und speicherst die IP des Users ab, was natürlich eine nicht so schöne Lösung ist.

Rudolfsport
23.01.2005, 09:12:28
danke ich habe nun in mein vorhandenes Loginform einfahc einen befehl gemacht, dass er automatisch dem user eine nummer zuordnen soll und jetzt geht´s.
Vielen dank nochmals.

Könnt ja mal hier vorbei schauen: LINK (http://www.selfphp.de/forum/showthread.php?s=&threadid=9587)

dirter
23.01.2005, 09:17:51
wird mein posting mit absicht übergangen?

Rudolfsport
23.01.2005, 09:43:46
Nee, dir gebührt natürlich auch großen dank. Auf deine Hilfe hin habe ich ja die Vergleichsoperatoren etc. geändert.
Nicht böse sein ;-)