php hilfe beim code.. :)

03/17/2012 22:41 xTrojaner#1
Hey leute habe mal versucht eine Tabelle zu erstellen. Diese soll später auch gespeichert werden aber dies tut jetzt nichts zu sache meine frage ist eigentlich nur kann man das irgendwie eleganter lösen ?!
while schleife oder so ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">

table {
border-collapse: separate;
border-spacing: 0 0;
}
td {
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 1px;
border-top-color: #C33;
border-right-color: #C33;
border-bottom-color: #C33;
border-left-color: #C33;
border-bottom-style: solid;
border-right-style: solid;
}

th {
border-top-width: 1px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 2px;
border-top-color: #C33;
border-right-color: #C33;
border-bottom-color: #C33;
border-left-color: #C33;
border-bottom-style: solid;
border-right-style: solid;
}

.option {
width: 100px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #FFF;
border-right-color: #FFF;
border-bottom-color: #FFF;
border-left-color: #FFF;
border-bottom-style: solid;
border-right-style: solid;

}
</style>
</head>

<body>

<table class="option">
<tr class="tr">
<th scope="col" width="100">Stunde</th>
<th scope="col" width="100">Montag</th>
<th scope="col" width="100">Dienstag</th>
<th scope="col" width="100">Mittwoch</th>
<th scope="col" width="100">Donnerstag</th>
<th scope="col" width="100">Freitag</th>
<th scope="col"width="100" >Samstag</th>
</tr>
<tr>
<th scope="row">1</th>

<form action="stundenplan.php" method="post">
<td>
<select name="1Mo" size=1 class="option" >
<?php
include("stunden.php");
?>

</td>
<td>



<select name="1Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>

<td>
<select name="1Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>

<td>
<select name="1Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>

<td>
<select name="1Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="1Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>

<tr>
<th scope="row">2</th>
<td>
<select name="2Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="2Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="2Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="2Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="2Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="2Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>
<tr>
<th scope="row">3</th>
<td>
<select name="3Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="3Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="3Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="3Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="3Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="3Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>
<tr>
<th scope="row">4</th>
<td>
<select name="4Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="4Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="4Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="4Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="4Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="4Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>
<tr>
<th scope="row">5</th>
<td>
<select name="5Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="5Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="5Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="5Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="5Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="5Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>
<tr>
<th scope="row">6</th>
<td>
<select name="6Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td><td>
<select name="6Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td><td>
<select name="6Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="6Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="6Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="6Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>
<tr>
<th scope="row">7</th>
<td>
<select name="7Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="7Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="7Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="7Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="7Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="7Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td></tr>
<tr>
<th scope="row">8</th>
<td>
<select name="8Mo" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="8Di" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="8Mi" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="8Do" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="8Fr" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
<td>
<select name="8Sa" size=1 class="option">
<?php
include("stunden.php");
?>
</td>
</tr>

</table>
<input type="SUBMIT" value="Speichern" />
</form>
</body>
</html>

_________________________
include datei ist :

<option>Freistunde</option>
<option>Mathematik</option>
<option>Deutsch</option>
<option >Englisch</option>
<option >Geschichte</option>
<option >Erdkunde</option>
<option >Kunst</option>
<option >Physik</option>
<option >Chemie</option>
<option >Latein</option>
<option>Religion</option>
<option >Biologie</option>
<option >AW</option>
<option >AT</option>
<option >Sport</option>
<option ></option>
03/18/2012 00:36 PseudoPsycho#2
Was den HTML-Teil angeht, so entferne erstmal alle size- und width-Attribute und packe die in's CSS...
Wenn du dir die Schreibarbeit erleichtern willst, wäre eine Schleife (for oder while) mit Sicherheit auch angebracht.
Für den Fall, dass es sich bei der include-Datei um eine statische Seite handelt, solltest du am Anfang
PHP Code:
$include=file_get_contents('include.php'); 
und dann bei jedem Aufruf
PHP Code:
echo $include
verwenden; anstelle der include()-Anweisung. Das spart enorme Ressourcen.
03/18/2012 09:43 xTrojaner#3
ja.. nur jetzt ist eben mein problem, wie stelle ich das an mit einer while bzw for schleife ?
03/18/2012 17:44 PseudoPsycho#4
PHP Code:
$tage=Array();
$tage[]='Mo';
$tage[]='Di';
$tage[]='Mi';
$tage[]='Do';
$tage[]='Fr';
$tage[]='Sa';
$anzahl=count($tage);
for(
$zaehler1=0$zaehler1<9$zaehler1++){
for(
$zaehler2=0$zaehler2<$anzahl$zaehler++){
echo 
',<td><select name="'$zaehler1$tage[$zaehler2] ,'" size=1 class="option" ></td>';
include(
'stunden.php'); } } 
03/18/2012 20:42 xTrojaner#5
danke :)) haste mir echt geholfen du hast jetzt genau das gemacht wofür ich ca. 300 Zeilen gebraucht habe :))
03/20/2012 21:29 xTrojaner#6
hey, irgendwas stimmt an deinem code noch nicht. also ein fehler ist mir direkt schon mal aufgefallen
Quote:
for($zaehler2=0; $zaehler2<$anzahl; $zaehler++)
bei $zeahler++ fehlt die 2 also $zeahler2++

edit:
so jetzt klappts habs ein bsl geändert


Quote:
<?php

$tage=Array();
$tage[]='Mo';
$tage[]='Di';
$tage[]='Mi';
$tage[]='Do';
$tage[]='Fr';
$tage[]='Sa';
$anzahl=count($tage);
for($zaehler1=0; $zaehler1<7; $zaehler1++){
echo "<tr>";
for($zaehler2=0; $zaehler2<=$anzahl; $zaehler2++){

echo "<td>";
echo "<select name='$zaehler1,$zaehler2' size=1 class=\"option\" >";
include('stunden.php');
echo "</td>";
}
echo "</tr>"; }



?>





mfg Christian.
03/20/2012 22:34 Whoknowsit#7
Wir wär's damit?

PHP Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Untitled Document</title>
<style type="text/css">
table {
border-collapse: separate;
border-spacing: 0 0;
}
td {
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 1px;
border-top-color: #C33;
border-right-color: #C33;
border-bottom-color: #C33;
border-left-color: #C33;
border-bottom-style: solid;
border-right-style: solid;
}
th {
border-top-width: 1px;
border-right-width: 2px;
border-bottom-width: 2px;
border-left-width: 2px;
border-top-color: #C33;
border-right-color: #C33;
border-bottom-color: #C33;
border-left-color: #C33;
border-bottom-style: solid;
border-right-style: solid;
}
.option {
width: 100px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #FFF;
border-right-color: #FFF;
border-bottom-color: #FFF;
border-left-color: #FFF;
border-bottom-style: solid;
border-right-style: solid;
}
</style>
</head>
<body>
<form action="stundenplan.php" method="post">
    <table class="option">
    <tr class="tr">
        <th scope="col" width="100">
            Stunde
        </th>
        <th scope="col" width="100">
            Montag
        </th>
        <th scope="col" width="100">
            Dienstag
        </th>
        <th scope="col" width="100">
            Mittwoch
        </th>
        <th scope="col" width="100">
            Donnerstag
        </th>
        <th scope="col" width="100">
            Freitag
        </th>
        <th scope="col" width="100">
            Samstag
        </th>
    </tr>
    <?php
    $d 
= Array('Mo''Di''Mi''Do''Fr''Sa');
    
$h 8;
    
$i 0;

    do {
        
$n 0;
        echo 
'<tr>';
        echo 
'<th scope="row">'.($i+1).'</th>';
        do {
            echo 
'<td>';
            echo 
'<select name="'.$i.$d[$n].'" size="1" class="option">';
            include(
'stunden.php');
            echo 
'</select>';
            echo 
'</td>';

            
$n++;
        } while(
$n count($d));
        echo 
'</tr>';
        
$i++;
    } while(
$i <= $h);
    
?>
    </table>
    <input type="submit" value="Speichern"/>
    _________________________ include datei ist :
    <select name="include">
        <option>Freistunde</option>
        <option>Mathematik</option>
        <option>Deutsch</option>
        <option>Englisch</option>
        <option>Geschichte</option>
        <option>Erdkunde</option>
        <option>Kunst</option>
        <option>Physik</option>
        <option>Chemie</option>
        <option>Latein</option>
        <option>Religion</option>
        <option>Biologie</option>
        <option>AW</option>
        <option>AT</option>
        <option>Sport</option>
    </select>
</form>
</body>
</html>
03/21/2012 14:43 PseudoPsycho#8
Quote:
Originally Posted by xTrojaner View Post
hey, irgendwas stimmt an deinem code noch nicht. also ein fehler ist mir direkt schon mal aufgefallen
Ja, kommt davon, wenn man das auf die Schnelle mal hinschreibt...
Von Passagen, wie
PHP Code:
echo "<td>";
echo 
"<select name='$zaehler1,$zaehler2' size=1 class=\"option\" >"
würde ich dir jedoch stark abraten; schreibe lieber:
PHP Code:
echo '<td>';
echo 
'<select name="',$zaehler1,$zaehler2,'" size=1 class="option" >'
Sprich: Einfache Anführungszeichen, um Strings als solche zu kennzeichnen und doppelte im HTML. Sowas wird noch enorm wichtig werden, gewöhne dich am Besten schon direkt dadran...
03/21/2012 15:20 xTrojaner#9
Ja das ist supper °!!!!! THANKS :)))

hätte da nur eine kleine verständnis Frage:
wird die 2. while schleife
Quote:
do {
echo '<td>';
echo '<select name="'.$i.$d[$n].'" size="1" class="option">';
include('stunden.php');
echo '</select>';
echo '</td>';

$n++;
} while($n < count($d));
so lange ausgefüht bis diese abbricht und erst dann führt die 1. while schleife die restlichen befehle aus, sprich
echo '</tr>';
$i++;

also das tr nun geschlossen werden kann (denke deswegen auch die do while schleife oder ?!) ?

hab ich das so richtig verstanden, habe mich noch nie so richtig mit do while schleife befasst, ich wusste bis her nur das es sie gibt. ?!?

ja okay das werde ich mir dann mal direkt angewöhnen nur in euren beiden codes verwendet ihr diese Punkte "." bzw Kommas "," (aber denke da hat man freiheiten in php, sprich es ist egal ?) nach den einfachen und doppelten Anführungszeichen
wozu sind die da ?

Von PseudoPsycho

Quote:

echo '<select name="',$zaehler1,$zaehler2,'" size=1 class="option" >';

Von Whoknowsit

Quote:
echo '<select name="'.$i.$d[$n].'" size="1" class="option">';
03/21/2012 18:44 Whoknowsit#10
Meistens handelt es sich um kleine Geschwindigkeitsoptimierungen, in wenigen Fällen jedoch löst eine andere Methode auch etwas anderes aus. So beispielsweise verhalten sich echo() und print() nicht gleich, obwohl sie prinzipiell das Selbe tun.

Bzgl. Gänsefüsschen und Hochkommas das Selbe, wobei es hier einen wichtigen Unterschied gibt: Zeilenumbrüche, welche man u.A. mit \n erzeugen kann, lassen sich nur dann erzeugen, wenn sie innerhalb von Gänsefüsschen stehen. Ebenso kann man innerhalb von Gänsefüsschen auch Variablen schreiben, z.B.:

PHP Code:
<?php
$var 
"World";
echo 
"Hello $var!");
?>
Ergibt: Hello World!

oder

PHP Code:
<?php
$var 
"World";
echo 
"Hello {$var}!");
?>
Ergibt: Hello World!

Prinzipiell sollte man aber, wie es bereits erwähnt wurde, weitesgehend auf Gänsefüsschen verzichten, da die Strings schneller verarbeitet werden. Grund dafür ist, dass Variablen nicht interpoliert werden müssen, z.B.:

PHP Code:
<?php
$var 
'World';
echo 
'Hello $var!');
?>
Ergibt: Hello $var!

Um Variablen also entsprechend zu interpolieren, muss man den String vorzeitig kappen und alles entsprechend umformen:

PHP Code:
<?php
$var 
'World';
echo 
'Hello '.$var.'!');
?>
Ergibt: Hello World!

Die Verwendung von Punkten zur Interpolation ist reine Gewöhnungssache. Man sagt eigentlich, dass man bei der Verwendung von echo an Stelle des Punktes ein Komma verwenden soll, aber es macht eigentlich kaum einen Unterschied. Das macht lediglich den Code lesbarer, da man dann für gewöhnlich die in HTML verwendeten Gänsefüsschen nicht immer escapen muss. Da aber seit HTML 4 auch Hochkommas verwendet werden können, spielt es keine Rolle :p

Alles Gewöhnungssache, wie ich finde. Zumal es meiner Meinung nach keine signifikanten Unterschiede gibt, in Bezug auf Performance.
03/21/2012 21:15 xTrojaner#11
achso danke :)
ich geh mal davon aus das du die klammer ")" da nur außversehen hingesetzt hast ?
(den sie erzeugt auch einen fehler )
wie zum beispiel hier:
Quote:
<?php
$var = "World";
echo "Hello $var!");
?>
dann versuch ich mir das mal anzugewöhnen :)
um wie viel schnellere optimierungen geht es den wenn die rede von kleiner Geschwindigkeitsoptimierungen ist ?

Quote:
<?php
$var = "World";
echo "Hello {$var}!");
?>
was bewirken die geschweiften klammern "{" ?
also nach der ausgabe zufolge garnichts ?!
03/21/2012 21:58 Whoknowsit#12
Die Klammern gehören in der Tat nicht dort rein ;)

Bzgl. der Geschwindigkeitsoptimierungen... FRÜHER hätte man sie vielleicht bemerkt ;) Wir bewegen uns hier im Millisekundenbereich.

Das ist wie mit IF-Abfragen:

PHP Code:
if($b){ $a $c; }
else{ 
$a $d; } 
diese Abfrage ist minimal langsamer (rund 7ms) als diese:

PHP Code:
$a = ($b) ? $c $d
Oder das hier...:

PHP Code:
$zahl intval($str); 
Diese Abfrage ist rund 25ms langsamer als diese:

PHP Code:
$zahl = (int)$str
Usw... Die Liste lässt sich noch um einige Punkte erweitern ;) Sicherlich macht es Sinn, sich direkt den "schnellsten" Weg anzueignen. Es ist aber auch nicht falsch, einen etwas langsameren zu wählen, wenn Einem das besser liegt.

Aber noch einmal zurück zu den Gänsefüsschen und den Hochkommas... Ich habe mich diesbezüglich evtl. etwas unverständlich ausgedrückt :) Am Einfachsten lässt sich der Geschwindigkeitsunterschied dadurch erklären, dass PHP bei der Verwendung von Gänsefüsschen den gesamten String erst nach Variablen durchsucht, wogegen PHP dies nicht tut, wenn man Hochkommas nutzt. Hat man also einen String, der rein aus Text besteht, schreibt man ihn am Besten immer in Hochkommas. So lässt sich pro String eine Performancesteigerung von 12ms feststellen. Aber wie ich bereits sagte... Merken tut man den Unterschied eigentlich sowieso nicht. Vorallem nicht in Zeiten von DSL 100 Mbit/s+ :D
03/22/2012 21:53 xTrojaner#13
ja da hást du recht den unterschied wird man wahrscheinlich eh nicht feststellen :b
aber es ist trotzdem schön zu wissen das man etwas schneller bzw. langsamer durchführen kann. :))
03/22/2012 22:44 .Marcel'#14
Ein weiteres Interessantes Performence Thema ist die Datenbank, sollte man sich auch mal anschauen.
03/23/2012 06:23 Whoknowsit#15
Das ist wieder etwas ganz anderes :P