Een uitdaging met PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel Hartman

Daniel Hartman

16/11/2011 14:02:25
Quote Anchor link
Hallo.

Ik heb een MySQL database met verschillende teksten erin;

-------------------------------
G ·#? >< Z*··R···$!··$!@4··$!X ·V·` /(···!·6!aQ z#`$z4`5-Eenheid: 60107q·6`:a ;3Adres: Normalaan 0=q·<` a#!2Plaats: Nieuwegein#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 14:20:39/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`
-------------------------------
E02 eenheid:1830@$adres: azielaan 420@%plaats: utrecht@ prio: p2@ tijd:12:26:06@)kaart@z*hoofdmenu@y,diagnose@p
-------------------------------
G · ? >; Z*·0%···R··0%·R··0%`*·X ·+ $(···!·1!aQ z#`$z4`5)Eenheid: 7q·6`:a ;6Adres: Dorpsstraat 67=q·<` a#!.Plaats: Wilnis#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 05:11:47/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`
--------------------------------

Zoals je kunt zien staat er iedere keer eenheid, adres, plaats, prio en tijd in. Ik wil die data die daarna staat apart in strings krijgen.
Hoe zou ik dit moeten doen?
De 3 verschillende vormen zoals hierboven komen steeds terug.

Iemand die mij kan helpen?

Met vriendelijke groet,
Daniel Hartman
 
PHP hulp

PHP hulp

21/11/2024 12:40:49
 
Marco PHPJunky

Marco PHPJunky

16/11/2011 14:26:10
Quote Anchor link
Hoe staat het in je database en hoe zet je het in je database ?
Hoe heb je het geprobeerd eruit te halen ?
 
- Ariën  -
Beheerder

- Ariën -

16/11/2011 14:28:06
Quote Anchor link
Hij zegt dat het op die manier in zijn database staat.

Ik ben benieuwd waar die data vandaan komt, is het niet handiger om het dan meteen goed in de database te plaatsen?
 
Daniel Hartman

Daniel Hartman

16/11/2011 14:31:59
Quote Anchor link
De data kan niet anders in de database geplaatst worden. Dit is hoe de data binnen komt en dit wordt rechtstreeks in de database geschreven dmv een simpel programmaatje.
 
Marco PHPJunky

Marco PHPJunky

16/11/2011 14:33:08
Quote Anchor link
ja dat dacht ik ook te lezen maar ik vraag het toch omdat het me anders een raar idee lijkt dat je er raar van op kijk dat het er dan zo uitkomt als het er ook zo in staat..
 
Daniel Hartman

Daniel Hartman

16/11/2011 14:37:05
Quote Anchor link
Ik kijk er niet vreemd van op.
Ik wil een PHP script maken waardoor alleen de data die ik nodig heb eruit komt.
De teksten komen zo bij mij binnen, ik kan hier niets aan veranderen.
 
- Ariën  -
Beheerder

- Ariën -

16/11/2011 14:42:04
Quote Anchor link
Wel een raar programma als die niet de tekst kan aanpassen.
 
Marco PHPJunky

Marco PHPJunky

16/11/2011 14:45:49
Quote Anchor link
oke kan je bij de database ?
krijg je ze preceis zo binnen zoals hierboven staat vermeld ?

Als het precies zo is zoals hierboven staat vraag ik me ook af met welke code ze het invoeren...
 
Daniel Hartman

Daniel Hartman

16/11/2011 15:06:04
Quote Anchor link
Ik haal deze meldingen uit de lucht.
Ik kan hier echt niets aan veranderen.
Het zal dus met de data moeten zoals die nu is.
 
- SanThe -

- SanThe -

16/11/2011 15:41:17
Quote Anchor link
Het slaat helemaal nergens op maar het was wel een leuk puzzeltje.

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
20
21
22
23
24
25
26
27
28
29
30
<?php
$arr
= array('G ·#? >< Z*··R···$!··$!@4··$!X ·V·` /(···!·6!aQ z#`$z4`5-Eenheid: 60107q·6`:a ;3Adres: Normalaan 0=q·<` a#!2Plaats: Nieuwegein#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 14:20:39/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`',
            'E02 eenheid:1830@$adres: azielaan 420@%plaats: utrecht@ prio: p2@ tijd:12:26:06@)kaart@z*hoofdmenu@y,diagnose@p',
            'G · ? >; Z*·0%···R··0%·R··0%`*·X ·+ $(···!·1!aQ z#`$z4`5)Eenheid: 7q·6`:a ;6Adres: Dorpsstraat 67=q·<` a#!.Plaats: Wilnis#q· `&a% (Prio: P2)q·(`,a*-.Tijd: 05:11:47/q·.`2a03%KAART5q 4`8a19)HOOFDMENU;q~:`>a3?(DIAGNOSEAq}@`');

$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
foreach($arr as $val)
{

    echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
    echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}

?>


Uitvoer is dit:

Quote:
Eenheid: 60107
Adres: Normalaan 0
Plaats: Nieuwegein
Prio: P2
Tijd: 14:20:39
Eenheid: 1830
Adres: azielaan 420
Plaats: utrecht
Prio: p2
Tijd: 12:26:06@
Eenheid: 7
Adres: Dorpsstraat 67
Plaats: Wilnis
Prio: P2
Tijd: 05:11:47
 
- Ariën  -
Beheerder

- Ariën -

16/11/2011 15:43:17
Quote Anchor link
Hoelang heb je er over gepuzzeld? ;-)
 
Daniel Hartman

Daniel Hartman

16/11/2011 15:48:18
Quote Anchor link
Kan ik dit nu ook uit de MySQL database halen?
 
- SanThe -

- SanThe -

16/11/2011 15:49:30
Quote Anchor link
- Aar - op 16/11/2011 15:43:17:
Hoelang heb je er over gepuzzeld? ;-)


Geen idee, half uurtje, uurtje?
Ik hou wel van dit soort onzinnige uitdagingen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/11/2011 15:50:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
while ($row = mysql_fetch_assoc($result)) {
    $start = strpos($row['veldnaam'], 'Eenheid:') + 9;
    $end = strpos($row['veldnaam'], 'q.', $start) - 1;
    $eenheid = trim(substr($row['veldnaam'], $start, $end-$start));
    //enzovoort
}
?>
 
- SanThe -

- SanThe -

16/11/2011 15:50:45
Quote Anchor link
Daniel Hartman op 16/11/2011 15:48:18:
Kan ik dit nu ook uit de MySQL database halen?


Ja. $arr is in mijn script hetzelfde als drie records uit de database. Even aanpassen dus.
 
Daniel Hartman

Daniel Hartman

16/11/2011 15:53:28
Quote Anchor link
Ik heb nu dit, maar ik krijg er niets uit...
Wat doe ik verkeerd?

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
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$result
= mysql_query("SELECT * FROM  `alarmeringen` WHERE  `melding` LIKE  '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());  

$arr = array($row['melding']);

$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));
foreach($arr as $val)
{

    echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
    echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}


?>


Uiteraard ook een verbinding met de database!
Gewijzigd op 16/11/2011 15:54:00 door Daniel Hartman
 
- SanThe -

- SanThe -

16/11/2011 15:57:59
Quote Anchor link
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
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$result
= mysql_query("SELECT * FROM  `alarmeringen` WHERE  `melding` LIKE  '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());  

$char = array_merge(range(ord('a'),ord('z')),range(ord('A'),ord('Z')),range(ord('0'),ord('9')),array(32));

while($row = mysql_fetch_assoc($result))
{

    $val = $row['melding'];
    echo 'Eenheid: ' . intval(substr($val, strpos(strtolower($val), 'eenheid:')+8)) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'adres:')+6);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Adres: ' . substr($hlp, 0, $i) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'plaats:')+7);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Plaats: ' . substr($hlp, 0, $i) . '<br />';
    $hlp = substr($val, strpos(strtolower($val), 'prio:')+5);
    for($i=0;$i<strlen($hlp);$i++)
    {

        if(!in_array(ord($hlp[$i]), $char, true)) break;
    }

    echo 'Prio: ' . substr($hlp, 0, $i) . '<br />';
    echo 'Tijd: ' . (substr($val, strpos(strtolower($val), 'tijd:')+5, +9)) . '<br />';
}

?>
 
Maikel  B

Maikel B

16/11/2011 15:59:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$result
= mysql_query("SELECT * FROM  `alarmeringen` WHERE  `melding` LIKE  '%Eenheid%' ORDER BY timestamp DESC LIMIT 3")
or die(mysql_error());  

$arr = array($row['melding']);
?>


Hoe kom je bij $row['melding']?
Je query variabele is $result en geen $row
Een gebruik geen * maar alleen de velden die je wilt ophalen.

EDIT: SanThe was eerder
Gewijzigd op 16/11/2011 16:00:24 door Maikel B
 
Daniel Hartman

Daniel Hartman

16/11/2011 19:07:39
Quote Anchor link
Iedereen heel erg bedankt voor de hulp! Het is gelukt, en werkt perfect.

Dankjulliewel!
 



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.