Vraag over foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP er

PHP er

15/01/2017 13:04:56
Quote Anchor link
Hoi,

Ben bezig met een scriptje met het scrapen van tekst:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
foreach($html->find('td[class=kc_cdcb]') as $e)
    echo $e->innertext . '<br>';
      

foreach($html->find('td[class=kc_cdtitle]') as $e)
    echo $e->innertext . '<br>';
        

foreach($html->find('td[class=kc_cdrt0]') as $e)
    echo $e->innertext . '<br>';
        


Het zijn 5 regels die hij scraped, maar nu gooit hij per 'categorie' de lijnen onder elkaar. Bijvoorbeeld:
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
kc_cdcb
kc_cdcb
kc_cdcb
kc_cdcb
kc_cdcb

kc_cdtitle
kc_cdtitle
kc_cdtitle
kc_cdtitle
kc_cdtitle

kc_cdrt0
kc_cdrt0
kc_cdrt0
kc_cdrt0
kc_cdrt0


Is het mogelijk om de output te krijgen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
kc_cdcb, kc_cdtitle, kc_cdrt0
kc_cdcb, kc_cdtitle, kc_cdrt0
kc_cdcb, kc_cdtitle, kc_cdrt0
kc_cdcb, kc_cdtitle, kc_cdrt0
kc_cdcb, kc_cdtitle, kc_cdrt0


Ik hoop dat iemand mij kan helpen.
Gewijzigd op 15/01/2017 13:06:12 door PHP er
 
PHP hulp

PHP hulp

20/04/2024 18:08:13
 
- SanThe -

- SanThe -

15/01/2017 13:34:21
Quote Anchor link
Als elke groep uit altijd hetzelfde aantal bestaat:
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
<?php
[code]<?php
$a
= array();
$b = array();
$c = array();
foreach($html->find('td[class=kc_cdcb]') as $e)
    $a[] = $e->innertext;
foreach($html->find('td[class=kc_cdtitle]') as $e)
    $b[] = $e->innertext;
foreach($html->find('td[class=kc_cdrt0]') as $e)
    $c[] = $e->innertext;
foreach($a as $key => $value)
    echo $value.','.$b[$key].','.$c[$key].'<br/>';
?>
Gewijzigd op 15/01/2017 13:35:18 door - SanThe -
 
PHP er

PHP er

15/01/2017 14:37:32
Quote Anchor link
- SanThe - op 15/01/2017 13:34:21:
Als elke groep uit altijd hetzelfde aantal bestaat:
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
[code]<?php
$a
= array();
$b = array();
$c = array();
foreach($html->find('td[class=kc_cdcb]') as $e)
    $a[] = $e->innertext;
foreach($html->find('td[class=kc_cdtitle]') as $e)
    $b[] = $e->innertext;
foreach($html->find('td[class=kc_cdrt0]') as $e)
    $c[] = $e->innertext;
foreach($a as $key => $value)
    echo $value.','.$b[$key].','.$c[$key].'<br/>';
?>

[/quote]

Yes, je hebt me erg geholpen! Thanks.

Nog een vraagje: hoe kan ik deze output nu verwerken in een mysql query, zodat ik deze in een table kan zetten?
 
- SanThe -

- SanThe -

15/01/2017 14:40:39
Quote Anchor link
Afhankelijk van je database structuur.
 
PHP er

PHP er

15/01/2017 14:53:57
Quote Anchor link
- SanThe - op 15/01/2017 14:40:39:
Afhankelijk van je database structuur.


Ik heb de velden kc_cdcb, kc_cdtitle, kc_cdrt0 in m'n tabel 'info' staan
 
- SanThe -

- SanThe -

15/01/2017 14:59:45
Quote Anchor link
En je wilt die gegevens er zo in zetten?
Dat kan dan toch gewoon met een "INSERT .... (..., .., ...) VALUES ('".$value."','".$b[$key]."','".$c[$key]."')".
Let wel op beveiliging.
 
PHP er

PHP er

15/01/2017 15:09:38
Quote Anchor link
- SanThe - op 15/01/2017 14:59:45:
En je wilt die gegevens er zo in zetten?
Dat kan dan toch gewoon met een "INSERT .... (..., .., ...) VALUES ('".$value."','".$b[$key]."','".$c[$key]."')".
Let wel op beveiliging.


Ik heb het geprobeerd, maar op de 1 of andere manier zet hij alleen de 5e entry er in.. :O
 
- SanThe -

- SanThe -

15/01/2017 15:15:12
Quote Anchor link
echo $querystring;
 
PHP er

PHP er

15/01/2017 15:22:21
Quote Anchor link
- SanThe - op 15/01/2017 15:15:12:
echo $querystring;



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$a = array();
$b = array();
$c = array();
foreach($html->find('td[class=kc_cdcb]') as $e)
    $a[] = $e->innertext;
foreach($html->find('td[class=kc_cdtitle]') as $e)
    $b[] = $e->innertext;
foreach($html->find('td[class=kc_cdrt0]') as $e)
    $c[] = $e->innertext;

foreach($a as $key => $value)
    $entry = 'INSERT INTO info (kc_cdcb, kc_cdtitle, kc_cdrt0) VALUES ("'.$value.'", "'.$b[$key].'", "'.$c[$key].'")';
mysql_query($entry);


Met deze lijn pakt die alleen regel5, ipv regel 1 t/m 4 er ook bij
 
- SanThe -

- SanThe -

15/01/2017 15:28:20
Quote Anchor link
Als je meer dan 1 regel achter een for(each),while() enz. wilt laten uitvoeren moet je { en } gebruiken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
foreach($a as $key => $value)
{

   $entry = 'INSERT INTO info (kc_cdcb, kc_cdtitle, kc_cdrt0) VALUES ("'.$value.'", "'.$b[$key].'", "'.$c[$key].'")';
   mysql_query($entry);
}

?>
 
- Ariën  -
Beheerder

- Ariën -

15/01/2017 16:19:49
Quote Anchor link
En verder zijn de gebruikte mysql-functies niet meer aan te raden omdat deze in PHP7 geschrapt zijn.
Ik kan aanraden om MySQLi te gebruiken of PDO. Bij sterke voorkeur raad ik de Object Oriënted (OO) versie van MySQLi aan.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/01/2017 16:44:51
Quote Anchor link
Accepteert die find() geen wildcard / patronen? Je rent nu namelijk 3x door de tekst heen, kan dat niet gereduceerd worden tot 1x? Van welke klasse is $html een object?
 



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.