WinFuture-Forum.de: Problem Mit Realisierung Einer For Schleife - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Problem Mit Realisierung Einer For Schleife


#1 Mitglied ist offline   Picard 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. Januar 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Puffbohne

geschrieben 06. März 2007 - 21:53

Guten Abend,

ich habe mal ein frage. Ich habe vor einen Terminplaner zu programmieren und möchte aber nicht alle Tabellen mit der Hand schreiben.

Z.B.

2 Spalten


Zeit Termin
07:00 Test
07:30 Test2

so und das soll vortlaufen gehen z.B. bis 18 Uhr.
Jetzt habe ich mir überlegt wie bekomme ich das hin um nicht alle Spalten und Tabellen zu schreiben.
Das müsste doch mit einer FOR schleife gehen oder?

Könnt ihr mir ein paar Tips geben?


MFG

Picard
MFG

Picard
0

Anzeige



#2 Mitglied ist offline   crw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 48
  • Beigetreten: 22. September 06
  • Reputation: 0

geschrieben 06. März 2007 - 22:06

Hilfe zur Selbsthilfe... http://www.schattenb...net/php/for.php :)
0

#3 Mitglied ist offline   Picard 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. Januar 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Puffbohne

geschrieben 06. März 2007 - 22:20

HI,

erstmal danke für deine Antwort.
Aber wie eine Schleife funktioniert weiß ich.
Nur wollte ich wissen wie man am besten so eine Abfrage in der Schleife baut?

MFG

Picard
MFG

Picard
0

#4 Mitglied ist offline   Iso 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 14. Mai 03
  • Reputation: 0
  • Wohnort:Hörstel
  • Interessen:Computer<br />Parties<br />Mädels...

geschrieben 06. März 2007 - 22:24

Womit arbeitest du denn? SQL?
Also ich mach hier mal n beispiel mit nem zweidimensionalen Array
for($x=0;$x<array[0].length;$x++){
println("<tr><td>" + array[0][$x] + " </td><td> " + array[1][$x] + "</td></tr>");
}

Nur mal n simples Beispiel,
hab aber seit knapp nem Jahr kein PHP mehr gemacht, also keine garantie auf syntaktische Richtigkeit :)
Asus F3JP-Z53 Notebook:
Intel Core 2 Duo T7200 @ 2 Ghz
Mobile Radeon X1700 256 MB
2048 MB DDR2-Ram
160 GB Hitachi HDD
Ubuntu 9.04 / Windows XP SP 3
0

#5 Mitglied ist offline   crw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 48
  • Beigetreten: 22. September 06
  • Reputation: 0

geschrieben 06. März 2007 - 23:58

hi,

$termine['0730'] = 'test';
$termine['0800'] = 'test2';

for ($i=7; $i<19; $i++) {
  echo '<tr><td>'.$i.':00 Uhr</td>';
  echo '<td>'.$termine[(($i<10) ? '0' : '').$i.'00'].'</td>';
  echo '</tr><tr><td>'.$i.':30 Uhr</td>';
  echo '<td>'.$termine[(($i<10) ? '0' : '').$i.'30'].'</td>';
  echo '</tr>';
}


ja, ich weiß dass das klebriger Code ist und schöner gelöst werden könnte. Aber zur Veranschaulichung sollte das reichen :smokin:
0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.296
  • Beigetreten: 08. April 06
  • Reputation: 887
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 07. März 2007 - 08:16

wieso mit For-Schleife? geht doch auch ganz gut ohne:

         <!-- Beginn des PHP's innerhalb der Ausgabe- Tabelle -->
         <?php

//Holen der Informationen aus dem Formular
         $Tag = $_GET['Tag'];
         $Zeit = $_GET['Zeit'];
         $Termin = $_GET['Termin'];

//Datum Umwandeln damit MySQL dies richtig interpretiert
         $DatumJahr = "20".substr($Tag,6);
         $MonatJahr = substr($Tag,3,2);
         $TagJahr =substr($Tag,0,2);
         $Tag= $DatumJahr."-".$MonatJahr."-".$TagJahr;


//Variabeln zur Bestimmung der Datenbank
         //$DSN="termin";
         $Host="localhost";
         $Benutzer="[ZENSIERT]";
         $Kennwort="[ZENSIERT]";
         $Verbindung=mysql_connect($Host, $Benutzer, $Kennwort);
  mysql_select_db("[ZENSIERT]",$Verbindung);
  

//Übergeben der Formular Daten in die MySQL DB

         //Auswahl der Datenbank
         $Database=mysql_select_db($Benutzer,$Verbindung); 
         

         //Auswahl aller Zeilen und Spalten aus "termin"
         $Query="SELECT * FROM termin";
         $Ergebnis=mysql_query($Query,$Verbindung);
         
        //Einfügen der Formulardaten in die Tabelle "termin"
        if($Tag !="" && $Zeit !="" && $Termin !=""){
           $Query="INSERT INTO termin VALUES('$Tag','$Zeit','$Termin')";
           $Insert=mysql_query($Query,$Verbindung);
          }

//Auslesen des Datenbestamdes der MySQL DB

         //Zugriff auf Die DB
         $Query="SELECT * FROM termin";
         $Ergebnis=mysql_query($Query,$Verbindung);

         //Formatierte Ausgabe
        while ($Row=mysql_fetch_row($Ergebnis)){
              echo "<br>".$Row[0]." um ".$Row[1]."<hr size=1 color=red></hr><p>".$Row[2]."<p><hr size=4 color=yellow></hr><br>";
         }
        ?>



Wies dann eingebunden ausschaut siehst du wenn du dir den Quelltext des Terminplaners hier anschaust:

http:://stefanderheld.st.funpic.de (eine Arbeit aus meiner Umschulung)

Dieser Beitrag wurde von Stefan_der_held bearbeitet: 07. März 2007 - 09:53

0

#7 Mitglied ist offline   crw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 48
  • Beigetreten: 22. September 06
  • Reputation: 0

geschrieben 07. März 2007 - 17:34

hi,
@stefan_der_held
ich habe picard so verstanden, dass es ihm hauptsächlich darum geht eine Übersicht von 7 Uhr bis 18 Uhr in 30min. Abständen zu haben. Wie die Daten dann eingelesen werden ist ja egal <_<
Aber noch eine kleine Bemerkung zu deinem Script: Ich hoffe dir ist klar, dass dein Script sehr unsicher ist, da es MySQL-Injections ermöglicht. Du solltest Variablen die du einliest immer escapen und überprüfen. (Link)
0

#8 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.296
  • Beigetreten: 08. April 06
  • Reputation: 887
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 07. März 2007 - 18:56

Beitrag anzeigenZitat (crw: 07.03.2007, 17:34)

hi,
@stefan_der_held
ich habe picard so verstanden, dass es ihm hauptsächlich darum geht eine Übersicht von 7 Uhr bis 18 Uhr in 30min. Abständen zu haben. Wie die Daten dann eingelesen werden ist ja egal :D
Aber noch eine kleine Bemerkung zu deinem Script: Ich hoffe dir ist klar, dass dein Script sehr unsicher ist, da es MySQL-Injections ermöglicht. Du solltest Variablen die du einliest immer escapen und überprüfen. (Link)


Das ist schon war mit der Sicherheit... es ging in dieser Umschulungsphase auch lediglich um die grundkonstrukte: Mit PHP eine MySQL DB ansteuern
0

#9 Mitglied ist offline   Picard 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. Januar 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Puffbohne

geschrieben 07. März 2007 - 21:23

Hallo,

danke Stefan, aber die obere Variante hat genau das getroffen was ich wollte.
Danke aber trotzdem.

Sagtmal ich habe noch eine weitere frage.
Habe jetzt ein paar sachen erweitert und da ist mir aufgefallen das dies hier so nicht geht:

 if($_GET["zeit"] == "v"){ for ($i=$start_time; $i<$v_time_end; $i++) }
 if($_GET["zeit"] == "m"){ for ($i=$v_time_end; $i<$m_time_end; $i++) }
 if($_GET["zeit"] == "n"){ for ($i=$m_time_end; $i<$n_time_end; $i++) }


Es erscheint immer folgende FM:

Parse error: parse error, unexpected '}' in C:\....

Liegt es daran das die FOR Schleife ja auch eine klammer braucht. Aber der ihre kommt ja noch unter dieser Abfrage deswegen dachte ich, ich kann dies so machen?


MFG Picard
MFG

Picard
0

#10 Mitglied ist offline   crw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 48
  • Beigetreten: 22. September 06
  • Reputation: 0

geschrieben 07. März 2007 - 23:51

hi,
du kannst den Schleifeninhalt nicht vom Schleifenkopf trennen (ich hoffe das sind die richtigen Begriffe :) ). In deinem Fall wäre es also geschickter wenn du so arbeitest:

if($_GET['zeit'] == 'v') {
  $start = $start_time;
  $end = $v_time_end;
}
elseif($_GET['zeit'] == 'm') {
  $start = $v_time_end; 
  $end = $m_time_end;
} else {
  $start = $m_time_end;
  $end = $n_time_end;
}

for ($i=$start; $i<$end; $i++) {
....
}


Da du eh $start und $end benötigst, bietet es sich an mit "else" zu arbeiten.
0

#11 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 09. März 2007 - 17:08

Beitrag anzeigenZitat (Picard: 07.03.2007, 21:23)

 if($_GET["zeit"] == "v"){ for ($i=$start_time; $i<$v_time_end; $i++) }
 if($_GET["zeit"] == "m"){ for ($i=$v_time_end; $i<$m_time_end; $i++) }
 if($_GET["zeit"] == "n"){ for ($i=$m_time_end; $i<$n_time_end; $i++) }


Generell würde ich hier der Übersichtlichkeit und der Code-Klarheit in die Tasche arbeiten:
switch($_GET['zeit']) {
	case 'v':
		$i = $start_time;
		$end = $v_time_end;
		break;
	case 'm':
		$i = $v_time_end;
		$end = $m_time_end;
		break;
	case 'n':
		$i = $m_time_end;
		$end = $n_time_end;
		break;
	default:
		// ... fehler abfangen ...
}

for (; $i < $end; $i++) {
	// ... etwas sinnvolles machen ...
}

0

#12 Mitglied ist offline   Picard 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. Januar 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Puffbohne

geschrieben 13. März 2007 - 07:09

Sorry das ich nicht gleich geantwortet habe.

Also die Switch schleife ist eine Gute idee.

Danke
MFG

Picard
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0