PHP: Laatse geen , & afkortingen niet vinden

Gestart doorDylan13 reacties43 weergaven

14 berichten · pagina 1 van 1

Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Hoi,

Hoe doe je dat ook alweer, dat wanneer je een array hebt en je weergeeft alles met een , er tussen behalve de laatste?

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13

$route = ;
$nummer = 0;
$stations = explode(,, $xml->VertrekkendeTrein[$i]->RouteTekst);

for($a = 0; $a < count($stations); $a++) {
$a_query = mysqli_query($link, "SELECT code FROM station WHERE fullname = ".mysqli_real_escape_string($link, $stations[$a])." OR midname = ".mysqli_real_escape_string($link, $stations[$a])." OR smallname = ".mysqli_real_escape_string($link, $stations[$a])." LIMIT 1");
$a_fetch = mysqli_fetch_assoc($a_query);
if(count($stations) == 1) {
$route .= .$stations[$a].;
} else {
$route .= .$stations[$a].,;
}
}

Het was iets als $nummer gelijk is aan count($stations); alleen werkt dat niet?
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
je kan iets doen als

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7

foreach($array as $key => $value) {

if(end($array) == $value)) { } // altijd goed

if(count($array)-1 = $key)) { } // iets sneller, maar vereist dat de array is opgebouwd 0,1,2,3 en zo door. Bij voorkeur count($array) voor de loop uitvoeren

}

En dan
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Rogier schreef:
je kan iets doen als
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7

foreach($array as $key => $value) {

if(end($array) == $value)) { } // altijd goed

if(count($array)-1 = $key)) { } // iets sneller, maar vereist dat de array is opgebouwd 0,1,2,3 en zo door. Bij voorkeur count($array) voor de loop uitvoeren

}

En dan

Thanks het werkt. Heb nu nog een probleem namelijk, ik heb deze query:

Codeblok (voorbeeld.php):

1

"SELECT code FROM station WHERE fullname = ".mysqli_real_escape_string($link, $stations[$a])." OR midname = ".mysqli_real_escape_string($link, $stations[$a])." OR smallname = ".mysqli_real_escape_string($link, $stations[$a]).""

Nu ben ik ook bezig met als je in het overzicht zit dat je dan kan doorklikken, dit werkt bij alles behalve bij Amsterdam Sloterdijk en geen idee bij welke meer.

Database:
Afbeelding

Enja, de query kan nu niet Amsterdam Sloterdijk vinden omdat de afkorting Adam Sloterdijk is.
Hoe kan ik dit oplossen? Door dit apart te gaan replacen weet ik niet of er namelijk nog andere stations zijn die zo worden afgekort. Met LIKE heb ik ook al geprobeert maar dan vind die dat ook niet.
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
tjah daar kan je lijkt mij niet zoveel aan doen, gewoon zorgen dat je juiste data hebt.
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Rogier schreef:
tjah daar kan je lijkt mij niet zoveel aan doen, gewoon zorgen dat je juiste data hebt.
Ik haal ook de juiste data op alleen als de NS api een andere afkorting geeft dan ze op de stationlijst hebben.
0
Berichten
18
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
Hoi,

Hoe doe je dat ook alweer, dat wanneer je een array hebt en je weergeeft alles met een , er tussen behalve de laatste?
Codeblok (voorbeeld.php):

1
2
3


echo implode(,, $array);
?>
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
en met array_pop() kan je het laatste element wegsodemieteren wink
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Ik los het zo al op:

if(count($stations) == 1 OR end($stations) == $stations[$a]) {

Maar nou heb ik dus dit probleem:
Dylanh schreef:
Eerdere citaten tonen
Rogier schreef:
je kan iets doen als
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7

foreach($array as $key => $value) {

if(end($array) == $value)) { } // altijd goed

if(count($array)-1 = $key)) { } // iets sneller, maar vereist dat de array is opgebouwd 0,1,2,3 en zo door. Bij voorkeur count($array) voor de loop uitvoeren

}

En dan

Thanks het werkt. Heb nu nog een probleem namelijk, ik heb deze query:

Codeblok (voorbeeld.php):

1

"SELECT code FROM station WHERE fullname = ".mysqli_real_escape_string($link, $stations[$a])." OR midname = ".mysqli_real_escape_string($link, $stations[$a])." OR smallname = ".mysqli_real_escape_string($link, $stations[$a]).""

Nu ben ik ook bezig met als je in het overzicht zit dat je dan kan doorklikken, dit werkt bij alles behalve bij Amsterdam Sloterdijk en geen idee bij welke meer.

Database:
Afbeelding

Enja, de query kan nu niet Amsterdam Sloterdijk vinden omdat de afkorting Adam Sloterdijk is.
Hoe kan ik dit oplossen? Door dit apart te gaan replacen weet ik niet of er namelijk nog andere stations zijn die zo worden afgekort. Met LIKE heb ik ook al geprobeert maar dan vind die dat ook niet.

Nu heb ik 3 oplossing bedacht:
- Ik run een script dat de database weer controleert.
- Ik neem contact op met NS
- Ik zorg ervoor als de query resulaat 0 is, weer een query word uitgevoert alleen dan met niet met de zoekwaarde Adam Sloterdijk maar:
Adam <- zou weer falen
Sloterdijk
dus dan spilt ik de string weer op en zoek die apart.

Welke optie is het beste? Ik denk de laatste?
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Ikzelf heb niet een idee dat het probleem bij de NS ligt, dus het lijkt mij niet echt zinvol om hun te contacteren. Er is wel een supportforum:
https://groups.google.com/forum/#!forum/ns-api
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Hoe doe je dit met een query?

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10

$reactiesq = $mysql->query("SELECT * FROM ticket_reacties WHERE ticketId = ".$mysql->real_escape_string($_GET[id])."");
while($reactie = $reactiesq->fetch_assoc()) {
if(end($reactie)) {
echo $reactie[comment];
}
else {
echo $reactie[comment].
;
}
}

?>
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
De bump snap ik niet, maar je kunt toch ook dit doen? emo
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7

$reactiesq = $mysql->query("SELECT * FROM ticket_reacties WHERE ticketId = ".$mysql->real_escape_string($_GET[id])."");
while($reactie = $reactiesq->fetch_assoc()) {
echo $reactie[comment];
}

echo
;
?>
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Milan schreef:
De bump snap ik niet, maar je kunt toch ook dit doen? emo
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7

$reactiesq = $mysql->query("SELECT * FROM ticket_reacties WHERE ticketId = ".$mysql->real_escape_string($_GET[id])."");
while($reactie = $reactiesq->fetch_assoc()) {
echo $reactie[comment];
}

echo
;
?>

Ik wou een
tussen elke reactie hebben behalve de laatste.
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oh zo, verkeerd gekeken..

Doe gewoon met $i en vergelijken met num_rows
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13

$reactiesq = $mysql->query("SELECT * FROM ticket_reacties WHERE ticketId = ".$mysql->real_escape_string($_GET[id])."");
$i = 1;
while($reactie = $reactiesq->fetch_assoc()) {
if($i == $reactiesq->num_rows) {
echo $reactie[comment];
}
else {
echo $reactie[comment].
;
$i++;
}
}


?>

aha.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren