login  Naam:   Wachtwoord: 
Registreer je!
 Forum

array met 1 waarde

Offline Stefan14 - 09/04/2007 16:14
Avatar van Stefan14PHP gevorderde Kan er in een array niet zomaar net 1 waarde aanwezig zijn?

als ik 1 waarde in de array zet, dan geeft hij niets met print_r, zet ik er 2 waardes in, dan geeft hij hem keurig weer.

Dit is om een productenarray af te lopen, maar het kan natuurlijk ook dat de klant maar 1 product heeft, dan moet die ook gewoon weergegeven worden.

6 antwoorden

Gesponsorde links
Offline phpfreak - 09/04/2007 16:30 (laatste wijziging 09/04/2007 16:31)
Avatar van phpfreak PHP beginner bij mij geeft hij het ook juist weer met 1 waarde in array, zeker dat je alles juist hebt ingevoert? Lijkt me ook logisch dat het maar 1 waarde kan hebben, heb er nooit problemen mee gehad
Offline Stefan14 - 09/04/2007 16:34 (laatste wijziging 09/04/2007 16:36)
Avatar van Stefan14 PHP gevorderde ik heb dit stukje code
  1. <?php
  2. $artikelarray = array(1);
  3.  
  4. print_r($artikelarray);
  5. ?>


en dit werkt wel, eerst stond print_r helemaal onderaan het script alhoewel er niets aan $artikelarray werd veranderd deed hij dan blijkbaar niet.
Goed is dat in ieder geval al 1 probleempje opgelost.

tweede probleem:
Ik wil deze invoeren in een query, maar hij geeft terug als error "Query was empty"

  1. <?php
  2. $query1 = "SELECT
  3. prijs
  4. FROM
  5. artikelen
  6. WHERE
  7. id = ".$artikelarray;
  8. $result1 = mysql_query($result1) or die (mysql_error());
  9. ?>
Offline ikkedikke - 09/04/2007 16:45
Avatar van ikkedikke PHP expert WHERE
id IN(".implode(',',array_map('addslashes',$artikelarray)).")";

Hier moet je een heel eind mee komen.
Offline Stefan14 - 09/04/2007 16:51 (laatste wijziging 09/04/2007 20:38)
Avatar van Stefan14 PHP gevorderde @ikkedikke, ik heb het geprobeerd, maar ook hier dezelfde foutmelding.

daarnaast heb ik implode natuurlijk niet echt nodig aangezien er maar 1 waarde is.

ik controleer namelijk of er 1 waarde in de array staat of meerdere, dus er worden 2 aparte query's uitgevoerd voor 1 of meerdere waardes.

EDIT: ik heb de query geëchoet,

  1. <?php
  2. if (count($artikelarray) == 1) //sprake van 1 product
  3. {
  4. $query1 = "SELECT
  5. prijs
  6. FROM
  7. artikelen
  8. WHERE
  9. id = ".$artikelarray[0];
  10. echo($query1);
  11. $result1 = mysql_query($result1) or die (mysql_error());
  12. }
  13. ?>


hier kwam het volgende uit:
SELECT prijs FROM artikelen WHERE id = 1Query was empty

dus als iemand het snapt mag hij het zeggen, maar voor mij houdt het op.

EDIT:
tabelstructuur
  1. CREATE TABLE `artikelen` (
  2. `id` int(11) NOT NULL auto_increment,
  3. `artikelnummer` int(11) NOT NULL,
  4. `naam` varchar(255) NOT NULL,
  5. `prijs` decimal(10,2) NOT NULL,
  6. `marge` decimal(10,2) NOT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='tabel waar alle artikelen in staan.' AUTO_INCREMENT=2 ;
  9.  
  10. --
  11. -- Gegevens worden uitgevoerd voor tabel `artikelen`
  12. --
  13.  
  14. INSERT INTO `artikelen` (`id`, `artikelnummer`, `naam`, `prijs`, `marge`) VALUES (1, 1156, 'testproduct 1', 11.52, 1.05);


EDIT: ik heb de oplossing eindelijk gevonden! echt van die fouten waar je uren naar aan het zoeken bent en je jezelf wel voor van kant wil maken.
Ik had ingevoerd, mysql_query($result1) wat uiteraard mysql_query($query1) moest zijn 
Offline ikkedikke - 10/04/2007 12:53
Avatar van ikkedikke PHP expert Het enige dat mijn aanpassing deed was de array omzetten naar een string en als er meerdere waarden zijn, er een komma tussen zetten.
Offline Thomas - 10/04/2007 13:42
Avatar van Thomas Moderator Je zet altijd waarden in een array.

Die "1" staat dus op index 0.

Als je doet:
  1. $test = array(1);


Dan ziet dit array er als volgt uit:
  1. 0 => 1
  2. )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.243s