row uitlezen van tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Gerrit Wiersma

Gerrit Wiersma

24/07/2010 22:51:13
Quote Anchor link
Hallo, ik loop tegen een probleempje aan, ik heb de volgende tabel:

CREATE TABLE `uitslagen` (
`id` int(11) NOT NULL auto_increment,
`jaartal` varchar(255) NOT NULL,
`vluchtcode` varchar(255) NOT NULL,
`plaats` varchar(255) NOT NULL,
`uitslag` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

als ik uitslag.php?jaartal=2010 doe, dan wil ik alle rows met het jaar 2010 hebben,
en als ik uitslag.php?jaartal=2009 doe, dan wil ik alle rows waar als jaartal 2009 staat zichtbaar hebben etc,

Hoe doe ik dit.
Gewijzigd op 25/07/2010 16:15:21 door Gerrit Wiersma
 
PHP hulp

PHP hulp

29/03/2024 08:43:04
 
Jeroen Spaans

Jeroen Spaans

24/07/2010 23:01:36
Quote Anchor link
Gerrit Wiersma op 24/07/2010 22:51:13:

$query = "SELECT * FROM uitslagen where jaartal = $_get['jaartal']";


Probeer eens:

$query = "SELECT * FROM uitslagen WHERE jaartal = '".$_GET['uitslag']."'";
Gewijzigd op 24/07/2010 23:02:49 door Jeroen Spaans
 
Stefan Renne

stefan Renne

24/07/2010 23:03:04
Quote Anchor link
is toch niet zo moeilijk?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (isset($_GET['uitslag'])){
$query = "SELECT * FROM uitslagen WHERE jaar='$_GET[uitslag]'";
}else{
$query = "SELECT * FROM uitslagen";
}
 

24/07/2010 23:05:05
Quote Anchor link
Lieve god.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.
 
Noppes Homeland

Noppes Homeland

24/07/2010 23:05:11
Quote Anchor link
Tip 1: gebruik de InnoDB engine ipv MyISAM
Tip 2: gebruik mysql_fetch_assoc ipv de _fetch_array
Tip 3: superglobals zijn gedefinieerd in hoofdletters $_get[] <> $_GET[]
Tip 4: pas op voor sql-injectie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sWhereClause
= '';

if (isset($_GET['jaartal']) && ctype_digit($_GET['jaartal']) {
    $sWhereClause = "WHERE jaartal = ".mysql_real_escape_string($_GET['jaartal']);
}


$sql = "SELECT *
        FROM   uitslagen "
.$sWhereClause;

if (($result = mysql_query($sql)) == false) {
   echo mysql_error().'<br />'.$sql;
}

else {
   while ($row = mysql_fetch_assoc($result)) {
      print_r($row);
   }
}

?>
 
Stefan Renne

stefan Renne

24/07/2010 23:07:18
Quote Anchor link
Karl Karl op 24/07/2010 23:05:05:
Lieve god.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.


jij doelt om sql injections?
 

24/07/2010 23:08:49
Quote Anchor link
En selecteer dan ook nog eens wat je wilt hebben. Sterretje is een wildcard, dus de db mag net zo goed niks terug geven. Ook is het nog eens duidelijker, voor later. Dat is het mooie aan SQL het documenteert zichzelf, want je kunt zien wat je selecteerd.

Stefan Renne op 24/07/2010 23:07:18:
Karl Karl op 24/07/2010 23:05:05:
Lieve god.
Alsjeblieft.
Ga allemaal eerst eens een handleiding lezen ofzo.
mysql_Real_escape_string.


jij doelt om sql injections?

Ja, en om ongeldige data.
Gewijzigd op 24/07/2010 23:09:31 door
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 10:16:44
Quote Anchor link
Bedankt heren voor de reacties maar ben nog geen streep verder, nog steeds een wit scherm met helemaal niks ;)
 

25/07/2010 10:17:59
Quote Anchor link
Selecteer ook wat je wilt hebben en plaats bovenaan in elk script:
error_reporting(E_ALL);
ini_set('display_errors', 1);
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 10:21:22
Quote Anchor link
het is trouwens de bedoeling dat als ik op link: uitslag_uitlezen.php?jaartal=2010 klik, ik dan een scherm met linkjes van uitslagen in 2010 krijg, het uitlezen daarvan snap ik wel.

Ik zal het er eens in zetten Karl ;)
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 10:24:20
Quote Anchor link
Dit kwam er uit :)

Notice: Undefined index: uitslag in /customers/gwmedia.nl/gwmedia.nl/httpd.www/degraaf/uitlezen_jaartal.php on line 48

en dan op regel 48 staat:

$query = "SELECT * FROM uitslagen WHERE jaartal = '".$_GET['uitslag']."'";
 
Noppes Homeland

Noppes Homeland

25/07/2010 11:04:11
Quote Anchor link
Herhaling van wat ik eerder gepost heb maar dan nu met de uitslag parameter

Noppes Homeland op 24/07/2010 23:05:11:
Tip 1: gebruik de InnoDB engine ipv MyISAM
Tip 2: gebruik mysql_fetch_assoc ipv de _fetch_array
Tip 3: superglobals zijn gedefinieerd in hoofdletters $_get[] <> $_GET[]
Tip 4: pas op voor sql-injectie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sWhereClause
= '';

if (isset($_GET['uitslag']) && ctype_digit($_GET['uitslag']) {
    $sWhereClause = "WHERE jaartal = ".mysql_real_escape_string($_GET['uitslag']);
}


$sql = "SELECT *
        FROM   uitslagen "
.$sWhereClause;

if (($result = mysql_query($sql)) === false) {
   echo mysql_error().'<br />'.$sql;
}

else {
   while ($row = mysql_fetch_assoc($result)) {
      print_r($row);
   }
}

?>




Blijkbaar vergeet je nog steeds te controleren en te validaren
Gewijzigd op 25/07/2010 15:22:25 door Noppes Homeland
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 15:20:07
Quote Anchor link
Thanks, nog maar eens even proberen :)
 
Remco nvt

Remco nvt

25/07/2010 15:44:18
Quote Anchor link
Tip 1: gebruik de InnoDB engine ipv MyISAM

Mag je negeren ;) Ligt totaal aan je database ontwerp.
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 15:54:06
Quote Anchor link
pardon? leg eens uit ?
 
Noppes Homeland

Noppes Homeland

25/07/2010 16:25:28
Quote Anchor link
Negeer Remco maar, die weet blijkbaar niet beter

Alleen als je een fulltext search wilt doen dan zal je de MyISAM engine nodig hebben voor de tabel

MySQL InnoDB engine is de enige waarbij je redelijkerwijs een relationele database kan opzetten
 
Aad B

Aad B

25/07/2010 16:32:59
Quote Anchor link
Het verschil tussen InnoDB en MyIsam heeft functioneel gezien geen fluit met relationele databases en het redelijkerwijs opzetten daarvan te maken. Je kan met beide (storage!) engines dezelfde relationele databases opzetten en zolang je geen 250 transacties per seconde te verwerken hebt maakt het geen verschil. Enne ik verneem graag onderbouwde tegenargumenten.
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 16:45:00
Quote Anchor link
heren, allemaal erg bedankt, ben weer tot nieuw inzichten gekomen ;)

mijn oplossing is de volgende :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$jaartal
= "'" . mysql_real_escape_string ( $_GET['jaartal']) . "'";
$query = "SELECT * FROM uitslagen WHERE jaartal = " . $jaartal;
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
?>


werkt prima, bedankt allemaal.
 
Noppes Homeland

Noppes Homeland

25/07/2010 16:47:53
Quote Anchor link
MyIsam ondersteunt geen transacties!

@Gerrit Wiersma
Op deze manier ben je weer terug bij af:
controle en validatie ontbreekt!

je kan dan net zo goed doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "SELECT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];
?>
Gewijzigd op 25/07/2010 17:01:14 door Noppes Homeland
 
Aad B

Aad B

25/07/2010 16:51:34
Quote Anchor link
@Noppes: "MyIsam ondersteunt geen transacties" Wat is een transactie ?
Update table set veld = NOW() is een elementaire transactie. We kunnen nu wel gaan kiften over de definitie van een transactie maar nogmaals het is niet zinvol om tegen iemand te roepen: Tip 1: gebruik de InnoDB engine ipv MyISAM

The only advantage InnoDB has over MyISAM is that it supports row locking, while MyISAM only supports table locking. Therefore, if lots of reads and writes are constantly being done to a very large table, it eliminates the constant database errors that using a MyISAM table would cause from the overload. InnoDB would therefore be a tad more reliable when you don't mind taking a small performance hit in exchange for not suffering from table locking issues. To achieve a very high lock speed, MySQL uses table locking (instead of page, row, or column locking) for all storage engines except InnoDB, BDB, and NDBCLUSTER.
Gewijzigd op 25/07/2010 16:54:51 door Aad B
 
Gerrit Wiersma

Gerrit Wiersma

25/07/2010 16:54:50
Quote Anchor link
als ik die

$sql = "SELCT * FROM uitslagen where jaartal = ".mysql_real_escape_string($_GET['uitslag'];

er in pleur werkt het niet xD
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.