Probleme mit php und phpmyadmin: Sessions, Time, Drucken, DropDown ...

#0
06.04.2006, 13:16
...neu hier

Beiträge: 4
#1 Grüße ;)
Nach langer zeit melde ich mich auch mal wieder. Diesmal jedoch nicht mit einem hijack problem... mein rechner ist mittlerweile mit dem besten schutz gesichert den es geben kann: er wird nicht mehr genutzt...
ok, kein smalltalk, lieber problem beschreibung ;)

Ich sitze seit einiger Zeit an einem php/mySQL Projekt für meine Arbeit und hier sind einige Probleme aufgetreten, für die ich einfach keine lösung finde, weswegen ich mich an euch wende, in der Hoffnung hier Antworten auf meine Fragen zu finden... und nach 4 wochen haben sich einige Fragen angehäuft -.-

Arbeitsumgebung:

Betriebssystem:
Windows 2000

Tool:
xampp 1.5.0 mit:
- phpMyAdmin 2.6.4 pl3
- MySQL 5.0.15
- Apache 2.0.55
- PHP 4.4.1 pl1

grobzusammenfassung der aufgabenstellung:
ein "programm" mit deren hilfe man, über den Browser, Datensätze bearbeiten, löschen oder neue hinzufügen kann. Hinzukommend einige kleine extras wie das ausdrucken einer kompletten Liste und dropdownmenüs etc
die seite soll passwortgeschützt sein

die grundfunktionen, update, insert und delete, laufen einwandfrei, damit sind wir zufrieden... leider möchte der kunde jetzt einige kleine extras, bei denen ich mir nicht sicher bin, wie ich die realisieren soll.

Es sei hier noch angemerkt, dass ich ein absoluter php-anfänger bin und mich mit der materie noch nicht wirklich gut auskenne.


Probleme:


1) Überprüfung der Felder auf numerisch oder alphabetisch korrekten Inhalt
Einige der Felder sollen überprüft werden, ob ihr inhalt sonderzeichen enthält, oder nicht. Sind Sonderzeichen vorhanden, soll eine Fehlermeldung ausgegeben werden, ansonsten nicht.

beispiel für eines der felder:
in den 3 lettercode dürfen nur buchstaben und zahlen eingegeben werden. keine sonderzeichen
das result holt in diesem fall den inhalt des feldes aus der 7 zeile der tabelle

Zitat

<td class='table2' width='550'>
<input type='text' maxlength='3' size='3' name='3lc' class='border' value='<? echo $result[0][6]; ?>'>
</td>
2) Zeiten nur 4 stellig ausgeben
Es liegt eine tabelle mit 1749 datensätzen vor, in welchen die zeit schon eingetragen ist. in folgender Form
00:12:25
??:HH:MM
nun sollen aber nur 4 zeichen ausgegeben werden. sprich die 12:25 uhr...
wie sage ich php myAdmin, dass die beiden 0en vor der uhrzeit nicht mit ausgegeben werden?

3) Session erst nach aktualisieren der seite
Ich habe einen login gebastelt, der auch eigentlich komplett funktioniert... bis auf ein kleines Manko:
Um sich einloggen zu können, muss der Benutzer folgendes machen:
- seite aufrufen
- aktualisieren
- einloggen
- fehler: session existiert nicht
- zurück im browser
- aktualisieren
- einloggen
- fertig

sprich: der benutzer kann sich erst einloggen, nachdem das erste mal fehlschlägt und danach aktualisiert wird... dan steht die session und der benutzer kann sich einloggen... wie kann ich das ändern? Ich kann ja schlecht von den nutzern verlangen dass immer SO zu machen ^^

Hier die entsprechenden scripte:
in der index.php wird die anmeldung.php includet.
die anmeldung_check.php ist das hintergrundprogramm von der anmeldung.php und wird nach betätigen des senden-buttons ausgeführt.

anfang der index.php

Zitat

<?
@session_start();
$_SESSION["angemeldet"]=1;
//dbzugriff includen und somit datenbankzugriff garantieren
include ("dbzugriff.php");
?>
anmelde formular in der anmeldung.php

Zitat

<form action='anmeldung_check.php' method='post'>
<table border='1' class='table2'>
<tr>
<td class='table2'>Benutzer</td>
<td class='table2'>
<input type='text' name='nick' size='20' maxlength='10' class='border'>
</td>
</tr>
<tr>
<td class='table2'>Passwort</td>
<td class='table2'>
<input type='pw' name='pw' size='20' maxlength='20' class='border'>
</td>
</tr>
<tr>
<td colspan='2' align='center' class='table2'>
<br><input type='submit' name='egal' value='LogIn' class='button'>
</td>
</tr>
</table>
</form>
anmeldung_check.php

Zitat

<?
@session_start();
//anfrage: hat der Benutzer das Recht sich einzuloggen?
if ($_SESSION["angemeldet"])
{
//dbzugriff includen und somit datenbankzugriff garantieren
include ("dbzugriff.php");

$query="Select * from benutzer where nick='".$_POST["nick"]."' and pw='".$_POST["pw"]."'";

$result=mysql_query($query, $con);

$row=mysql_fetch_array($result);

//anfrage: existiert der Benutzer, wenn ja setze die session auf 2
if($row['bid'])
{
$_SESSION['angemeldet']=2;
$_SESSION['nick'] = $row['nick'];
$_SESSION['pw'] = $row['pw'];
$_SESSION['bid'] = $row['bid'];
}
//anfrage: existiert der Benutzer, wenn nein gebe fehlermeldung aus
else
{
echo "Benutzer oder Passwort falsch<br>";
echo "<a href='index.php'>zur&uuml;ck</a>";
}
}

//anfrage: ist die session aktiv? Wenn nein gebe fehlermeldung aus
if ($_SESSION["angemeldet"]==1)
{
echo "Session existiert nicht. Wahrscheinlich automatisch beendet. Bitte melden sie sich erneut an";
}

//anfrage: wurde session auf 2 gesetzt? Wenn ja starte Überprüfung des Benutzerstatus
if ($_SESSION["angemeldet"]==2)
{
//überprüfen ob Admin oder benutzer
//wenn status == 0 gehe zur Admin.php
if($row['status'] == 0)
{
Header("Location: admin.php");
}

//wenn status == 1 gehe zur flugplan.php
elseif($row['status'] == 1)
{
Header("Location: flugplan.php");
}

//falls statusangabe falsch
else
{
Header("Location: index.php");
}
}
?>
ich hoffe das hilft euch ;)

4) der 3 letter code soll änderbar, aber auch ein dropdown menü sein
Ja.. hm.. keine ahnung wie ich das anstellen soll.
Wenn man in dem Feld für den 3 lettercode zum beispiel den buchstaben "K" angibt, dann soll sich das feld in ein dropdown menü "verwandeln" und zu dem ersten datensatz mit dem buchstaben "K" springen. Den kann man dann auswählen, oder weiter runter "scrollen" bei mehreren Datensätzen mit "K" um mit dem gewünschten datensatz dann weiter zu arbeiten. Gibt es noch kein "K", dann soll man den neuen 3 lettercode in dem Feld angeben können um ihn zu speichern...

5) Wie funktioniert ein Join?
Ich nehme an, dass ich dieses problem mit einem join lösen kann...
wir haben zwei tabellen. "tabelle 1" und "tabelle 2"
in "tabelle 1" gibt es das feld "name" mit dem inhalt "inhalt"
in "tabelle 1" gibt es das feld "id" mit dem inhalt "123"
in "tabelle 2" gibt es das feld "id" mit dem inhalt "123"

in einem formular das "tabelle 2" anspricht, soll der "inhalt" aus dem feld "name" aus der "tabelle 1" ausgegeben werden.

in "tabelle 1" ist das feld "id" der primary key
in "tabelle 2" ist das feld "id" der foreign key

das feld "name" hat die id "123" aus "tabelle 1"

Wenn wir den inhalt "inhalt" im formular der "tabelle 2" aus dem feld "name" (welches wiederum in "tabelle 1" definiert ist) in "inhalt 2" ändern und speichern, dann soll die "id" mit dem inhalt "123" in der "tabelle 2" gespeichert werden

oder so ähnlich ... ich bin total verwirrt... versteht jemand was ich meine? @.@

6) das große gesamtproblem: die Saison -.-
Also... am Anfang bevor man irgendwas machen kann, soll man auswählen können, welche Saison man bearbeiten möchte... und wenn diese noch nicht vorhanden ist, dann soll man eine neue anlegen können. Außerdem soll man es noch ausdrucken können

6a) Saison Auswahl
ich habe ein Feld in der datenbank namens Saison. Da sind die saisonen (saisons?) komplett aufgelistet, sei es nun sommer oder winter.
Sprich die datensätze lauten: W05, S05, W06, S06 ... etc
Die Kunden möchten aber 2 dropdown menüs
eines für sommer und eines für winter...

Gedacht war also ein select der die datensätze überprüft und alle W in die linke box schreibt und alle S in die rechte box...
einfach wäre es gewesen, wenn man hätte schreiben können
where $saison = W05 (oder so ähnlich)
aber das geht ja nun n icht... es werden ja noch weitere saisons eingetragen, außer die aus dem jahr 2005
...
wahrscheinlich ist das eigentlich relativ einfach.. ich weiß nur nicht wie ^.^

6b) Anlegen einer neuen Saison
Eigentlich kein Problem, einfach ein insert in die tabelle "def", wo der datensatz "saison" gespeichert ist...
aber wenn man eine neue Saison angelegt hat, soll man auch gleich einen komplett neuen datensatz für die tabelle "def" anlegen können, sprich mit allen anderen inhalten...

6c) Ausdrucken der gewählten Saison
Wenn eine Saison ausgewählt wurde, soll eine Auflistung mit allen tabelleninhalten dieser Saison auftauchen, die man dann ausdrucken kann ...

Wie zum Geier mache ich eine solche Auflistung und wie sage ich, dass die ausgedruckt werden soll?

---------------------------------------------------------------------------
Sooo eine Masse an Problemen... die unser Kunde am liebsten gestern schon erledigt sehen will.
Wie gesagt ich bin ein absoluter Anfänger in Sachen Php. Ich bin hier nur für ein 2 monats projekt, in denen ich die Grundlagen des php lernen soll... und angeblich ist das ja alles ganz einfach ...
Naja wenn man bis spät in die nacht an diesen Problemen sitzt, sehe ich das nicht als einfach an ;)

Würde mich freuen, wenn ihr mir helfen oder mir denkanstöße geben könntet
;)

Mit freundlichem Gruß
CyberAngel
Seitenanfang Seitenende
06.04.2006, 14:50
Member
Avatar Laserpointa

Beiträge: 2176
#2 1.) wenn irgendwelche Zeichen ausser Buchstaben und Zahlen vorkommen -> Fehlermeldung:

PHP Code


<?php
if (!preg_match("/[a-z0-9]+/i" $result[0][6]))
{
     echo 
"ungültige Zeichen";
}
?>

2.) Text kürzen geht mit dem Befehl substr

PHP Code


<?php
substr
($Text24);
?>

4.) dritte Zeichen auswählen und prüfen ob k - siehe auch stristr

PHP Code


<?php
if (stristr(substr($Text23), 'k'))
dropdown...;}
?>

5.) siehe http://dev.mysql.com/doc/refman/5.0/en/join.html - auch Beispiele

ich hoffe die anderen haben noch Tipps, weiss nicht ob ich noch Zeit für die anderen Probs finde...

Greetz Lp
Dieser Beitrag wurde am 06.04.2006 um 14:56 Uhr von Laserpointa editiert.
Seitenanfang Seitenende
06.04.2006, 14:59
...neu hier

Themenstarter

Beiträge: 4
#3 danke erstmal für die antwort ^^
gleich mal einbauen

er scheint es auch zu überprüfen... nur muss ich noch herausfinden an welche stelle ich es einbaue, damit er zur richtigen zeit überprüft
;)

Mit freundlichem Gruß
CyberAngel
Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren: