Festen Wert anhängen
ruffo
- php
0 Naps0 ruffo
0 fastix®
Hallo,
ich bitte als absoluter Einsteiger in PHP um euere Hilfe.
Für meine Nagios Intranetseite versuche ich ein PHP Script für eine Serversuche anzugleichen. Um die Suche für den Anwender zu vereinfachen, würde ich gerne die vorhandene Suche mit * als festen Wert anpassen. Dabei habe ich mir vorgestellt dass der Ausgabewert z.B. *test* alle Server mit den vorkommenden Zeichen "test" auflistet, was rein technisch in Nagios bestens funktioniert.
Es ist mir nach vielen Versuchen bisher nicht gelungen die * als festen Wert an die Ausgabe vorne und hiten anzuhängen
So ist der Ausgabewert zur Zeit
http://meinserver.com/nagios/cgi-bin/status.cgi?navbarsearch=&host=testserver
So soll der Ausgabe wert sein:
http://meinserver.com/nagios/cgi-bin/status.cgi?navbarsearch=&host=*testserver*
hier der Auszug aus site.html
<td width=60 height="18"></td>
<td nowrap class="NavBarSearchItem" height="18" width="137" valign="bottom" align="left">
<p style="word-spacing: 0; margin-top: 0; margin-bottom: 0"> </p>
<p style="word-spacing: 0; margin-top: 0; margin-bottom: 0"><b><font size="1">Direkte
Serversuche:</font></b></p>
</td>
</tr>
<tr>
<td width=80 height="22"></td>
<td nowrap height="22" width="137">
<form method="get" action="/nagios/cgi-bin/status.cgi" target="main">
<p align="left">
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name="host" size='18' class="NavBarSearchItem" value="Server">
hier der Auszug aus der site.php
<div class="navbarsearch">
<form method="get" action="<?php echo $cfg["cgi_base_url"] ;?>/status.cgi" target="<?php echo $link_target;?>">
<fieldset>
<legend>Quick Search:</legend>
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name='host' size='15' class="NavBarSearchItem" >
Ich bin mir sicher, dass es für die Profis hier ein Klacks ist.
Vielen Dank
Hi,
hier der Auszug aus der site.php
<div class="navbarsearch">
<form method="get" action="<?php echo $cfg["cgi_base_url"] ;?>/status.cgi" target="<?php echo $link_target;?>">
<fieldset>
<legend>Quick Search:</legend>
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name='host' size='15' class="NavBarSearchItem" >
Du müsstest dort wo $_POST['host'] ausgewertet wird das machen:
$host = '*'.$_POST['host'].'*';
und dann mit $host weiterarbeiten.
MfG
Naps
Naps, danke für den Hinweis.
Nochmal eine Rückfrage:
An welcher Stelle genau wird $_POST['host'] denn ausgewertet? Oder wo muss ich die Variable als erstes setzen? Ich habe schon ein paar Stellen in der site.php versucht, komme leider damit nicht weiter. Oder muss ich das in der site.html setzen? Habe leider zu wenig Erfahrung mit PHP um das richtig deuten zu können.
Dank vorab und Grüße
Ruffo
Hi,
hier der Auszug aus der site.php
<div class="navbarsearch">
<form method="get" action="<?php echo $cfg["cgi_base_url"] ;?>/status.cgi" target="<?php echo $link_target;?>">
<fieldset>
<legend>Quick Search:</legend>
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name='host' size='15' class="NavBarSearchItem" >Du müsstest dort wo $_POST['host'] ausgewertet wird das machen:
$host = '*'.$_POST['host'].'*';
und dann mit $host weiterarbeiten.
MfG
Naps
Moin!
Wenn es wirklich für alle Eingaben ist, dann musst Du /nagios/cgi-bin/status.cgi ändern. Das könnte für Dich schwierig sein, denn es sieht so aus als wäre dies binär und ich glaube nicht, dass Du C oder CPP kannst. Zudem könnten Deine Änderungen bei einem Update hinfällig sein und müssten jeweils erneuert werden. Den Quelltext zum ändern und übersetzen bekommst Du aber auf der Nagios-Webseite.
Also bliebe Dir nur, mit Javascript zu hantieren:
<form method="get" action="/nagios/cgi-bin/status.cgi" target="main" onsubmit="AddAsterixe('SearchHost')">
// Füge also den Funktionsaufruf via Event-Handler 'onsubmit' hinzu.
<input type='text' name="host" id="SearchHost" size='18' class="NavBarSearchItem" value="Server">
// Dein Formularfeld? Gib ihm noch eine ID mit auf den Weg.
//Alternative zum Aufruf via "onsubmit()":
//Du baust einen Button ein, der die gleiche Aufgabe erledigt. Sieht für mich vorteilhafter aus:
<input type="button" value="ähnliche finden" onclick="AddAsterixe('SearchHost')" />
<script type="text/javascript">
function AddAsterixe(FormularfeldId) {
/*
Diese Funktion gibt dem adressierten Formularfeld einen * vor und nach dem aktuellen Inhalt,
sie gibt ein true zurück, dadurch sollte das Formular dann abgesendet werden.
*/
document.getElementById(FormularfeldId).value='*' + document.getElementById(FormularfeldId).value + '*';
return true;
}
</script>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Moin!
Moin!
Wenn es wirklich für alle Eingaben ist, dann musst Du /nagios/cgi-bin/status.cgi ändern.
Konkret die im Quelltext-Tarball verfügbare /cgi/status.c ist der Kandidat des Tages. Danach natürlich kompilieren und installieren.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Danke Fastix,
jetzt isses dank deiner Hilfe gelöst.Habe den input type= button gegen "hidden" ersetzt. Beim Auslösen der Suche wird die Eingabe automatisch zwischen zwei * gesetzt.
Sieht jetzt im side.html so aus:
<form method="get" action="/nagios/cgi-bin/status.cgi" target="main" onsubmit="AddAsterixe('SearchHost')">
<p align="left">
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name="host" id="SearchHost" size='18' class="NavBarSearchItem" value="Server">
<input type="hidden" onclick="AddAsterixe('SearchHost')" />
<script type="text/javascript">
function AddAsterixe(FormularfeldId) {
document.getElementById(FormularfeldId).value='*' + document.getElementById(FormularfeldId).value + '*';
return true;
}
</script>
Tausend Dank!
Hallo,
jetzt isses dank deiner Hilfe gelöst.Habe den input type= button gegen "hidden" ersetzt. Beim Auslösen der Suche wird die Eingabe automatisch zwischen zwei * gesetzt.
ziemlich mysteriös.
<form method="get" action="/nagios/cgi-bin/status.cgi" target="main" onsubmit="AddAsterixe('SearchHost')">
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name="host" id="SearchHost" size='18' class="NavBarSearchItem" value="Server">
<input type="hidden" onclick="AddAsterixe('SearchHost')" />
<script type="text/javascript">
function AddAsterixe(FormularfeldId) {
document.getElementById(FormularfeldId).value='*' + document.getElementById(FormularfeldId).value + '*';
return true;
}
</script>
Etwas Wichtiges fehlt noch: Der submit-Button. Oder hast du den hier bewusst weggekürzt?
Mysteriös finde ich vor allem den onclick-Handler auf einem hidden input. Wie willst du auf etwas klicken, das gar nicht dargestellt wird? :-)
Ach so: Besucher, die Javascript nicht ausführen lassen, kommen natürlich nicht in den Genuss dieser automatischen Eingabe-Ergänzung. Deswegen hätte ich eine serverseitige Lösung auch schlauer gefunden.
So long,
Martin