[MySQL] meerdere specificaties.

Pagina: 1
Acties:
  • 49 views sinds 30-01-2008

  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
Hallo,

Ik wil uit een MySQL database resultaten halen die aan 2 voorwaarden moeten voldoen. Die waardes moeten worden ingevuld door PHP. Eerst even een voorbeeld:

Ik heb 10 mensen in mijn tabel staan. Hiervan zijn er 7 die in het vak "type1" het woord "tussenwoning" hebben staan. Van deze 7 zijn er weer 4 die ik het vak "prijshoog" het getal "200000" of meer hebben staan. Nu wil ik alleen die laatse 4 mensen hebben. En niet alle 7.

Ik heb het met de volgende code geprobeerd: (alleen specifieke deel)
code:
1
2
3
<?php
$opdracht = "SELECT * from $tabel WHERE prijshoog >= 200000 AND type1 = 'tussenwoning'";
?>

Dit werkt alleen niet 8)7 :'(

Kunnen jullie me helpen?
MVG,
William

P.S. MODS, Ik heb de GoT regels gelezen, en volgens mij heb ik het zo goed gepost toch?

Verwijderd

Moet je niet die 2 waarden omdraaien in je where statement? Dus eerst controleren op type1 en dan pas op prijshoog.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

Je mist alleen nog te zeggen wat er niet werkt.. :) Welke foutmelding je krijgt. Wat er gebeurd als je $opdracht echo'ed :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Waarom werkt het niet? Krijg je een error? Hoe ziet je table structuur eruit? Wordt je variabele $table wel netjes gevuld? Heb je wat aanvullende info want de query opzich ziet er niet verkeerd uit...

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op 26 juli 2004 @ 11:37:
Moet je niet die 2 waarden omdraaien in je where statement? Dus eerst controleren op type1 en dan pas op prijshoog.
Maakt geen verschil.

TS: Wat werkt er dan niet aan? Geeft je query alles terug of wat gaat er anders fout?

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Het is IMO ook wel handig om sql-fouten te laten zien, ik doe het zo:
PHP:
1
2
3
4
5
6
function display_error($query) { 
    echo "<p>Query:</p>";
    echo "<p>".$query."</p>";
    echo "<p>Error:</p>";
    echo "<p>".mysql_error()."</p>"; 
    }

PHP:
1
2
$query = '...';
$result = mysql_query($query) or die(display_error($query));

Verwijderd

Verwijderd schreef op 26 juli 2004 @ 11:37:
Moet je niet die 2 waarden omdraaien in je where statement? Dus eerst controleren op type1 en dan pas op prijshoog.
Dat maakt niet uit, om uiteenlopende redenen.

  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
Sorry, heb ik toch geen goed topic gemaakt,

Ik krijg geen foutmelding, ik krijg gewoon geen e-mail, wat wel zou moeten, hier is de hele code:

code:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<html>
<head>
<style type='text/css'><!--

BODY,TD { font-size: 9.5pt; font-family: Arial; }

//--></style>
<title>Nieuwsbrief</title>
</head>
<body>
<center>
<h3>Nieuwsbrief</h3>
<br>
</center>
<?php

include("nieuwsbriefgegevens.php");

if($gebruikersnaam == $AdminGebruikersnaam && $wachtwoord == $AdminWachtwoord) { 

if($actie) {

$Adressen = mysql_query("SELECT email from clienten WHERE prijshoog >= 200000 AND type1 = 'tussenwoning'");
if($HTML) { $HTML = "\r\nContent-type: text/html"; } else { $HTML = ""; }

while($Adres = mysql_fetch_object($Adressen)) {

if($Afmeldlink && $HTML) { $HetBericht = "$Bericht<br><br>Wil je deze nieuwsbrief niet meer ontvangen? <a href='$NieuwsbriefLocatie?actie=afmelden&email=$Adres->Adres'>Klik hier.</a>"; }
elseif($Afmeldlink) { $HetBericht = "$Bericht\n\nWil je deze nieuwsbrief niet meer ontvangen? Ga naar $NieuwsbriefLocatie?actie=afmelden&email=$Adres->Adres"; }
else { $HetBericht = $Bericht; }

mail("$Adres->Adres",$Onderwerp,$HetBericht,"From: $JouwWebsiteNaam <$JouwEmail>$HTML");
}

echo("<b>De nieuwsbrief is succesvol verstuurd!</b><br><br>");

}

?>
<form method=post action=''>
<font size=1>Op dit moment is het week <?php echo strftime("%V"); ?> van dit jaar.</font><br><br>
Onderwerp:<br><br><input type=text name=Onderwerp><br><br>
Bericht:<br><br>
<textarea name=Bericht rows=20 cols=60></textarea>
<br><br>
<input type=checkbox name=HTML> HTML<br>
<input type=checkbox name=Afmeldlink checked> Afmeldlink toevoegen<br><br>
<input type=hidden name=actie value=1>
<input type=submit value=Verstuur>
<input type=hidden name=gebruikersnaam value="<?php echo $gebruikersnaam; ?>">
<input type=hidden name=wachtwoord value="<?php echo $wachtwoord; ?>"> 
<input type=hidden name=vraagprijs value="<?php echo $vraagprijs; ?>">
<input type=hidden name=keuze value="<?php echo $keuze; ?>">
<input type=hidden name=type value="<?php echo $type; ?>">
</form>
<?php

}

else {
echo "<form method='post'>\n";
echo "Gebruikersnaam: <input type=text name='gebruikersnaam'><br>\n";
echo "Wachtwoord: <input type=password name='wachtwoord'><br>\n";
echo "<br><input type='Submit' value='Login'>\n";
echo "</form></center>";
} 

?>
</body>
</html>


MVG

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

8)7

Waarom zie ik jouw code uit de startpost niet terug in je eigenlijke hierboven?

[ Voor 117% gewijzigd door gorgi_19 op 26-07-2004 12:07 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
gorgi_19 schreef op 26 juli 2004 @ 12:05:
8)7

Waarom zie ik jouw code uit de startpost niet terug in je eigenlijke hierboven?
code:
1
$Adressen = mysql_query("SELECT email from clienten WHERE prijshoog >= 200000 AND type1 = 'tussenwoning'");


iets anders, sorry

[ Voor 6% gewijzigd door williamvdh op 26-07-2004 12:07 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

williamvdh schreef op 26 juli 2004 @ 12:06:
[...]


code:
1
$Adressen = mysql_query("SELECT email from clienten WHERE prijshoog >= 200000 AND type1 = 'tussenwoning'");


iets anders
Maar dat maakt het probleem wel wezenlijk anders.


In ieder geval:
Mijn POST en GET forms werken niet (meer)
Debuggen: hoe doe ik dat?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
mysql_query(...) or die(mysql_error());
oftewel zet er ff een or die(mysql_error()) bij en je ziet wat er fout is aan je query :-).

(En de query ff in phpmyadmin oid uitvoeren als er geen foutmelding komt. Misschien dat je dan nog een fout tegenkomt)

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

welk type is prijshoog eigenlijk??

[ Voor 108% gewijzigd door RwD op 26-07-2004 12:20 ]


Verwijderd

Je query klopt volgens mij gewoon. Je hebt from alleen niet met een hoofdletter geschreven, misschien maakt dat iets uit.

DUs probeer het eens op deze manier:
PHP:
1
SELECT kolom1, kolom2, enz FROM tabelnaam WHERE conditie;


In jouw geval wordt het dan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
//Maak query
$query = "SELECT email FROM clienten WHERE prijshoog >= 2000 AND type1 = 'tussenwoning'";
$result = mysql_query($query) or die("<H1>Error: </H1>" . mysql_error());
//Gegevens weergeven
echo "</H1>E-mail adressen: </H1><BR><BR>";
while ($rij = mysql_fetch_array($result))
{
    echo $rij['email'];
}
?>


Ik ben er 100% zeker van dat deze code MOET werken, zoniet kijk dan eens of je wel de juiste tabelnaam hebt opgeschreven.

Suc6

[ Voor 20% gewijzigd door Verwijderd op 26-07-2004 12:32 ]


Verwijderd

Verwijderd schreef op 26 juli 2004 @ 12:31:
Je query klopt volgens mij gewoon. Je hebt from alleen niet met een hoofdletter geschreven, misschien maakt dat iets uit.
Nee, SQL is case insensitive (op de keywords).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

Als de kolom prijshoog van het type text/varchar/char is werkt "prijshoog >= 2000" niet.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
Janoz schreef op 26 juli 2004 @ 12:42:
Als de kolom prijshoog van het type text/varchar/char is werkt "prijshoog >= 2000" niet.
Het was VARCHAR, kheb er nu INT van gemaakt, bedankt alvast, ik ga nu even kijken of dat werkt

Dit werkt dus ook niet, hij geeft geen fout, geeft wel aan dat hij succesvol is verzonden maar ik zie geen mail verschijnen!

[ Voor 21% gewijzigd door williamvdh op 26-07-2004 13:00 ]


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Wat gaat er nu eigenlijk mis? Wordt er geen data opgehaald uit je database, of is het enigste dat je geen email krijgt? Want als het dat laatste is, dan zitten we denk ik verkeerd te kijken...

.Edit

Als je de code van hierboven pakt, krijg je dan wel alle email adressen op je scherm te zien? Zo nee, krijg je een error? Geen error, probeer dan eens gewoon te selecteren zonder een 'where ...'

.Edit 2

@OneOfBorg: Hij zegt dat het veranderen van VARCHAR naar INT geen verschil maakt..

[ Voor 49% gewijzigd door OkkE op 26-07-2004 13:07 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Verwijderd

OkkE schreef op 26 juli 2004 @ 13:04:
Wat gaat er nu eigenlijk mis? Wordt er geen data opgehaald uit je database, of is het enigste dat je geen email krijgt? Want als het dat laatste is, dan zitten we denk ik verkeerd te kijken...
Als er niks uit de database komt krijg je ook geen mails...

Het typeprobleem zal de boel wel opgelost hebben.

  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
OkkE schreef op 26 juli 2004 @ 13:04:
Wat gaat er nu eigenlijk mis? Wordt er geen data opgehaald uit je database, of is het enigste dat je geen email krijgt? Want als het dat laatste is, dan zitten we denk ik verkeerd te kijken...
Ik heb de code die ik nu gebruit getest in phpmyadmin, hier werkt het, ik mag dus aannemen dat het wel opgehaald wordt uit de database. Tenminste als php bij de action van het formulier de variabelen wel goed meestuurt (action = nieuwsbriefadmin.php?vraagprijs=$vraagprijs&keuze=$keuze&type=$type)

De connectie met de database gaat wel goed, want er zit een foutmelding ingebouwd.

Het ligt dus misschien niet aan de MySQL opdracht :(

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Waar komt de variabele $action vandaan op regel 21? Welke waarde heeft die? Als deze namelijk als false geinterpeteerd wordt dan wordt er helemaal geen email verstuurd, maar wordt wel de melding van "Succesvol verstuurd" gegeven.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
OkkE schreef op 26 juli 2004 @ 13:15:
Waar komt de variabele $action vandaan op regel 21? Welke waarde heeft die? Als deze namelijk als false geinterpeteerd wordt dan wordt er helemaal geen email verstuurd, maar wordt wel de melding van "Succesvol verstuurd" gegeven.
Die reageert op regel 48.

P.S. Het is een script van Webmensen.nl

hieronder nog eenmaal de volledige code, inclusief de connectie met de database:

nieuwsbriefgegevens.php:
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
<?php

//----------------------------------------
// Verander de gegevens hieronder:

$JouwWebsiteNaam = "****";
// Jouw website naam
$JouwEmail = "****";
// Jouw e-mail adres

$MySQLHost = 'localhost';
// De MySQL host van uw server
$MySQLGebruikersnaam = '****';
// De gebruikersnaam van de MySQL database op uw server
$MySQLWachtwoord = '*****';
// Het wachtwoord van de MySQL database op uw server
$MySQLDatabaseNaam = 'dejager';
// De naam van de database op uw server

$AdminGebruikersnaam = "****";
$AdminWachtwoord = "****";

// Hierna hoef je niks meer te veranderen!
//----------------------------------------

@mysql_connect($MySQLHost, $MySQLGebruikersnaam, $MySQLWachtwoord) or die("Er kon geen verbinding worden gemaakt met de MySQL database.");
@mysql_select_db($MySQLDatabaseNaam) or die("De database kon niet geselecteerd worden!");

?>


nieuwsbriefadmin.php:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<html>
<head>
<style type='text/css'><!--

BODY,TD { font-size: 9.5pt; font-family: Arial; }

//--></style>
<title>Nieuwsbrief</title>
</head>
<body>
<center>
<h3>Nieuwsbrief</h3>
<br>
</center>
<?php

include("nieuwsbriefgegevens.php");

if($gebruikersnaam == $AdminGebruikersnaam && $wachtwoord == $AdminWachtwoord) { 

if($actie) {

$Adressen = mysql_query("SELECT email from clienten WHERE prijshoog >= $vraagprijs AND $keuze = '$type'");
if($HTML) { $HTML = "\r\nContent-type: text/html"; } else { $HTML = ""; }

while($Adres = mysql_fetch_object($Adressen)) {

if($Afmeldlink && $HTML) { $HetBericht = "$Bericht<br><br>Wil je deze nieuwsbrief niet meer ontvangen? <a href='$NieuwsbriefLocatie?actie=afmelden&email=$Adres->Adres'>Klik hier.</a>"; }
elseif($Afmeldlink) { $HetBericht = "$Bericht\n\nWil je deze nieuwsbrief niet meer ontvangen? Ga naar $NieuwsbriefLocatie?actie=afmelden&email=$Adres->Adres"; }
else { $HetBericht = $Bericht; }

mail("$Adres->Adres",$Onderwerp,$HetBericht,"From: $JouwWebsiteNaam <$JouwEmail>$HTML");
}

echo("<b>De nieuwsbrief is succesvol verstuurd!</b><br><br>");

}

?>
<form method=post action='nieuwsbriefadmin.php?'>
<font size=1>Op dit moment is het week <?php echo strftime("%V"); ?> van dit jaar.</font><br><br>
Onderwerp:<br><br><input type=text name=Onderwerp><br><br>
Bericht:<br><br>
<textarea name=Bericht rows=20 cols=60></textarea>
<br><br>
<input type=checkbox name=HTML> HTML<br>
<input type=checkbox name=Afmeldlink checked> Afmeldlink toevoegen<br><br>
<input type=hidden name=actie value=1>
<input type=submit value=Verstuur>
<input type=hidden name=gebruikersnaam value="<?php echo $gebruikersnaam; ?>">
<input type=hidden name=wachtwoord value="<?php echo $wachtwoord; ?>"> 
<input type=hidden name=vraagprijs value="<?php echo $vraagprijs; ?>"> 
<input type=hidden name=keuze value="<?php echo $keuze; ?>"> 
<input type=hidden name=type value="<?php echo $type; ?>"> 
</form>
<?php

}

else {
echo "<form method='post'>\n";
echo "Gebruikersnaam: <input type=text name='gebruikersnaam'><br>\n";
echo "Wachtwoord: <input type=password name='wachtwoord'><br>\n";
echo "<br><input type='Submit' value='Login'>\n";
echo "</form></center>";
} 

?>
</body>
</html>

[ Voor 81% gewijzigd door williamvdh op 26-07-2004 13:24 . Reden: aanvulling ]


Verwijderd

Maar wanneer je deze code gebruikt, geeft hij dan wel gewoon alle email adressen weer?

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php 
//Maak query 
$query = "SELECT email FROM clienten WHERE prijshoog >= 2000 AND type1 = 'tussenwoning'"; 
$result = mysql_query($query) or die("<H1>Error: </H1>" . mysql_error()); 
//Gegevens weergeven 
echo "</H1>E-mail adressen: </H1><BR><BR>"; 
while ($rij = mysql_fetch_array($result)) 
{ 
    echo $rij['email']; 
} 
?> 

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
Verwijderd schreef op 26 juli 2004 @ 13:23:
Maar wanneer je deze code gebruikt, geeft hij dan wel gewoon alle email adressen weer?

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php 
//Maak query 
$query = "SELECT email FROM clienten WHERE prijshoog >= 2000 AND type1 = 'tussenwoning'"; 
$result = mysql_query($query) or die("<H1>Error: </H1>" . mysql_error()); 
//Gegevens weergeven 
echo "</H1>E-mail adressen: </H1><BR><BR>"; 
while ($rij = mysql_fetch_array($result)) 
{ 
    echo $rij['email']; 
} 
?> 
Ja, dat wel

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

williamvdh schreef op 26 juli 2004 @ 13:16:
[...]

Die reageert op regel 48.
En wanneer je die op regel 21 veranderd in:

if( $_POST['action'] ){

?

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
OkkE schreef op 26 juli 2004 @ 13:28:
[...]

En wanneer je die op regel 21 veranderd in:

if( $_POST['action'] ){

?
Dan komt er niet meer te staan "Succesvol verzonden" maar hij stuurt ook niks.

aLS ik er if( $_POST['actie'] ){ van maak dan staat er wel weer succesvol verzonden, maar gebeurter nog steeds niks :(

[ Voor 23% gewijzigd door williamvdh op 26-07-2004 13:37 . Reden: aanvulling ]


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Euhm ja sorry ik bedoelde ook actie.

Maar dan zou ik nog maar eens goed de links van gorgi_19 door lezen -- deze post dus -- en overal echo's en print's gaan neerzetten. Om te zien welke if() wel en niet uitgevoerd wordt. En welke waardes de verschillende variabelen hebben. Want dit zal waarschijnlijk toch een debug probleempje zijn. :)

[ Voor 16% gewijzigd door OkkE op 26-07-2004 13:44 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 17-05 17:24
OkkE schreef op 26 juli 2004 @ 13:43:
Euhm ja sorry ik bedoelde ook actie.

Maar dan zou ik nog maar eens goed de links van gorgi_19 door lezen -- deze post dus -- en overal echo's en print's gaan neerzetten. Om te zien welke if() wel en niet uitgevoerd wordt. En welke waardes de verschillende variabelen hebben. Want dit zal waarschijnlijk toch een debug probleempje zijn. :)
Het is dus van webmensen.Nl, ik ga er dan denk ik maar zelf een maken :D

dankjewel allemaal!

MVG

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

Mja, het heeft zo onderhand wel lang genoeg geduurd... Samenvatting van het topic: debuggen. Zie hiervoor de links die ik al eerder heb gegeven; iets waarvan ik betwijfel of je ze hebt doorgenomen.

Verder betwijfel ik heel sterk of je dit script zelf hebt gemaakt; neem anders contact op met de originele makers voor support. Programming & Webscripting is niet bedoeld voor support op andermans scripts.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.