Backslash '\' entfernen?!

Alles, was PHP betrifft, kann hier besprochen werden.

Backslash '\' entfernen?!

Postby oberdoerfer » 26. April 2005 12:26

Hallo,

ich habe ein Problem.

ich habe eine sql-Abfrage

$sql = "SELECT * FROM tabelle1 WHERE nr <> '' ";

welche ich weiter geben möchte:

echo" <input type=\"hidden\" name=\"sql\" value=\"$sql\">";

aber als Wert bekomme ich das:

SELECT * FROM tabelle1 WHERE nr <> \'\'

wie kann ich diese Backslash entfernen??

Danke

oberdoerfer

PS: Mit Fkt. stripslashes funktioniert es nicht!
PS2: XAMPP für Windows Version 1.3, PHP/4.3.4, Apache/2.0.48 (Win32)
oberdoerfer
 
Posts: 9
Joined: 04. April 2005 11:50

Postby DJ DHG » 26. April 2005 12:30

Moin Moin

Zeig mal ein wenig mehr Code.

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby ollo » 26. April 2005 17:44

Ich rate mal ins Blaue:

sind vielleicht irgendwelche magic quotes aktiviert in der php.ini?
Normalerweise müßte er genau das ausgeben was im String steht, und da sind keine Slashes drin...
ollo
 
Posts: 85
Joined: 11. November 2004 12:29

Postby oberdoerfer » 27. April 2005 08:57

Hier ist etwas mehr 8)

!!!!die Seite heisst auch weiter.php!!!

Code: Select all
.....

<form method="post" action="weiter.php" name = "sortieren" >

<br><table border='1' width='620'>
<tr><td colspan="7" nowrap><i><b>Weitere Sortierung:</b></i></td></tr>
<tr><td>Sortierung </td><td ><select name=sort size = '3' ><option value=00 selected>(keine)
                                <option value=1> Famielienstand
                                <option value=2> Nationalität
                          </select></td>
<td  align="center" valign="middle"><input name="Schalter" type="submit" value="OK"></td>

<?php

if($sort <>'')
{
    switch ($sort)
        {
            case 1:
            {
                $sortieren = 'ORDER BY Familienstand';
            }
            break;
            case 2:
            {
                $sortieren = 'ORDER BY Nationalität';
            }
            break;
           
        }
        $zusatz_sort = 1;
        if($sort == '00')   $zusatz_sort = 0;
}


/* Datenbankserver - In der Regel die IP */
     $db_server = "localhost";
     /* Datenbankname */
     $db_name = "datenbank";
     /* Datenbankuser */
     $db_user = "root";
     /* Datenbankpasswort */
     $db_passwort = "";

/* stellt Connect zu Datenbank her */
$db = @MYSQL_PCONNECT($db_server,$db_user,$db_passwort)
   or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($db_name)or die ("Konnte die Datenbank nicht auswählen");

if($zusatz != 1 && $zusatz_sort != 1)
{

$SQL = "SELECT * WHERE nr <> '' ";
if ($geschlecht != "00"){ $SQL .= "AND geschlecht = '$geschlecht'  "; }
if ($adresse_PLZ != "") { $SQL .= "AND adresse_PLZ LIKE '$adresse_PLZ%' "; }
if ($wohnort != "" ) { $SQL .= "AND wohnort LIKE '%$wohnort%' "; }


if ($juenger_als != "") { $SQL .= "AND l_alter <= '$juenger_als' "; }
if ($aelter_als != "") { $SQL .= "AND l_alter >= '$aelter_als' "; }

}


echo" <input type=\"hidden\" name=\"SQL\" value=\"$SQL\">";
if ($zusatz_sort == 1) { $SQL .= $sortieren;}

echo" _____ $SQL ____";

...

?>

</form>



Grüß

oberdoerfer
oberdoerfer
 
Posts: 9
Joined: 04. April 2005 11:50

Postby Wiedmann » 28. April 2005 13:01

hmm, das ganze mal etwas bereinigt auf die Funktion die mit diesem Formular überhaupt möglich ist (kein Geschlecht, PLZ usw.) funktioniert das doch ohne Probleme...
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>Sorttest</title>
</head>
<body>

<form method="post" action="test.php" name="sortieren">
    <table border="1" width="620">
        <tr>
            <td colspan="3" nowrap="nowrap">
                <i><b>Weitere Sortierung:</b></i>
            </td>
        </tr>
        <tr>
            <td>
                Sortierung
            </td>
            <td>
                <select name="sort" size="3">
                    <option value="0" selected>(keine)
                    <option value="1">Familienstand
                    <option value="2">Nationalität
                </select>
            </td>
            <td align="center" valign="middle">
                <input name="Schalter" type="submit" value="OK">
            </td>
        </tr>
    </table>

    <?php
        ini_set('display_errors', '1');
        ini_set('error_reporting', E_ALL);

        $zusatz_sort = 0;

        if (!empty($_POST['sort'])) {
            switch ($_POST['sort']) {
                case 1:
                    $sortieren = 'ORDER BY `Familienstand`';
                    $zusatz_sort = 1;
                break;
                case 2:
                    $sortieren = 'ORDER BY `Nationalität`';
                    $zusatz_sort = 1;
                break;
            }
         }

        /* Datenbankserver - In der Regel die IP */
        $db_server = 'localhost';
        /* Datenbankname */
        $db_name = 'datenbank';
        /* Datenbankuser */
        $db_user = 'root';
        /* Datenbankpasswort */
        $db_passwort = '';

        /* stellt Connect zu Datenbank her */
        $db = @mysql_connect($db_server, $db_user, $db_passwort)
            or die('<p><b>Konnte keine Verbindung zur Datenbank herstellen:</b><br>'.mysql_error());
        $db_check = mysql_select_db($db_name, $db)
            or die('<p><b>Konnte die Datenbank nicht auswählen:</b><br>'.mysql_error());

        $sql = "SELECT * WHERE `nr` <> '' ";
        if (1 == $zusatz_sort) {
            $sql .= $sortieren;
        }

        echo '<input type="hidden" name="sql" value="'.$sql.'">'."\n";

        echo '<p>_____ '.$sql.' ____'."\n";
    ?>
</form>

</body>


Diese Zeile:
Code: Select all
        $sql = "SELECT * WHERE `nr` <> '' ";

solltest du aber nochmal überdenken. `nr`ist doch bestimmt ein INT-Feld? Wenn das auch noch der Primärindex ist, dürfte das eh nicht leer sein. Gäbe es also 3 Alternativen:
Code: Select all
        $sql = "SELECT * WHERE `nr` ";
        $sql = "SELECT * WHERE `nr` <> 0 ";
        $sql = "SELECT * WHERE `nr` IS NOT NULL ";


Eine Frage zu dieser Zeile:
Code: Select all
echo" <input type=\"hidden\" name=\"SQL\" value=\"$SQL\">";

Für was brauchst du die verwendete SQL-Abfrage in einem Hidden-Feld?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 5 guests