#1 3. April 2008 URL -Handling Also folgender Sachverhalt, hab nen kleines "Plugin" gebaut , das nur bewirken soll das ein Kalender angezeigt wird, und man die Tage markieren kann (rot). Das ganze wird lediglich über include eingebunden ( is nur eine php datei ); Um Monate zu finden etc beziehe ich den kram über eine get variable... etc Nun habe ich folgendes Problem beim Generieren der Links... PHP: echo ' <td class="red" onClick="location.href=\'' . $orgurl . '&m=' . $Monat . '&y=' . $Jahr . '&d=' . $i . '\'">' . "\n" ; echo ' <td class="days" onClick="location.href=\'' . $orgurl . '&m=' . $Monat . '&y=' . $Jahr . '&d=' . $i . '\'">' . "\n" ; echo ' <td class="today" onClick="location.href=\'' . $orgurl . '&m=' . $Monat . '&y=' . $Jahr . '&d=' . $i . '\'">' . "\n" ; So werden die Links erzeugt. Sprich wenn das jemand in einer Seite einbaut die die Sektion auch aus der URL bezieht, wird die bisherige URL gelöscht soweit, und ich komme auf einer ganz anderen seite raus anstatt bei : ?section=start&m=2&y=1999&d=4. Dann habe ich gedacht ich nehme org. URL und hänge meine GETs dran, geht auch nicht, da nach 2 mal benutzen des Kalenders logischer Weise das hier rauskommt: PHP: index . php ? section = bw & m = 04 & y = 2008 & d = 5 & m = 4 & y = 2008 & d = 16 Wie könnte man das am klügsten lösen? THX im voraus. S + Multi-Zitat Zitieren
#2 3. April 2008 AW: URL -Handling probiers doch mal mit <a href=\"$_SERVER[PHP_SELF]? und dann da das zeug hinten dran vllt hilfts ja was greetz zb: <a href=\"$_SERVER[PHP_SELF]?start=$i\" wenn du bei index.php bist generiert index.php?start=zahl die halt i hat kann man so oft machen wie man will + Multi-Zitat Zitieren
#3 3. April 2008 AW: URL -Handling jo, sende doch deine daten mit POST, dann kannst du auf ein array übergeben machst dazu einfach 3 hidden inputs <input type="hidden" name="day" value="3"> <input type="hidden" name="month" value="4"> <input type="hidden" name="year" value="2008"> <input type="hidden" name="day" value="4"> <input type="hidden" name="month" value="4"> <input type="hidden" name="year" value="2008"> <input type="hidden" name="day" value="5"> <input type="hidden" name="month" value="4"> <input type="hidden" name="year" value="2008"> gruß + Multi-Zitat Zitieren
#4 3. April 2008 AW: URL -Handling @Smokers, wer hält dich davon ab zu kontrollieren ob die GET - Parameter schon gesetzt sind? + Multi-Zitat Zitieren
#5 3. April 2008 AW: URL -Handling Meine unwissnheit über gute Regexp mit denen ich zurnot die ersetzen kann, bzw entferne. ich arbeite höchst ungern damit und stelle mich immer wieder dumm an mit dem erstellen solcher regexp und mit dem finden der richtigen funktion. str_replace oder ereg_replace, oder wie auch immer alle heißen und wo der genaue unterschied ist. Außerdem habe ich gehofft das es eine weitaus einfacherere , bzw weitaus zutreffendere Möglichkeit gibt. \\ Zu den anderen: Das Problem ist, das ich nicht weis was womöglich für andere GET variablen gesetzt sind. es könnte auch area=start sein, oder page=1231323...... und wenn ich die $_SERVER['self'] Lösung nehme , gehen mit die alten GETs flöten, wenn ich allerdings die alten GETs wieder ranhänge, dann werden beim 2ten mal benutzen des Kalenders MEINE GETs auch 2x dran gehängt, weil ja die alten gets genommen werden, und meine dran gehängt werden. + Multi-Zitat Zitieren
#6 3. April 2008 AW: URL -Handling hä? eentweder ich versteh nich was du machen willst oder es is einfach falsch^^ was willst du mit regexp machen? Du musst doch nur prüfen ob die Werte gesetzt sind. also if(isset($blblbla)){ echo "was auch immer"; } da brauchst du keine regexp!! vllt. hab ichs auch falsch verstanden^^ + Multi-Zitat Zitieren
#7 3. April 2008 AW: URL -Handling richtig, so sehe ich das auch das wäre die einfachste lösung .... denn man muss dafür nciht unbedingt keine regexe kennen/können und zum beispiel um die alten get parameter nicht zu verlieren, hast du das get array doch im script immer verfügbar .. also die kalendar/url funktionalität gehört mindestens in eine funktion als kannste doch schonmal dirty anfangen .... + Multi-Zitat Zitieren
#8 3. April 2008 AW: URL -Handling Also nochmal , es ist nicht so einfach wies sich anhört, oder ich bin wiedermal zu doof. mein script wird in jede X-beliebige Seite eingebaut,sprich andere GET parameter sind nicht namentlich bekannt und kann ich also so nicht gezielt auslesen. if(isset($_GET[???]))....... , gehen wir also von einem CMS aus, derjenige baut auf der section "kontakt" mein kalender ein. dann sieht die URL so aus: jemand klickt auf meinen kalender, meine GETs überschreiben entweder, das "section=kontakt" oder wenn ich vorher die bisherigen GETs auslese ($_SERVER['STRING_QUERY']) dann wird beim 2ten klick ein link generiert der so aussieht: beim vierten mal dann so: also ich finde da keine andere lösung als den query_string mit regexp zu durchsuchen und dann meine ersten GETs zu entfernen , und neu dazuzuschreiben. Vllt hab ich auch nen Denkfehler. Hier mal mein ganzes Script bisher. Nich lachen, und nicht über die Form reden, war nur für mich intern: Code: <?php $Monat = (int)htmlspecialchars($_GET['m']); $Jahr = (int)htmlspecialchars($_GET['y']); $Tag = (int)htmlspecialchars($_GET['d']); if(empty($Monat)){ $Monat = date("m",time()); } if(empty($Jahr)){ $Jahr = date("Y",time()); } ?> <style> <?php include_once("style.css"); ?> </style> <?php ?> <table class="kalender"> <tr> <td class="little"> <a href="?m=<?php if($Monat-1 == "0") { echo '12'.'&y=';echo $Jahr-1; } else { echo $Monat-1; if($Jahr != date("Y",time() )) echo '&y='.$Jahr; } ?>"> << </a> </td> <td class="big"> <?php echo date("F",mktime("0","0","0",$Monat,"1","0")) . " " . $Jahr ; ?> </td> <td class="little"> <a href="?m=<?php if($Monat+1 == "13") { echo '1'.'&y=';echo $Jahr+1; } else { echo $Monat+1; if($Jahr != 2008) { echo '&y='.$Jahr;}; } ?>"> >> </a> </td> </tr> </table> <table class="kalender"> <tr class="top"> <td class="little"> Mo </td> <td class="little"> Di </td> <td class="little"> Mi </td> <td class="little"> Do </td> <td class="little"> Fr </td> <td class="little"> Sa </td> <td class="little"> So </td> </tr> <tr> <?php $days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); switch(date("l",mktime("0","0","0",$Monat,"1",$Jahr))) { case "Monday" : $minus = 0; break; case "Tuesday" : $minus = 1; break; case "Wednesday" : $minus = 2; break; case "Thursday" : $minus = 3; break; case "Friday" : $minus = 4; break; case "Saturday" : $minus = 5; break; case "Sunday" : $minus = 6; break; default : break; } for($i=1-$minus;$i<= date("t",mktime("0","0","0",$Monat,"1",$Jahr));$i++){ $innercount++; if($i > 0) { // generieren der OnClick Verlinkungen if(date("Ymd",time()) == date("Ymd",mktime("0","0","0",$Monat,$i,$Jahr))) { echo ' <td class="today" onClick="location.href=\'?m='.$Monat.'&y='.$Jahr.'&d='.$i.'\'">'."\n"; } else { if((date("Ymd",mktime("0","0","0",$Monat,$i,$Jahr))== date("Ymd",mktime("0","0","0",$Monat,$Tag,$Jahr))) ) { echo ' <td class="red" onClick="location.href=\'?m='.$Monat.'&y='.$Jahr.'&d='.$i.'\'">'."\n"; } else { echo ' <td class="days" onClick="location.href=\'?m='.$Monat.'&y='.$Jahr.'&d='.$i.'\'">'."\n"; } } echo ' '.$i."\n"; echo ' </td>'."\n"; if($innercount%7 == 0) { echo ' </tr>'."\n"; echo ' <tr>'."\n"; } } else { echo ' <td>'."\n"; echo ' '."\n"; echo ' </td>'."\n"; } } echo '</table>'; ?> + Multi-Zitat Zitieren
#9 3. April 2008 AW: URL -Handling Quick and dirty und nicht getestet PHP: $reserved_gets = array( "m" , "d" , "y" ); $newurl = "" ; $counter = 0 ; foreach( $_GET as $varname => $varcontent ) { if( $counter == 0 ) { $newurl .= "?" ; } else { $newurl .= "&" ; } if( in_array ( $varname , $reserved_gets )) { switch( $reserved_gets ) { case "m" : $newurl .= $varname . "=" . $Monat ; break; case "d" : #und so weiter } } else { $newurl .= $varname . "=" . $varcontent ; } $counter ++; } ist total unsauber, aber aufgrund deines bisherigen codes geht es nicht viel sauberer (und in der textbox hier :>) das ganze kann man jetzt noch schön in funktionen aufschlüsseln + zusätzliche option damit keine statischen GETs genommen werden sondern dynamische naja, ich sag nur ajax + Multi-Zitat Zitieren