Toon posts:

[MySQL]Fout?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben pas net begonnen met PHP en MySQL, dus waarschijnlijk zal ik wel weer een hele domme fout gemaakt hebben.

Ik heb een database: namen
Deze bestaat uit 3 kolommen: naam, uitleg, letter
'naam' bevat natuurlijk de naam, 'uitleg' de betekenis van die naam en 'letter' de beginletter van de naam.
De kolom letter heb ik gemaakt, zodat het mogelijk is om alle namen die met een letter (bijv. A) beginnen te weergeven. (hier zal vast wel een makkelijker manier voor zijn, maarja).

Nu heb ik deze code:

<?php

$database_server = mysql_connect();

mysql_select_db("namen", $database_server);

$sql = "SELECT * FROM naam WHERE letter = 'A' ORDER BY naam ASC";

$resultaat = mysql_query($sql);

echo "$resultaat";

while ($record = mysql_fetch_object($resultaat)) {
echo "<b>$record->naam</b>,
$record->uitleg<BR>\n";
}
?>

Het moet ervoor zorgen dat het alle namen die beginnen met een A weergeeft (in alfabetische volgorde).
Maar nu krijg ik deze foutmelding:

Warning: Supplied argument is not a valid MySQL result resource in /home/sites/site23/web/naam/naam.php on line 15

Regel 15 is trouwens: while ($record = mysql_fetch_object($resultaat)) {

Wat heb ik fout gedaan?

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Volgens mij heb je het hele datebase-principe door elkaar gehaald.

Een datebase bestaat uit meerdere tabellen. Die tabellen bestaan weer uit kolommen. Jij hebt nu voor iedere kolom een aparte tabel gemaakt en dat is roepen om problemen.

Hieronder nog even een schema:
code:
1
2
3
4
5
6
7
8
9
10
- database
  - tabel1
     - kolom1
     - kolom2
     - etc.
  - tabel2
     - etc.
- database2
  - tabel1
    ...

Trouwens om de eerste letter van een naam te bepalen kun je ook de MySQL-functie SUBSTR() gebruiken.

edit: Schema ter verduidelijking toegevoegd.

Verwijderd

Topicstarter
Stom |:(
Maar er komt nog steeds dezelfde fout.
Ff overnieuw:

Heb nu een database: namen
Deze bevat 1 tabel: naam
En die tabel bevat 3 kolommen: naam, uitleg, letter

De code:

<?php

$database_server = mysql_connect();

mysql_select_db("namen", $database_server);

$sql = "SELECT * FROM naam WHERE letter = 'A' ORDER BY naam ASC";

$resultaat = mysql_query($sql);

echo "$resultaat";

while ($record = mysql_fetch_object($resultaat)) {
echo "<b>$record->naam</b>,
$record->uitleg<BR>\n";
}
?>

Nog steeds dezelfde fout :( Of ben ik nog steeds helemaal verkeerd bezig?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
doe eens dit
code:
1
mysql_query($sql) or die(mysql_error());

ipv
code:
1
mysql_query($sql);

Verwijderd

Topicstarter
Snap er helemaal niks meer van. :(
Ik heb gedaan wat Orphix zei en nu krijg ik dit:

No Database Selected

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
code:
1
$database_server = mysql_connect();

Misschien zit hier de fout? mysql_connect() kent namelijk een paar argumenten om verbinding te maken... zie ook de PHP manual. (of heb je de argumenten weggehaald in verband met passwords/gevoelige data enzo?)

Btw, misschien is het handig als je je code voortaan tussen [ code ] en [/ code ] zet (of tussen [ php] en [/ php])

Verwijderd

PHP:
1
2
3
4
5
6
7
<?
$link = mysql_connect('je host naam', 'je user naam', 'je password');

/* voorbeeld:
$link = mysql_connect('mysql.jouwdomain.nl', 'ikkuh', 'password');
*/
?>

Maar no database selected geeft aan dat je probleem zit in de mysql_select_db opdracht.

Probeer eens
PHP:
1
2
3
<?
$connect = mysql_select_db("namen", $link);
?>

Bedenk wel dat wanneer je server niet is geconnect, je natuurlijk nooit een database kunt selecteren!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je tabel en je kolom heten naam.
Dit is niet handig.

probeer maar eens "order by 1" ipv "order by naam asc"

asc is trouwens default en hoeft niet genoemd te worden.

Kan je in het vervolg ook je code tussen code of php tags zetten, dat leest en formateert wat makkelijker.

Verwijderd

Topicstarter
Het is opgelost.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op maandag 11 februari 2002 14:57 schreef Sunny het volgende:
Het is opgelost.
Misschien is het ook nog handig om even te zeggen waar het aan lag. Dan hebben mensen die de search gebruiken er ook nog wat aan.

Verwijderd

Topicstarter
Heb eerst
code:
1
mysql_query($sql) or die(mysql_error());

ipv
code:
1
mysql_query($sql);

gedaan. Daarna heb ik aan mysql_connect() argumenten toegevoegd (hosting,username, paswoord).
Pagina: 1