Übergabe des Dateinamens

05/24/2019 19:52 mastermo#1
Grüße,

ich habe ein Problem und bräuchte eure Hilfe dabei :handsdown:
Mein Vorhaben ist etwas schwierig zu erklären, daher poste ich mal den Code und versuche euch näher zu bringen, was ich genauer vorhabe.


fetch.php
PHP Code:
<?php 
/*(pathinfo(__FILE__)['filename'])*/
    
if(isset($_GET['filter'])){
        
$filter trim($_GET['filter']);
        if(!empty(
$_GET['filter'])){
            
$con mysqli_connect('server','user','password','db');
            if(
$filter == 'all'){
                
$stmnt $con->prepare("select * from strecken where dienst LIKE'5a%' AND tag='woche' ORDER BY startzeit ASC");

            }else {
                
$stmnt $con->prepare("select * from strecken where dienst='5a' AND tag=?");
                
$stmnt->bind_param('s',$filter);
            };
            
$stmnt->execute();
            
$stmnt->store_result();
            
$stmnt->bind_result($id,$tag,$linie,$dienst,$startort,$startzeit,$zielort,$zielzeit,$matrixid);
            
$final = array();
            while(
$stmnt->fetch()){
                
$each = array(
                
                    
'id'=>$id,
                    
'tag'=>$tag,
                    
'linie'=>$linie,
                    
'dienst'=>$dienst,
                    
'startort'=>$startort,
                    
'startzeit'=> date('H:i'strtotime($startzeit)),
                    
'zielort'=>$zielort,
                    
'zielzeit'=> date('H:i'strtotime($zielzeit)),            
                    
'matrixid'=>$matrixid
                
);
                
array_push($final,$each);
            };
            echo 
json_encode($final);
            
$stmnt->close();
            
$con->close();
        };
    };
?>
5a.php
HTML Code:
<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script>
        $(document).ready(function(){
            function create_list(data){
                var table = $('#table');
                table.html('');
                var table_head = $('<tr>');
			/*	table_head.append($('<th scope="col">').text('ID'))		*/
			/*	table_head.append($('<th scope="col">').text('Tag'))	*/
                table_head.append($('<th scope="col">').text('Linie'))
			/*	table_head.append($('<th scope="col">').text('Dienst'))	*/
                table_head.append($('<th scope="col">').text('Startort'))
                table_head.append($('<th scope="col">').text('Startzeit'))
				table_head.append($('<th scope="col">').text(''))
                table_head.append($('<th scope="col">').text('Zielort'))
                table_head.append($('<th scope="col">').text('Zielzeit'))
                table_head.append($('<th scope="col">').text('Matrix ID'))				
				
				
                table.append(table_head);
                for(var x in data){
                    var tr = $('<tr>');
			/*		tr.append($('<td>').text(data[x].id));	*/
			/*		tr.append($('<td>').text(data[x].tag));	*/
                    tr.append($('<td>').text(data[x].linie));	
			/*		tr.append($('<td>').text(data[x].dienst));*/
                    tr.append($('<td>').text(data[x].startort));
                    tr.append($('<td>').text(data[x].startzeit));
					tr.append("<td><em class='fa fa-arrow-right'>");
					
                    tr.append($('<td>').text(data[x].zielort));
                    tr.append($('<td>').text(data[x].zielzeit));
                    tr.append($('<td>').text(data[x].matrixid));					
                    table.append(tr);
                };
            }
            $.ajax({
                url:'fetch5a.php?filter=all',
                tag:'GET',
                success:function(data){
                    var d = JSON.parse(data);
                    create_list(d);
                }
            })
            $('#filter').on('change',function(){
                var filter = $(this).val();
                $.ajax({
                url:'fetch5a.php?filter='+filter,
                tag:'GET',
                success:function(data){
                    var d = JSON.parse(data);
                    create_list(d);
                }
            })
            })
        })
    </script>
</head>
<body>
<div class="table-responsive">
							<table class="table" id="table">

							</table>
</div>	
</body>
</html>


Quote:
if($filter == 'all'){
$stmnt = $con->prepare("select * from strecken where dienst LIKE'5a%' AND tag='woche' ORDER BY startzeit ASC");

}else {
$stmnt = $con->prepare("select * from strecken where dienst='5a' AND tag=?");
$stmnt->bind_param('s',$filter);
};
Dort, wo der Code fettgedruckt ist möchte ich den Dateinamen (5a.php) ohne Dateiendung einbinden.

Ich hoffe das ist soweit verständlich.


Liebe Grüße
Mo
05/24/2019 20:00 False#2
Mehr Informationen zu schreiben, statt einfach ein Stück Sourcecode zu zeigen wäre besser.

Was genau ist dein Problem, den Namen herraus zufinden ?
Das übergeben ?
Das einfügen in die Query ?
05/24/2019 20:15 mastermo#3
Quote:
Originally Posted by False View Post
Mehr Informationen zu schreiben, statt einfach ein Stück Sourcecode zu zeigen wäre besser.

Was genau ist dein Problem, den Namen herraus zufinden ?
Das übergeben ?
Das einfügen in die Query ?
Finde ich etwas schwierig zu beschreiben, da ich selbst nicht so der pro in Sachen PHP bin. :)

Ich möchte im Query den Dateinamen ohne Endung der Datei einbinden, wo der Datensatz verarbeitet wird (in dem Fall 5a.php.) Bisher müsste ich für jede Datei eine fetch.php Datei anlegen, anstatt das ganze dynamisch zu gestalten, wo dann der Dateiname abgerufen und eingebunden wird. Hoffe das ist verständlicher :)
05/24/2019 20:22 False#4
Verstehe es noch nicht zu 100% und einen Dateinamen in eine Query zu packen hört sich für mich generell schon falsch an.

Dennoch eine grobe Erklärung für dein Vorhaben (soweit ich es verstanden habe):
- Mittels "window.location" oder auch "window.location.pathname" bekommst du im Javscript die aktuelle Url/den aktuelln Path, diese musst du dann nur noch zurecht biegen das du nur noch den Dateinamen hast (gibt es duzende Wege, einfach mal googeln)
- Wenn du den Dateinamen dann hast kannst du diesen über Ajax übertragen, ein Beispiel wie man Daten überträgt findest du hier: [Only registered and activated users can see links. Click Here To Register...]
- Im php holst du dir den Namen dann ganz normal via $_GET (sofern du GET nutzt) und nutzt diesen in deiner Query (Prepared Statements).
05/25/2019 12:00 mastermo#5
Wie gesagt, ich bin in Punkto PHP kein Profi und versuche es zurecht zu biegen, sodass es passt.

Im Prinzip habe ich vor ein Dropdownmenu zu haben, in dem ich einen Dienst auswählen kann. Nach der Wahl sollen alle Linien, die zu dem Dienst gehören aufgelistet werden. Mit einem Weiteren Dropdownmenu soll man dann nach Tagen filtern können (es gibt eine Spalte für Tag.)

Ich glaube ich hätte eine Lösung zur Entkomplizierung des Vorhabens, finde jedoch keine brauchbaren Tutorials im Internet dazu.

Im Grunde genommen bräuchte ich nur mehrere Filter zur Auswahl von Tag, Linie, Dienst per Dropdownmenu :)


Problem gelöst!
Habe nun ein ganz anderes Script mit einer anderen Methode verwendet, die das verwenden mehrerer Filter zulässt.
05/30/2019 09:35 ComputerBaer#6
Ich sehe du hast es gelöst indem du dir ein komplett anderes Skript gesucht hast, ich gebe dir jetzt trotzdem noch ein paar Gedanken zu deinem alten Skript, damit du es ausprobieren und lernen kannst.

Das Dropdown in HTML ist das "select"-Element. Du könntest also ein select in dein Formular packen, ihm einen Namen z.B. "dienst" geben und bei den Werten ("option"-Element) dann jeden deiner Dienste angelegen und denen als value jeweils dieses 5a, 5b, was auch immer geben. Wenn du das dann per GET (oder POST) an dein PHP Skript übergibst, kannst du einfach mit $_GET['dienst'] an deinen Wert kommen und den in die SQL-Abfrage einsetzen.