xaero1982
Goto Top

PHP HTML Switch .. case problem

Allerlei Fragen rund um PHP und SQL / Access ... Also nicht wundern face-smile

Hi,

ich habe hier nen kleineres Problem mit PHP

<html>
<head>
	<title>
	</title>
</head>
<body>
<table border="0" valign="top" align="middle">  
	<tr>
		<td>
            <form action="<?php echo($_SERVER['PHP_SELF']);?>" method="POST" target="_self">  
                <b>Suchbegriff:</b>
        </td>
        <td>
            <input name="search" type="text" size="30" maxlength="50" value="<?php echo($search);?>">  

        </td>
	</tr>
	<tr>
		<td>
		    <b>Suchkriterium:</b>
		</td>
		<td>
            <select name="auswahl">  
            	<?php
            		//Assoziatives Array für das DropDown der Auswahlkriterien
            		$menuewahl=array("suchkrit" => "~BitteW&auml;hlen~", "MComputername"=>"Computername", "MBenutzer"=>"Benutzer", "Seriennummer"=>"Seriennummer");  
            		foreach($menuewahl as $index=>$wahl)
            		if($auswahl==$index) {
				?>
                <option value="<?php echo($index); ?>" name="<?php echo($index); ?>" selected="selected"><?php echo($wahl);?></option>  
                <?php }
                	else {
                ?>
                <option value="<?php echo($index); ?>" name="<?php echo($index); ?>"><?php echo($wahl);?></option>  
            	<?php }
            	?>
            </select>

        </td>
    </tr>
	<tr>
		<td align="center" valign="bottom">  
			

			<input type="submit" value="Suchen" size="50">  
		    </form>
		    <!--Zweites Formular um den Inhalt des Textfeldes Search zu leeren bei "Eintrag löschen"--> 
		</td>
		<td>
			

			<form action="<?php echo($_SERVER['PHP_SELF']);?>" method="POST" target="_self">  
				<input type="hidden" name="search" value="">  
    		    <input type="submit" value="Eintrag l&ouml;schen" >  
           	</form>
        </td>
	</tr>
</table>


<hr>
<?php


switch($auswahl)
{
case 'MComputername' : {  
	echo("test1");  
}

default : {
         echo "test2";  
}
?>

</body>
</html>

So, er ruft hier immer default auf wenn ich oben Computername auswähle. (Die anderen habe ich noch nicht eingebaut, da nicht mal das erste geht.

Sieht jemand den Fehler?

Content-Key: 36024

Url: https://administrator.de/contentid/36024

Printed on: April 16, 2024 at 23:04 o'clock

Member: Dani
Dani Jul 14, 2006 at 11:26:48 (UTC)
Goto Top
Hi,
ich würde sagen da fehlt ein einziger Befehl!
Probier es mal so:
<?php

switch($auswahl)
{
  case 'MComputername' :  echo "test1"; break;    
  default :  echo "test2";  
}
?>

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 14, 2006 at 11:33:49 (UTC)
Goto Top
Nicht wirklich, da die Variable "$auswahl" irgendwie immer leer ist :/
Member: Dani
Dani Jul 14, 2006 at 11:35:42 (UTC)
Goto Top
Hi,
switch($_POST['auswahl']  

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 14, 2006 at 12:16:40 (UTC)
Goto Top
Hi,
> switch($_POST['auswahl']  
> 

Gruß
Dani


Hey cool danke, das geht. Frage mich dann warum es bei einem anderen Projekt gegangen ist. Naja wie dem auch sei.

Evtl hast du ja noch Ahnung hiervon:

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in Zeichenfolge in Abfrageausdruck ''MComputername' = 'PCXX., SQL state 37000 in SQLExecDirect in....


Warning: odbc_fetch_array(): supplied argument is not a valid ODBC result resource in ...

    switch($_POST['auswahl'])  
    {
    case 'MComputername' : {  
        echo("test");  
                            $stmt = odbc_exec($conn, "SELECT * FROM tbl_Maincomputer WHERE '".$_POST['auswahl']."' = '".$_POST['search']);  
							echo('<table border=1 width=100% nowrap>');  
							echo('<th>Seriennummer</th><th>Benutzer</th><th>Computername</th><th>Hesteller</th><th>Typ</th><th>Archivierungsdatum</th>');  
                            while($row = odbc_fetch_array($stmt)){
                            echo ("<tr nowrap><td nowrap>");  
                            echo ("<a href=\"".$row["Seriennummer"]."\">");  
                            //echo($row["Seriennummer"].'</td><td>'.$row["MBenutzer"]);  
                            echo (implode("<td nowrap>",$row));  
                            echo ("</tr>");  
                            }
        				   };break;

Wenn ich die WHERE Clausel entferne gibt er mir alle aus. Also das geht ...

Behoben am Ende musste noch ein "'" hin: Also AnführungszeichenHochkommaAnführungszeichen.

Nur doof, dass er nun nichts mehr ausgibt :/
Member: Dani
Dani Jul 15, 2006 at 10:27:51 (UTC)
Goto Top
Hi,
probier es mal so:
$stmt = odbc_exec($conn, "SELECT * FROM tbl_Maincomputer WHERE '".$_POST['auswahl']."' = '".$_POST['search']."'");  

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 15, 2006 at 10:37:35 (UTC)
Goto Top
Hi,
probier es mal so:
> $stmt = odbc_exec($conn, "SELECT * FROM  
> tbl_Maincomputer WHERE
> '".$_POST['auswahl']."' =  
> '".$_POST['search']."'");  
> 

Gruß
Dani

Na so hab ich es ja, nur ist die Anzeige nun leer. Er gibt nichts mehr aus :/
Member: Dani
Dani Jul 15, 2006 at 10:42:37 (UTC)
Goto Top
Hi,
und so:
$stmt = odbc_exec($conn, "SELECT * FROM tbl_Maincomputer WHERE ".$_POST['auswahl']." = '".$_POST['search']."'");  

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 15, 2006 at 13:51:09 (UTC)
Goto Top
Hi,
und so:
> $stmt = odbc_exec($conn, "SELECT * FROM  
> tbl_Maincomputer WHERE
> ".$_POST['auswahl']." =  
> '".$_POST['search']."'");  
> 

Gruß
Dani

Werde ich montag probieren face-smile Im moment hab ich WE und der Kram is auf Arbeit. Melde mich dann wieder
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 05:11:22 (UTC)
Goto Top
yeah du bist genial face-smile

es geht ... was auch immer das mit den hochkommata zu tun hat :/

Aber weiter im Text face-smile

Hast du eine Ahnung, ob man eine Access Abfrage via sql abrufen und ausgeben kann in PHP.

Ich hab hier so ne Sammlung an PCs die ich archiviert habe. Die kommen natürlich total unsortiert in die DB. Eine Sortierung ist nur via Access in der Datenblattansicht möglich. Bringt mir in PHP natürlich nichts.

Wenn ich ne Abfrage schreibe mit Sortierkriterium in Access gehts natürlich. Nur muss ich diese Abfrage abfragen können face-smile U Understand?


edit
eh lol das geht ja echt ... einfach den Namen der Abfrage einsetzen und fertig face-smile

also select * from abfrage ...
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 09:25:53 (UTC)
Goto Top
Weiter im Text ...

ich lasse in meiner ausgabe immer die Seriennummer als Link darstellen.

Nun will ich diese Seriennummer an eine andere datei übergeben.

hierzu noch mal kurz der code
<LINK href="HardwareInfo.css" type="text/css" rel="stylesheet">  
<?php
require("tool.box");  
$file="details.php";  
$stmt = odbc_exec($conn, "SELECT * FROM tbl_Maincomputer_Abfrage" );  


echo('<table border=1 width=100% nowrap>');  
echo('<th>Seriennummer</th><th>Benutzer</th><th>Computername</th><th>Hersteller</th><th>Typ</th><th>Archivierungsdatum</th>');  
while($row = odbc_fetch_array($stmt)){
echo ("<tr nowrap><td nowrap>");  
echo ("<a href=\"$file?Seriennummer=".$row["Seriennummer"]."\">");  
echo (implode("<td nowrap>",$row));  
echo ("</tr>");  
$i++;
}
echo('</table>');  
echo('Anzahl der Computer: '.$i);  
odbc_close($conn);
?>

Empfängerdatei
<?php

if(empty(Seriennummer]))die("keine Berechtigung!");  

?>

Also wie bekomme ich die Seriennummer übergeben? Hab schon allerlei versucht, aber irgendwie wills nicht wie ich will :/
Member: Dani
Dani Jul 17, 2006 at 09:37:23 (UTC)
Goto Top
Hi,
probier es mal so:
<?php

if(empty($_POST['Seriennummer']))die("keine Berechtigung!");  

?>

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 09:55:17 (UTC)
Goto Top
Hi,
probier es mal so:
> <?php
> 
> if(empty($_POST['Seriennummer']))die("keine  
> Berechtigung!");  
> 
> ?>
> 

Gruß
Dani

Leider nein, auch nicht mit " " ... hatte ich versucht face-confused
Member: Dani
Dani Jul 17, 2006 at 09:58:30 (UTC)
Goto Top
Hi,
sry...falsche Vari!!

<?php

if(empty($_GET['Seriennummer']))die("keine  
Berechtigung!");  
?>

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 10:48:29 (UTC)
Goto Top
Ach du bist ein Engel *lach* es geht face-smileface-smileface-smile
Member: Dani
Dani Jul 17, 2006 at 10:57:09 (UTC)
Goto Top
Hi,
ich weiß! *ggg*
Den Post kannst du über editieren schließen! Hacken bei "Beitrag gilt als gelöst" setzen und schließen. Vergiss das bewerten nicht!


Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 12:09:00 (UTC)
Goto Top
So da haben wir auch schon wieder was:

Ich möchte einen Bericht erstellen über den ausgewählten PC. Hierbei soll der Benutzer selbst entscheiden welche Daten ausgedruck werden sollen.

Also habe ich Checkboxen nach dem Prinzip:

            <input type="checkbox" name="hX" value="Systeminformationen" onClick="Report()" id="h1">Systeminformationen  
erstellt.

So weit so gut. Dazu habe ich die Function "Report()" geschrieben. In dieser wird dann via switch case:

function Report()
{
    switch ($_POST['hX'])  
    {
    case $_GET['h1'] : { //hier hab ich es auch einfach mit case 'h1' versucht  
        //tbl_Maincomputer=============================================================
        $stmt = odbc_exec($conn, "SELECT * FROM tbl_Maincomputer WHERE Seriennummer = '".$_GET['Seriennummer']."'");  

        echo('<h3>Systeminformationen</h3>');  
        echo('<table border=1 width=* nowrap>');  
        echo('<th>Seriennummer</th><th>Benutzer</th><th>Computername</th><th>Hersteller</th><th>Typ</th><th>Archivierungsdatum</th>');  
        while($row = odbc_fetch_array($stmt)){
        echo ("<tr nowrap><td nowrap>");  
        echo (implode("<td nowrap>",$row));  
        echo ("</tr>");  
        }
        echo('</table>');  
        };break;
}}

geprüft was gewählt wurde.

Eh ja nur irgendwie sagt er mir entweder nen Syntaxfehler in Zeile 9 .. da steht nur nen <TD>

oder "Objekt erwartet" in Zeile 9....

hääääääääääää face-smile
Member: Dani
Dani Jul 17, 2006 at 12:37:45 (UTC)
Goto Top
Hi,
wie hast du die Funktion eingebunden?! In einer extra Datei, andere Seite oder gleiche Seite. Die Variable $conn musst du übergeben! Sonst kann das gar nicht gehen!


Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 12:47:35 (UTC)
Goto Top
Alles auf der gleichen Seite ...

Wieso muss ich die übergeben? ... dann ruf ich das gleich in der funktion auf .. geht auch oder?

aber hat ja nicht wirklich was damit zu tun oder?
Member: Dani
Dani Jul 17, 2006 at 12:53:07 (UTC)
Goto Top
Hi,
weil die Vari in der Funktion nicht bekannt ist.
function Report($conn)

einbinden:
Report($conn);

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 12:55:58 (UTC)
Goto Top
$conn ist undefiniert ...


ich glaube hier hängt es woanders ... bei der übergabe der ausgewählten checkbox bzw. beim funktionsaufruf :/
Member: Dani
Dani Jul 17, 2006 at 12:57:12 (UTC)
Goto Top
Hi,
schick mir die Seite an administrator[at]familie-wydler.de


Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 13:03:52 (UTC)
Goto Top
is raus ...

hab aber bald feierabend .. schicks dennoch ich schaus mir zu hause an ...
ansonsten morgen :/
Member: Dani
Dani Jul 17, 2006 at 13:08:39 (UTC)
Goto Top
Hi,
was soll in der $conn drin stehen bzw. bewirken??


Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 13:13:26 (UTC)
Goto Top
<?php

$conn = odbc_connect('Inventar.mdb', '', '', SQL_CUR_USE_ODBC) or die('Error connecting to server. Server says: '.htmlspecialchars(odbc_errormsg()));  

?>

Das ist die tool.box und daher die $conn ... mehr nicht
Member: Dani
Dani Jul 17, 2006 at 13:18:47 (UTC)
Goto Top
Hi,
diese Zeile solltest du auch in die details.php schreiben!!


Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 14:31:28 (UTC)
Goto Top
Hi,
diese Zeile solltest du auch in die
details.php schreiben!!


Gruß
Dani

hab ich doch hier:
require("tool.box");

damit binde ich das ein .. die ausgabe geht auch ohne probleme wenn ich das ohne checkboxes und switch case mache.

die übergabe ist das problem ....
Member: Dani
Dani Jul 17, 2006 at 14:36:07 (UTC)
Goto Top
Hi,
das hier kann nicht gehen:
<input type="checkbox" name="hX" value="Festplatte" onClick="Report()" id="h5">Festplatte  

Du kannst keine PHP Funktion einfach so in html einbinden. Und schon gar nicht mit Javascript!
Da kommst du nicht weiter...

Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 17, 2006 at 14:47:37 (UTC)
Goto Top
Hi,
das hier kann nicht gehen:
> <input type="checkbox"  
> name="hX"  
> value="Festplatte"  
> onClick="Report()"  
> id="h5">Festplatte  
> 
> 

Du kannst keine PHP Funktion einfach so in
html einbinden. Und schon gar nicht mit
Javascript!
Da kommst du nicht weiter...

Gruß
Dani

haha genau da komm ich nicht weiter ... nicht nur da sondern bei allen checkboxen face-smile

nur WIE ist der Aufruf einer PHP Funktion in html ???

mit <?php echo Report();?> gehts auch nicht

Wir können gerne die Funktion auch weg lassen .. Das ist mir ziemlich egal face-smile
Muss halt irgendwie in die Switch Anweisung kommen
Member: Dani
Dani Jul 17, 2006 at 15:45:53 (UTC)
Goto Top
Hi,
du kannst inm php => Javascript aufrufen, jedoch nicht anders rum! Sprich du musst das Formular wirklich abschicken und danach kannst du es auswerten. Sprich du liest mit $_POST den checkbox namen (am besten mit 1 bis x durch nummieren) aus und frägst dann den value (ab besten 1 für wahr und 0 für falsch) ab.


Gruß
Dani
Member: Xaero1982
Xaero1982 Jul 19, 2006 at 11:57:53 (UTC)
Goto Top
Habe nun einen alternativen Weg genommen. Ich lasse per javascript und css ein bzw ausblenden was ich brauche face-smile

thx noch mal für die hilfe