Danke Sempervivum
eigentlich hatte ich das schon versucht...
Die `quotes` haben tatsächlich den Unterschied ausgemacht
Vielen Dank für eure Hilfe
Danke Sempervivum
eigentlich hatte ich das schon versucht...
Die `quotes` haben tatsächlich den Unterschied ausgemacht
Vielen Dank für eure Hilfe
Error-Reporting läuft bereits, hatte ich nur vom Code abgeschnitten, hat natürlich einiges an Fehlern ausgegeben weil die Inhalte vom array gefehlt haben
habe es aber gelöst..
übergibt nur einen string
var plz_nach1 = `<?php echo json_encode($plz_nach_array_raw); ?>`;
var plz_nach = $.parseJSON(plz_nach1);
so übergibt das jquery ein Array..
Ich weiß das da einige Sachen doppelt und dreifach vorkommen, ich brauche aber etwas Stuktur sonst blicke ich nicht mehr durch.
Das einkürzen folgt wenn alles läuft...
die Einrückung sieht hier anders aus als im Original
Außerdem musste ich den Post aufteilen wg. 10.000 zeichen...
Sieht tatsächlich komisch aus, funktioniert aber ganau wie es soll ...
dh. es zeigt nicht mehr als es soll, und lässt nichts weg
}
// nur morgen
else if($_GET["datum1"] == "" AND $_GET["datum_check1"] =="" AND !$_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND $_GET["datum3"] ==""){
$datumV = $morgen;
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis";
}
// nur datum3
else if($_GET["datum1"] == "" AND $_GET["datum_check1"] =="" AND $_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND !$_GET["datum3"] ==""){
$datumV = $_GET["datum3"];
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis";
}
// zeitspanne
else if(!$_GET["datum1"] == "" AND $_GET["datum_check1"] =="" AND $_GET["datum_check2"] =="" AND !$_GET["datum2"] =="" ){
echo "Hallo";
$datumV = $_GET["datum1"];
$datumB = $_GET["datum2"];
$sql_part = "
plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND startdatum_von >= '$datumV' AND startdatum_bis <= '$datumB'
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' between startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumB' between startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND startdatum_von <= '$datumV' AND startdatum_bis >= '$datumB'";
//echo $sql_part;
}
//------------------------------------------------------------ende suche-----------------------------------------------------------------
?>
<div class="head-row"><input type="hidden" id="hidden" name="hidden" value=""><div class="flex-item">Datum</div><div class="flex-item"><a class="div_sort" id="plz_start" data-order="<?php echo $sorder;?>" >Start</a></div> <div class="flex-item">Liefer-Datum</div><div class="flex-item"><a class="div_sort" id="plz_ziel" data-order="'.$order.'" >Ziel</a></div> <div class="flex-item">Preis</div></div>
<?php
$heute = date("Y-m-j ");
$future = "2028-12-31";
$stern = "id, start, ende, startdatum_von, startdatum_bis, enddatum_von, enddatum_bis, preis, land_start, plz_start, land_ziel, plz_ziel";
$pdo = new PDO($db_server, $db_user, $db_pass);
$query = "SELECT $stern FROM touren WHERE $sql_part ORDER BY $sql_order";
$statement = $pdo->prepare($query);
$statement->execute(array( ));
while($row = $statement->fetch()) {
//datumsformat anpassen
$startdatum_von_raw=$row['startdatum_von'];
$startdatum_von = date("d.m.",strtotime($startdatum_von_raw));
$startdatum_bis_raw = $row['startdatum_bis'];
$startdatum_bis = date("d.m.",strtotime($startdatum_bis_raw));
$enddatum_von_raw=$row['enddatum_von'];
$enddatum_von = date("d.m.",strtotime($enddatum_von_raw));
$enddatum_bis_raw=$row['enddatum_bis'];
$enddatum_bis = date("d.m.",strtotime($enddatum_bis_raw));
//zeitformat anpassen
// $szeit_von_raw = $row['szeit_von'];
// $szeit_von = date("H:i",strtotime($szeit_von_raw));
// $szeit_bis_raw = $row['szeit_bis'];
// $szeit_bis = date("H:i",strtotime($szeit_bis_raw));
// $ezeit_von_raw = $row['ezeit_von'];
// $ezeit_von = date("H:i",strtotime($ezeit_von_raw));
// $ezeit_bis_raw = $row['ezeit_bis'];
// $ezeit_bis = date("H:i",strtotime($ezeit_bis_raw));
$startdatum_von_diff = new DateTime($startdatum_von_raw);
$startdatum_bis_diff = new DateTime($startdatum_bis_raw);
$interval = $startdatum_von_diff->diff($startdatum_bis_diff);
$plus_diff = $interval->format('%R%a');
if ($plus_diff == "+0") {
$plus_diff = "";
}
echo '<div class="row"><input type="hidden" id="ud_radio" name="tourid" value="'.$row['id'].'"><div class="flex-item">'.$startdatum_von.' '.$plus_diff.'</div><div class="flex-item"><div class="start">'.$row['land_start'].'</div><div class="start">'.$row['plz_start'].'</div><div class="start">'.$row['start'].'</div></div> <div class="flex-item">'.$enddatum_von.'</div><div class="flex-item"><div class="start">'.$row['land_ziel'].'</div><div class="start">'.$row['plz_ziel'].'</div><div class="start">'.$row['ende'].'</div></div> <div class="flex-item">'.$row['preis'].'€</div></div>';
}
?>
<script> // ausgage details im "kleinen Fenster #ud_output"
$('.row').click(function(event){
event.preventDefault();
const tourid = $(this).find('#ud_radio').val();
$.ajax({
type:'GET',
url: 'test.php',
data: {tourid: tourid},
success: function(data){
$("#ud_output").show('slow');
$('#ud_output').html(data);
}
});
});
</script>
<!--script zum sortieren -->
<script>
$('.div_sort').click(function(){
var column_name = $(this).attr("id");
var datum1 = `<?php echo $datum1; ?>`;
var datum2 = `<?php echo $datum2; ?>`;
var datum3 = `<?php echo $datum3; ?>`;
var datum_check1 = `<?php echo $datum_check1; ?>`;
var datum_check2 = `<?php echo $datum_check2; ?>`;
var von = `<?php echo $von; ?>`;
var nach = `<?php echo $nach; ?>`;
var order = `<?php echo $order; ?>`;
var plz_von = `<?php echo json_encode($plz_von_array_raw); ?>`;
var arrow = '';
if(order=='desc')
{
arrow = '  <span class="sort_arrow">↓</span>';
}
else
{
arrow = '  <span class="sort_arrow">↑</span>';
}
$.ajax ({
url:"ajax_search_function3.php",
method:"GET",
data:{column_name:column_name, order:order, datum1:datum1, datum2:datum2, datum3:datum3, datum_check1:datum_check1, datum_check2:datum_check2, von:von, nach:nach, plz_von:plz_von},
success:function(data){
$('#test_sort').html(data);
$('#'+column_name+'').append(arrow);
}
});
});
</script>
Alles anzeigen
$heute = date("Y-m-d");
$datum = mktime(0, 0, 0, date("m") , date("d")+1, date("y"));
$morgen = date("Y-m-d",$datum);
//--------------------------------------------------------------sortieren-------------------------------------------------------------------
$order = $_GET['order'];
if ($order == 'desc') {
$order = 'asc';
}
else {
$order = "desc";
}
if (!$_GET['column_name'] == ""){
$spalte = $_GET['column_name'];
}
else {
$spalte = 'plz_start';
}
$sql_order = $spalte.' '.$order;
//--------------------------------------------------------------ende sortieren--------------------------------------------------------------
var_dump($_GET['plz_von']);
//--------------------------------------------------------------suche-----------------------------------------------------------------------
// array bauen von 01-09 für eine leere eingabe plz_von oder plz_nach
$leer_array1 = ['01','02','03','04','05','06','07','08','09'];
// array bauen von 10-99 für eine leere eingabe plz_von oder plz_nach
$leer_array2 = array();
$leer_array2 = range(10, 99);
// beide Arrays zusammenfügen
$leer_array3 = array_merge($leer_array1, $leer_array2);
// Array "in Form" bringen
$SQL_leer_array = implode("','", $leer_array3);
// eingaben abholen
$plz_von_array = $_GET['plz_von'];
$plz_nach_array = $_GET['plz_nach'];
//Test-Anfang
$plz_von_array_raw = $_GET['plz_von'];
$plz_nach_array_raw = $_GET['plz_nach'];
//Test-Ende
// leere einträage aus Arrays löschen
$plz_von_array = array_filter($plz_von_array);
$plz_nach_array = array_filter($plz_nach_array);
//eingaben "in Form" bringen
$SQL_plz_von_array = implode("','", $plz_von_array) ;
$SQL_plz_nach_array = implode("','", $plz_nach_array);
//Prüfen ob in ajax_search_plz.php werte eingegeben wurden, ansonsten mit werten zwischen 01-99 auffüllen
if (empty($plz_von_array)) {
$SQL_plz_von_array = $SQL_leer_array;
}
if (empty($plz_nach_array)) {
$SQL_plz_nach_array = $SQL_leer_array;
}
$datum1 = $_GET["datum1"];
$datum2 = $_GET["datum2"];
$datum3 = $_GET["datum3"];
$datum_check1 = $_GET["datum_check1"];
$datum_check2 = $_GET["datum_check2"];
//leersuche
if($_GET["datum1"] == "" AND $_GET["datum_check1"] =="" AND $_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND $_GET["datum3"] =="" ){
// $datumV = $heute; //alle Ergebnisse anzeigen -> ende Testphase
$datumV = '2013-09-07';
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND startdatum_bis >= '$datumV' ";
}
// heute und morgen
else if($_GET["datum1"] == "" AND !$_GET["datum_check1"] =="" AND !$_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND $_GET["datum3"] =="" ){
$datumV = $heute;
$datumB = $morgen;
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumB' BETWEEN startdatum_von AND startdatum_bis";
}
// heute und datum3
else if($_GET["datum1"] == "" AND !$_GET["datum_check1"] =="" AND $_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND !$_GET["datum3"] =="" ){
$datumV = $heute;
$datumB = $_GET["datum3"];
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumB' BETWEEN startdatum_von AND startdatum_bis";
}
// morgen und datum3
else if($_GET["datum1"] == "" AND $_GET["datum_check1"] =="" AND !$_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND !$_GET["datum3"] =="" ){
$datumV = $morgen;
$datumB = $_GET["datum3"];
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumB' BETWEEN startdatum_von AND startdatum_bis";
}
// heute und morgen und datum3
else if($_GET["datum1"] == "" AND $_GET["datum_check1"] =="" AND !$_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND !$_GET["datum3"] =="" ){
$datumH = $heute;
$datumV = $morgen;
$datumB = $_GET["datum3"];
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumB' BETWEEN startdatum_von AND startdatum_bis
OR plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumH' BETWEEN startdatum_von AND startdatum_bis";
}
// nur heute
else if($_GET["datum1"] == "" AND !$_GET["datum_check1"] =="" AND $_GET["datum_check2"] =="" AND $_GET["datum2"] =="" AND $_GET["datum3"] ==""){
$datumV = $heute;
$sql_part=" plz_start_short IN ('$SQL_plz_von_array') AND plz_ziel_short IN ('$SQL_plz_nach_array') AND '$datumV' BETWEEN startdatum_von AND startdatum_bis";
Alles anzeigen
danke nochmal für die Hilfe..
um alle Möglichkeiten abzudecken sieht das Query jetzt so aus...(nur zur Vervollständigung der Lösung)
Hallo nochmal..
Ich bin dank eurer Hilfe mit meinem Projekt schon sehr weit gekommen.
Nun komme ich aber schon wieder nicht weiter..
ich übergeben ein Array und ein paar Textfelder aus einem Formular per jquery (von search.php an search_function.php) und var_dump ergibt für das Array
das klappt auch alles super, da ich aber noch ein Script zur Sortierung habe, übergebe ich die Variablen (aus der search_funktion.php) einfach nochmal (auch an die search_funktion.php)
damit ich die "suchbegriffe" wie auch den "spaltenname" usw. habe
<?php
$plz_von_array_raw = $_GET['plz_von'];
?>
<script>
$('.div_sort').click(function(){
var column_name = $(this).attr("id");
var datum1 = `<?php echo $datum1; ?>`;
var datum2 = `<?php echo $datum2; ?>`;
var datum3 = `<?php echo $datum3; ?>`;
var datum_check1 = `<?php echo $datum_check1; ?>`;
var datum_check2 = `<?php echo $datum_check2; ?>`;
var von = `<?php echo $von; ?>`;
var nach = `<?php echo $nach; ?>`;
var order = `<?php echo $order; ?>`;
var plz_von = `<?php echo json_encode($plz_von_array_raw); ?>`;
var arrow = '';
if(order=='desc')
{
arrow = '  <span class="sort_arrow">↓</span>';
}
else
{
arrow = '  <span class="sort_arrow">↑</span>';
}
$.ajax ({
url:"search_function.php",
method:"GET",
data:{ column_name:column_name,
order:order,
datum1:datum1,
datum2:datum2,
datum3:datum3,
datum_check1:datum_check1,
datum_check2:datum_check2,
von:von,
nach:nach,
plz_von:plz_von},
success:function(data){
$('#test_sort').html(data);
$('#'+column_name+'').append(arrow);
}
});
});
</script>
Alles anzeigen
Leider klappt das mit den Variablen gut aber mit dem Array nicht
var_dump ergibt in dem Fall
die Verwendung von json_encode brachte keine Änderung im var-dump
was mache ich Falsch?
Vielen Dank m.scatello, hier hatte ich wirklich ein Brett vorm Kopf
Danke für deine Hilfe
Hallo,
ich würde dir empfehlen dich ersmal mit den Grundlagen zu befassen.
Auf Basis einer Zeile Code eine ganze Webseite aufsetzen zu wollen ist vielleicht etwas zu hochgegriffen.
Kleiner Tipp, für eine "einfache Datenbankabfrage" brauchtst du kein Ajax.
Hallo, m.scatello Hallo Sempervivum,
vielen Dank für die Anmerkungen, ich werde das in der Fertigen Fassung entsprechend anpassen
Hallo,
ich hoffe das mein Problem hier an richtiger Stelle ist..
Ich habe eine Tabelle mit 2 Spalten die ein Datum beherbergen
Startdatum_von,
Startdatum_bis,
einzelne Daten frage ich mit MySQL so ab:
das klappt auch gut.
nun möchte ich aber statt eines einzelnen Datums einen Datumsbereich abfragen
ich habe 2 Inputfelder (type='DATE') aus welche ich ein Array erstelle mit allen Daten zwischen Inputfeld 1 und Inputfeld2
$datumV = $_GET["datum1"];
$datumB = $_GET["datum2"];
$start = new DateTime($datumV);
$end = new DateTime($datumB);
$interval = new DateInterval('P1D');
$range = new DatePeriod($start, $interval, $end);
Alles anzeigen
Wie kann ich das Array nun in mein SqlQuery einbauen, ($range) oder nur $range ?
Geht die Select Abfrage überhaupt so..??
Hallo Sempervivum,
es Funktioniert, vielen Dank für die schnelle Hilfe.
Hallo,
ich bin ganz neu im Thema AJAX.
Ich habe eine Tabelle mit Daten aus einer MYSQL Datenbank befüllt.
Nun möchte ich beim Klick in eine Spalte (CLick Event auf ein DIV)die Details zum gewählten Datensatz anzeigen lassen.
Soweit funktioniert das auch, jedoch bekomme nicht die richtige ID übertragen, sonderon immer nur ID1 also die ID vom ersten Datensatz.
Ändere ich das Script in soweit das ich eine Checkbox anklicke, funktioniert alles nur das ich eben eine Checkbox brauche und nicht einfach "irgendwo" in die Zeile klicken kann um den Datensatz zu wählen.
Hier mein Code
<div class="content">
<div class="head-row"><div class="flex-item">Check</div><div class="flex-item">Datum</div><div class="flex-item">Start</div> <div class="flex-item">Liefer-Datum</div><div class="flex-item">Ziel</div> <div class="flex-item">Preis</div></div>
<?php
$future = "2028-12-31";
$pdo = new PDO($db_server, $db_user, $db_pass);
$statement = $pdo->prepare("SELECT * FROM touren WHERE startdatum < ? ");
$statement->execute(array($future));
while($row = $statement->fetch()) {
echo '<div class="row"><div class="flex-item"><input type="checkbox" id="ud_radio" name="tourid" value="'.$row['id'].'"></div><div class="flex-item">'.$row['startdatum'].'</div><div class="flex-item"><div class="start">'.$row['land_start'].'</div><div class="start">'.$row['plz_start'].'</div><div class="start">'.$row['start'].'</div></div> <div class="flex-item">'.$row['enddatum'].'</div><div class="flex-item">'.$row['ende'].'</div> <div class="flex-item">'.$row['preis'].'€</div></div>';
}
?>
</div>
<h1>^</h1>
<div class="ud_box" id="ud_output"></div>
<script>
$('.row').click(function(event){
event.preventDefault();
var tourid = $("#ud_radio").val();
$.ajax({
type:'GET',
url: 'test.php',
data: {tourid: tourid},
success: function(data){
$("#ud_output").show();
$('#ud_output').html(data);
}
});
});
</script>
Alles anzeigen
Kann mir jemand sagen wie ich mit einem Klick auf das DIV auf die richtige Zeile verweise?
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.