login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mysql_fetch_array probleem (Opgelost)

Offline Allinfosrc - 02/08/2009 11:52 (laatste wijziging 02/08/2009 11:53)
Avatar van AllinfosrcNieuw lid Ik zelf ben een beetje aan het oefenen met databases nu wil ik dat er iemand een naam van een pokemon in typt(heb het met pokemonnamen) of een gedeelte er van intypt en dat alle resultaten daarvan worden getoond alleen er staat komt na het intypen een probleem er komt dan deze fout melding:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\xampp\htdocs\zoekmachine2.php on line 15
En hier is de code( ik heb de head en de html tags effe er niet bij gezet):
  1. <?php
  2. $db = mysql_connect("localhost","root","") or die ("Verbinding mislukt");
  3. mysql_select_db("pokemon",$db);
  4.  
  5. if(isset($_POST['verzenden'])){
  6. $pokemon=$_POST['pokemonnaam'];
  7. $query = mysql_query("SELECT * FROM begginner_pokemons WHERE Pokemon_naam = $pokemon");
  8. $data= mysql_fetch_array($query, MYSQL_BOTH);
  9. echo $data[Pokemon_naam];
  10. }else{
  11. ?>
  12. <form name="zoekmachine" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  13. Type hier de naam van een beginners pokemon(of gedeelte er van): <input type="text" name="pokemonnaam" /><br />
  14. <input type="submit" name="verzenden" value="Verzenden" />
  15. </form>
  16. <?php
  17. }
  18. ?>

18 antwoorden

Gesponsorde links
Offline Ultimatum - 02/08/2009 12:00 (laatste wijziging 02/08/2009 12:39)
Avatar van Ultimatum PHP expert Variable tussen quotes. Verander regel 7 naar dit.
  1. <?php
  2. $query = mysql_query("SELECT * FROM begginner_pokemons WHERE Pokemon_naam = '". $pokemon ."'") or die(mysql_error());
  3. ?>


MYSQL_BOTH is niet nodig als 2de parameter voor mysql_fetch_array, dus die zou je kunnen weglaten.

En bij de $_POST doe je wel de keys van de array tussen quotes maar bij de fetch_aray niet op regel 9?
  1. <?php
  2. $data['Pokemon_naam'];
  3. ?>
Offline Allinfosrc - 02/08/2009 12:38
Avatar van Allinfosrc Nieuw lid
Ultimatum schreef:
Variable tussen quotes. Verander regel 7 naar dit.
[..code..]

MYSQL_BOTH is niet nodig als 2de parameter voor mysql_fetch_array, dus die zou je kunnen weglaten.

En bij de $_POST doe je wel de keys van de array tussen quotes maar bij de fetch_aray niet op regel 9?
[..code..]

Werkt allebij niet.
Offline Ultimatum - 02/08/2009 12:40
Avatar van Ultimatum PHP expert Oke, in die eerste query zat een fout van mij. Maar iets meer info van 3 woorden (waarvan al 1 typfout) mag je ook wel geven. Door de mysql_error() zou je een foutmelding moeten krijgen. Zet anders een error_reporting(E_ALL); bovenaan je script net onder de <?php begin tag.
Offline Martijn - 02/08/2009 12:59 (laatste wijziging 02/08/2009 13:00)
Avatar van Martijn Crew PHP
  1. $query = mysql_query("SELECT * FROM begginner_pokemons WHERE Pokemon_naam = $pokemon");
Die * vervangen door de kolommen die je wilt selecteren, dat scheelt tijd
  1. $data= mysql_fetch_array($query, MYSQL_BOTH);

mysql_fetch_assoc($query); van maken, ook weer sneller
  1. echo $data[Pokemon_naam];

$data['Pokemon_naam'] van maken. Is hoofdletter gevoelig.

Dan, de error die je krijgt is omdat je query een fout heeft die met 'or die(mysql_error()); zichtbaar zou moeten worden. If not, kan ik je bij deze vertellen dat de fouty in je query bij $pokemon is.

Je moet dus doen WHERE naam = '$pokemon', want om een tekst moeten áltijd quotes
Offline Allinfosrc - 02/08/2009 13:29
Avatar van Allinfosrc Nieuw lid
DeviourSoul schreef:
Je moet dus doen WHERE naam = '$pokemon', want om een tekst moeten áltijd quotes

$pokemon is een geen stuk text maar een variabele dat kan je zien op regel 6 daar word die variabele aangemaakt.
dus kort het probleem is hier nog niet mee opgelost want ik had dat al geprobeerd en toen kwam er niks.
Offline Ultimatum - 02/08/2009 13:31
Avatar van Ultimatum PHP expert Heb je al naar de edit van mijn post gekeken, en wat is nou je foutmelding dan? Want hier schieten we niets mee op en zo gaan we ook niet je probleem kunnen oplossen.
Offline Allinfosrc - 02/08/2009 13:39
Avatar van Allinfosrc Nieuw lid
Ultimatum schreef:
Heb je al naar de edit van mijn post gekeken, en wat is nou je foutmelding dan? Want hier schieten we niets mee op en zo gaan we ook niet je probleem kunnen oplossen.

Ik heb mysql error nu toegevoegd dit komt er te staan:
Unknown column 'bulbasaur' in 'where clause'
Offline Martijn - 02/08/2009 15:01
Avatar van Martijn Crew PHP ja, als je nou is niet zo bijdehand doet en gewoon single quotes eromheen zet =/ Je probeert t nieteens.
Offline Borre - 03/08/2009 00:53
Avatar van Borre Nieuw lid
Allinfosrc schreef:
[..quote..]
Ik heb mysql error nu toegevoegd dit komt er te staan:
Unknown column 'bulbasaur' in 'where clause'


Dat wil zeggen dat de kolom 'bulbasaur' niet in je mysql database staat..
Offline djb - 03/08/2009 03:33
Avatar van djb PHP beginner
  1. $query = mysql_query("SELECT * FROM `begginner_pokemons` WHERE `Pokemon_naam` = '".$pokemon."'") or die (mysql_error());


Zo zou ik het doen,, zo weet weet je database precies wat een veld is en wat een string is  

Offline Ultimatum - 03/08/2009 07:27
Avatar van Ultimatum PHP expert
Borre schreef:
[..quote..]

Dat wil zeggen dat de kolom 'bulbasaur' niet in je mysql database staat..

Klopt en dat komt omdat je geen enkele quotes om je waarde heeft staan dus wilt hij dat gaan zoeken als kolom ipv een string. Hoe ziet je query er nu uit?

djb, dat maakt niets uit, het heeft met de enkele quotes te maken.
Offline Allinfosrc - 03/08/2009 09:51 (laatste wijziging 03/08/2009 09:52)
Avatar van Allinfosrc Nieuw lid Er is nog een probleem ik wil nu dat als je bijvoorbeeld b intypt alle namen waar een b inzit komt.
En dit is op het moment mijn query:
  1. mysql_query("SELECT * FROM `begginner_pokemons` WHERE `Pokemon_naam` = '".$pokemon."'") or die(mysql_error())
Offline Ultimatum - 03/08/2009 09:54
Avatar van Ultimatum PHP expert Iets duidelijker graag, wil je dat als je in een input veld een b intypt alle namen gelijk laat zien, dus met ajax? Of zoals hier bij sitemasters leden als je op de B drukt http://www.sitemasters.be/leden/b alle leden met een B begint ophaalt?

Je moet in iedergeval met LIKE werken.
Offline Martijn - 03/08/2009 11:21
Avatar van Martijn Crew PHP Jeetje, bleek t toch gewoon de single quotes te zijn.

WHERE naam LIKE '%".$pokemon."%'
Offline Allinfosrc - 03/08/2009 11:23 (laatste wijziging 03/08/2009 11:30)
Avatar van Allinfosrc Nieuw lid dankje voor die tip met like alleen nu wil ik alles laten tonen nu toont het alleen de eerste.
Offline ArieMedia - 03/08/2009 11:26
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Allinfosrc schreef:
gewoon dat als je dan B typt allenamen komen waar een B in zit.
Dus gewoon dat de string die je intypt en dan alle namen komen waar die string in zit hier een voor beeldje:
[url]http://www.pkmnomnidex.com/search.php?mode=select&info=[/url]
Ik heb daar de letter B ingetypt ik wil dus een soort gelijk systeem.
Je bent wel heel erg eigenwijs ofniet?
Ultimatum geeft het antwoord al.

  1. SELECT * FROM pokemon_zooi WHERE naam LIKE "%[zoekterm]%"
Offline radem205 - 03/08/2009 13:03 (laatste wijziging 03/08/2009 13:04)
Avatar van radem205 Nieuw lid
Allinfosrc schreef:
dankje voor die tip met like alleen nu wil ik alles laten tonen nu toont het alleen de eerste.


Ik denk dat je beter een beginnerscursus PHP & mySQL kan volgen, aangezien dit vragen zijn waarop het antwoord heel gemakkelijk te vinden is op internet.

Om alles te tonen moet je "while()" gebruiken. Zoek maar op google dan krijg je genoeg resultaten!
Offline Allinfosrc - 03/08/2009 16:18
Avatar van Allinfosrc Nieuw lid het is opgelost dankzij een paar en het boek wat ik in de middag had gehaald want daar stond ook zo iets in alleen zonder zoekopdracht.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.267s