[php/mysql] $blaat="" --> error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Topicstarter
ik heb dit scripje van een kleine zoekmachine:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if ($soort == "Geen voorkeur")
        {
                //nix te doen
                $q_soort = "";
        }
        if ($soort == "Locomotief")
        {
                //loc
                $q_soort = "AND
                  catalogus.type_id = 1";
        }
        if ($soort == "Wagon")
        {
                //wagon
                $q_soort = "AND
                  catalogus.type_id = 2";
        }
        if ($soort == "Overig")
        {
                //overig
                $q_soort = "AND
                  catalogus.type_id = 3";
        }

de query
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$query = "
                  select * from catalogus, type_catalogus, merk_catalogus
                  WHERE
                  catalogus.merk_id=merk_catalogus.merk_id
                  AND
                  catalogus.type_id=type_catalogus.type_id
                  $q_art_nr
                  $q_int_expr
                  $q_soort
                  ";
        $result = mysql_query ($query)
        or die (mysql_error());

alles werkt, behalve dat wanneer mensen "Geen voorkeur" kiezen ze meteen deze error krijgen:
Notice: Undefined variable: q_soort in c:\program files\apache group\apache\htdocs\peter\final_1\pages800\zoek_adv.php on line 93
en dat is niet netjes. :|
php ziet de variable niet. Nu is mijn vraag, is er een teken waar mysql niet op let, maar waarbij php wel gewoon de $q_soort onthoudt :?
dit is natuurlijk wel een beetje vals spelen, als iemand een andere oplossing heeft graag ;)

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Spatie :?
En doe gewoon eens een switch($soort);

Acties:
  • 0 Henk 'm!

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Topicstarter
met spatie ziet php hem ook niet
waarom moet ik switch gebruiken :? is dat sneller :?

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


Acties:
  • 0 Henk 'm!

  • creative8500
  • Registratie: September 2001
  • Laatst online: 01-02 14:14

creative8500

freedom.

Haco schreef op 30 november 2002 @ 16:13:
met spatie ziet php hem ook niet
waarom moet ik switch gebruiken :? is dat sneller :?
Switch is een speciale soort if-elseif-else syntax voor als je alleen de waarde van een-en-dezelfde variabele wilt evalueren.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
switch($soort)
{
    default:
/* deze default-actie is heel belangrijk: zo krijg je, wanneer
er geen if-statement true geeft, toch een gedefinieerde variabele 'q_soort' */
    case "Geen voorkeur":
        $q_soort = "";
    break;

    case "Locomotief":
        $q_soort = "AND calogus.type_id = 1";
    break;

    case "Wagon":
        $q_soort = "AND catalogus.type_id = 2";
    break;

    case "Overig":
        $q_soort = "AND catalogus.type_id = 3";
    break;
}

$query = "
SELECT
    *
FROM
    catalogus,
    type_catalogus,
    merk_catalogus
WHERE
    catalogus.merk_id = merk_catalogus.merk_id
    AND
    catalogus.type_id = type_catalogus.type_id
".$q_art_nr.$q_int_expr.$q_soort;
$result = mysql_query($query) or die (mysql_error());

Voor meer informatie: PHP: switch - Manual

dankje, creative8500 ;)

edit: Het beste zou natuurlijk zijn: i.p.v. een else of een default gebruiken: vooraan je script zetten:
PHP:
1
$q_soort = "";

[ Voor 45% gewijzigd door creative8500 op 01-12-2002 12:09 ]


Acties:
  • 0 Henk 'm!

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Topicstarter
dank voor de uitleg :) , kwas net zelf op php.net en heb het switch onderdeel gelezen, maar dat lost nog niet m'n probleem op met mysql
-edit- met array en isset kom ik geloof ik ook niet verder,
tenzij ik iets over het hoofd gezien heb

[ Voor 32% gewijzigd door EL_Loco op 30-11-2002 16:27 . Reden: edit ]

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Onder het motto: TIMTOWTDI

PHP:
1
2
3
4
5
6
7
8
9
$theKinds = array( 'Locomotief', 'Wagon', 'Overig' );

if( !isset( $theKind ) || !in_array( $theKind, $theKinds ) || $theKind == 'Geen voorkeur' )
    $theString = '';
else
{
    $theTemp = array_flip( $theKinds );
    $theString = 'AND catalogus.type_id = '. $theTemp[ $theKind ] + 1;
}

[ Voor 64% gewijzigd door Grum op 30-11-2002 16:33 ]


Acties:
  • 0 Henk 'm!

  • creative8500
  • Registratie: September 2001
  • Laatst online: 01-02 14:14

creative8500

freedom.

Haco schreef op 30 November 2002 @ 16:25:
dank voor de uitleg :) , kwas net zelf op php.net en heb het switch onderdeel gelezen, maar dat lost nog niet m'n probleem op met mysql
-edit- met array en isset kom ik geloof ik ook niet verder,
tenzij ik iets over het hoofd gezien heb
Zie vorige reactie, vooral bij default. Om voortaan zelf te kijken waar het probleem ligt: zet bij elke if-statement een echo "nummer x", zo kun je zien welke if-statement true teruggeeft, en als je niks op je scherm krijgt: dan is er helemaal geen statement true.
De wijze les voor vandaag: maak _altijd_ gebruik van else { }

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

zet eens bovenaan je script
PHP:
1
echo $soort;


Dat heet DEBUGGEN

[ Voor 50% gewijzigd door thomaske op 30-11-2002 16:34 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • creative8500
  • Registratie: September 2001
  • Laatst online: 01-02 14:14

creative8500

freedom.

thomaske schreef op 30 November 2002 @ 16:32:
zet eens bovenaan je script
PHP:
1
echo $soort;
Als hij het HTML-formpje verkeerd heeft gemaakt dan is het natuurlijk wel heel triest :D

Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 16-09 10:29

Apache

amateur software devver

Het is trouwens een notice, zelfs geen warning of error, die default zou het moeten oplossen, anders kan je hem initialiseren met een lege waarde.

Als je perse wil kan je ook het error reporting level in je php.ini iets lager zetten.

If it ain't broken it doesn't have enough features


Acties:
  • 0 Henk 'm!

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Topicstarter
_/-\o_ _/-\o_ dank allen, hier was ik al een paar uur op aan het puzzelen _/-\o_ _/-\o_

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


Acties:
  • 0 Henk 'm!

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Topicstarter
Apache schreef op 30 november 2002 @ 16:36:
Het is trouwens een notice, zelfs geen warning of error, die default zou het moeten oplossen, anders kan je hem initialiseren met een lege waarde.

Als je perse wil kan je ook het error reporting level in je php.ini iets lager zetten.
daar heb je gelijk in, maar als ik iets doe dan wil ik het foutloos doen :) , dus zonder error, warnigs, notice (wat is het meervoud hiervan :? )

[ Voor 1% gewijzigd door EL_Loco op 30-11-2002 16:38 . Reden: de = het ]

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

creative8500 schreef op 30 November 2002 @ 16:33:
[...]

Als hij het HTML-formpje verkeerd heeft gemaakt dan is het natuurlijk wel heel triest :D
Haco schreef op 30 November 2002 @ 16:36:
_/-\o_ _/-\o_ dank allen, hier was ik al een paar uur op aan het puzzelen _/-\o_ _/-\o_
:X :X

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Topicstarter
creative8500 schreef op 30 november 2002 @ 16:33:
[...]

Als hij het HTML-formpje verkeerd heeft gemaakt dan is het natuurlijk wel heel triest :D
m'n formpje was goed :( ;)

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 16-09 10:29

Apache

amateur software devver

Haco schreef op 30 November 2002 @ 16:37:
[...]

daar heb je gelijk in, maar als ik iets doe dan wil ik het foutloos doen :) , dus zonder error, warnigs, notice (wat is het meervoud hiervan :? )
true, ik code ook enkel php met error_reporting(E_ALL); bovenaan maar als iemand hier op GoT iets post heb je er geen idee van of hij net bezig is of niet, als beginner valt die niet aan te raden (die geven meestal ook geen shit om notices (wat volgens mij ook meteen het meervoud is ;)))

If it ain't broken it doesn't have enough features

Pagina: 1