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
Kan ik dit nu ook uit de MySQL database halen?
- 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.
<?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
}
?>
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.
Ik heb nu dit, maar ik krijg er niets uit...
Wat doe ik verkeerd?


<?
$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!
<?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 />';
}
?>
<?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
Iedereen heel erg bedankt voor de hulp! Het is gelukt, en werkt perfect.

Dankjulliewel!

Reageren