Resource id #5
$test = mysql_query("SELECT * FROM website ORDER BY id DESC LIMIT 0,1");
echo $test;
en het lukt niet:s, ziet iemand mijn fout?
En de melding die je krijgt is helemaal mooi. Er is resultaat teruggekomen van je query. Omdat deze resultaten nog direct gebruikt kunnen worden moet deze eerst nog gefetchd worden.
Hiervoor zijn verschillende mogelijkheden:
- fetch_array (geeft een array terug met kolomnaam en volgnummer)
- fetch_assoc (geeft een array terug met kolomnaam)
- fetch_object (geeft een object terug met kolomnaam)
Normaal fetch je in een while loop [while($row = mysql....) {} ] maar omdat je nu maar één resultaat hebt hoe je ook maar één keer te fetchen. Dus:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// jouwcode ......
$row = mysql_fetch_assoc($test);
echo $row['websitenaam']; // merk op dat je websitenaam moet vervangen door de naam van een tabel.
print_r($row); // geeft een overzicht van alle kolomen met daarbij behorende waarde
?>
// jouwcode ......
$row = mysql_fetch_assoc($test);
echo $row['websitenaam']; // merk op dat je websitenaam moet vervangen door de naam van een tabel.
print_r($row); // geeft een overzicht van alle kolomen met daarbij behorende waarde
?>
Aanvulling: in de praktijk heb je het meeste aan mysql_fetch_assoc, qua gebruiksvriendelijkheid en snelheid. mysql_fetch_object is een factor 2 trager.
ik zou graag op mijn website een random werk laten verschijnen, ik had gedacht om door middel van een random getal te werken :
$i= rand(0, count($test));
Hierna zou hij het getal $i, uit de tabel moeten halen en dat weergeven. ( de titel, de uitleg van dat nummer die in de db zitten.)
Hoe zou ik dat dan doen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Eerst gaan we alle records ophalen
$sql = "SELECT * FROM tabel";
$resultaat = mysql_query($sql);
// Hier komen alle records in
$records = array();
while($record = mysql_fetch_assoc($resultaat))
{
// De record toevoegen aan de record array;
$records[] = $record;
}
// Aantal records
$aantal = count($records);
$aantal --; // Want array begint op 0
// Pak een random
$record = $records[rand(0,$aantal)];
// Print array met record:
print_r($record);
?>
// Eerst gaan we alle records ophalen
$sql = "SELECT * FROM tabel";
$resultaat = mysql_query($sql);
// Hier komen alle records in
$records = array();
while($record = mysql_fetch_assoc($resultaat))
{
// De record toevoegen aan de record array;
$records[] = $record;
}
// Aantal records
$aantal = count($records);
$aantal --; // Want array begint op 0
// Pak een random
$record = $records[rand(0,$aantal)];
// Print array met record:
print_r($record);
?>
Gewijzigd op 01/01/1970 01:00:00 door JvG G
Jullie kunnen het resultaat al bekijken op klik, ik ben er nog aan bezig dus er kan hier en daar wel eens een foutje inzitten.
Gewijzigd op 01/01/1970 01:00:00 door wouter reyntjens
<title>Untitled Document</title>
Ik had al gelezen dat er nog hard aan wordt gewerkt.
Succes verder.
Bedankt:p
PHP:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
mysql_connect('localhost','root', '');
mysql_select_db('werk');
$results = mysql_query('SELECT `Naam` FROM `werknemers`');
$row = mysql_fetch_assoc($results);
echo $row['werk'];
print_r($row);
?>
mysql_connect('localhost','root', '');
mysql_select_db('werk');
$results = mysql_query('SELECT `Naam` FROM `werknemers`');
$row = mysql_fetch_assoc($results);
echo $row['werk'];
print_r($row);
?>
Uitkomst:
Array ([Naam] => Snoek )
Als iemand mij kan helpen, heel graag!
- Backticks in je query.
- Ontbrekende foutafhandeling.
- Geen controle of er wel records uit de database opgehaald zijn.
- Geen while loop waarin je de resultaten fetched.
- Je gebruikt $row['werk'] terwijl je de kolom niet ophaalt in je query.
Beter zou zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sQuery = "
SELECT naam
FROM werknemers
";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
while($row = mysql_fetch_assoc($rResult))
{
echo $row['naam'].'<br />';
}
}
?>
$sQuery = "
SELECT naam
FROM werknemers
";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
while($row = mysql_fetch_assoc($rResult))
{
echo $row['naam'].'<br />';
}
}
?>
Maar nu heb ik dus met een optie geen rekening gehouden, het is de bedoeling dat de namen onder elkaar in een select lijstje komen, nu staan ze dus allemaal naast elkaar.
Dat had ik opzich van te voren kunnen bedenken, maar tja :(
Is er een manier omdat nog goed voor elkaar te krijgen?
Maar nu heb ik dus met een optie geen rekening gehouden, het is de bedoeling dat de namen onder elkaar in een select lijstje komen, nu staan ze dus allemaal naast elkaar.
Dat had ik opzich van te voren kunnen bedenken, maar tja :(
Is er een manier omdat nog goed voor elkaar te krijgen?
Code (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
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
<?php
$sQuery = "
SELECT
id,
naam
FROM werknemers
";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
echo '<select name="naam">';
while($row = mysql_fetch_assoc($rResult))
{
echo '<option value="'.$row['id'].'">'.$row['naam'].'</option>';
}
echo '</select>';
}
?>
$sQuery = "
SELECT
id,
naam
FROM werknemers
";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
echo '<select name="naam">';
while($row = mysql_fetch_assoc($rResult))
{
echo '<option value="'.$row['id'].'">'.$row['naam'].'</option>';
}
echo '</select>';
}
?>
Zoiets zal dat bijvoorbeeld worden.
Nu heb ik nog 1 vraag, ik wil dat hij die naam onthoud voor een volgende pagina waarin de uren voor dat personeelslid weer weg worden geschreven naar een andere tabel. Kan ik hem nu gewoon een name meegeven? Waar doe ik dat binnen die echo statements?
Chilion
Gewijzigd op 01/01/1970 01:00:00 door John Cena
Ik kan niet ruiken hoe jouw datamodel eruit ziet ;-)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche schreef op 29.01.2008 11:17:
De query is natuurlijk maar een voorbeeld, die moet je wel even naar je eigen situatie aanpassen...
Ik kan niet ruiken hoe jouw datamodel eruit ziet ;-)
Ik kan niet ruiken hoe jouw datamodel eruit ziet ;-)
Bedankt man, alles werkt nu naar behoren :D
Ik ga nu ff stoeien met het registreren van de uren van de werknemers die hij vervolgens weer in SQL moet gaan plaatsen :)
Stay alerted, ik heb vast straks weer een vraag :P Ben beginnend PHP'r ;)
Chilion
Ik heb grotendeels jou text overgenomen, dit heb ik er nu staan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
mysql_connect('localhost','root', '');
mysql_select_db('werk');
$sQuery = "SELECT personeelsnummer, naam FROM werknemers";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
echo '<select name="naam">';
while($row = mysql_fetch_assoc($rResult))
{
echo '<option value="'.$row['id'].'">'.$row['naam'].'</option>';
}
echo '</select>';
}
?>
mysql_connect('localhost','root', '');
mysql_select_db('werk');
$sQuery = "SELECT personeelsnummer, naam FROM werknemers";
if(!$rResult = mysql_query($sQuery))
{
trigger_error(mysql_error().'<br />In query: '.$sQuery);
}
elseif(mysql_num_rows($rResult) == 0)
{
trigger_error('Geen records opgehaald met query: '.$sQuery);
}
else
{
echo '<select name="naam">';
while($row = mysql_fetch_assoc($rResult))
{
echo '<option value="'.$row['id'].'">'.$row['naam'].'</option>';
}
echo '</select>';
}
?>
De select heeft een naam, dat is "naam", alleen wanneer ik hem verzend (submitknop) dan blijft POST[naam] leeg ofzo. Hij laat tenminste niks zien wanneer ik de variable uit laat draaien.
Hoe kan dit? Komt het doordat de naam nu in PHP staat? Dat mag niks uitmaken toch?
Mod-edit:
Bumpen
Bumpen binnen 24 uur is niet toegestaan. Gebruik tot die tijd je edit knopje om je bericht aan te passen.
(Bumpen is het herhaaldelijk plaatsen van reacties op een thread of onderwerp in een internetforum teneinde deze thread bovenaan de lijst te houden zodat het langer onder de aandacht van de bezoekers blijft. Dit wordt meestal als irritant ervaren en daardoor niet geaccepteerd door de moderator(s) van het forum waardoor degene die bumpt een waarschuwing of ban kan krijgen. Ook kan de gebumpte thread gesloten worden, wat inhoudt dat er geen reacties meer aan toegevoegd kunnen worden. bron:WikiPedia)
Bumpen binnen 24 uur is niet toegestaan. Gebruik tot die tijd je edit knopje om je bericht aan te passen.
(Bumpen is het herhaaldelijk plaatsen van reacties op een thread of onderwerp in een internetforum teneinde deze thread bovenaan de lijst te houden zodat het langer onder de aandacht van de bezoekers blijft. Dit wordt meestal als irritant ervaren en daardoor niet geaccepteerd door de moderator(s) van het forum waardoor degene die bumpt een waarschuwing of ban kan krijgen. Ook kan de gebumpte thread gesloten worden, wat inhoudt dat er geen reacties meer aan toegevoegd kunnen worden. bron:WikiPedia)
Gewijzigd op 01/01/1970 01:00:00 door John Cena