webForumDet fria alternativet

php Conditionals and operators

PHP

16 svar · 3 707 visningar · startad av Wibbskii

Medlem sedan okt. 201438 inlägg
Frågan#1

När man tex skriver en if sats så finns det en massa jämförelser som tex "lika med" "lika med eller större än" osv.
Finns det någon som säger "innehåller"? Jag har letat och letat men hittar inget. Eller finns det något annat sätt man skriver på?
Jag vill plocka ut meningar med ett speciellt ord i nämligen.

Medlem sedan feb. 20005 891 inlägg
#2

Med funktionen strpos får du ut positionen (från 0) av den sökta strängen inuti en sträng.

Medlem sedan okt. 201438 inlägg
#3

Men då måste ordet man söker alltid ligga på samma ställe väl?
Om jag tex har 3 rader
1/1 Stad
3/10 Stad
12/12 Stad
Och vill ha träff på stad, kan jag använda mig av strpos då?

Medlem sedan juni 2012581 inlägg
#4

Nej, det behöver det inte om du använder strpos(höstack, nål) så returnerar den vilken position första bokstaven i nålen har. Om den inte hittas returnerar den FALSE.

Så, ja på din sista fråga! :-D

Medlem sedan mars 2007845 inlägg
#5

Tänk på att använda

if (strpos(höstack, nål) !== false)

eller

if (strpos(höstack, nål) === false)

Annars kan du missa om din nål ligger i först i höstacken (pos 0).

Medlem sedan okt. 201438 inlägg
#6

Vad är det för skillnad på !== och === ?
Sen får jag ett problem. Jag har två olika nålar från samma höstack, och om man väljer 1-5 alternativ med samma nål får jag rätt svar men om man väljer 1-5 alternativ med olika nålar så visas bara höstack 1. Vad kan det bero på?
Koden ser ut såhär:

<?php if (strpos($form_data['field']['32'], Östersund) !== false): ?>
	<tr>
		<td>Utbildningsplats</td>
		<td>Jämtlands Gymnasium<br>Fyrvallavägen 4<br>831 43 Östersund</td>
	</tr>
<?php endif; ?>
	<tr>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
<?php if (strpos($form_data['field']['32'], Ljungby) !== false): ?>
	<tr>
		<td>Utbildningsplats</td>
		<td>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
	</tr>
<?php endif; ?>
Medlem sedan feb. 20005 891 inlägg
#7

Wibbskii skrev:

Vad är det för skillnad på !== och === ?

Allt finns i dokumentationen. "a === b" ger TRUE om a och b är av samma typ och har samma värde, "a !== b" ger TRUE om de INTE är av samma typ och/eller har samma värde. Observera att det finns också "==" och "!=", som bara kontrollerar värdet av variabeln.

Medlem sedan juni 2012581 inlägg
#8

Wibbskii skrev:

Vad är det för skillnad på !== och === ?
Sen får jag ett problem. Jag har två olika nålar från samma höstack, och om man väljer 1-5 alternativ med samma nål får jag rätt svar men om man väljer 1-5 alternativ med olika nålar så visas bara höstack 1. Vad kan det bero på?
Koden ser ut såhär:

<?php if (strpos($form_data['field']['32'], Östersund) !== false): ?>
	<tr>
		<td>Utbildningsplats</td>
		<td>Jämtlands Gymnasium<br>Fyrvallavägen 4<br>831 43 Östersund</td>
	</tr>
<?php endif; ?>
	<tr>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
<?php if (strpos($form_data['field']['32'], Ljungby) !== false): ?>
	<tr>
		<td>Utbildningsplats</td>
		<td>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
	</tr>
<?php endif; ?>

Ja, den där koden kan nog inte fungera så bra iaf. Du måste till att börja med ha citattecken runt dina strängar. ("Östersund" och "Ljugby")

Medlem sedan okt. 201438 inlägg
#9

prplxr skrev:

Ja, den där koden kan nog inte fungera så bra iaf. Du måste till att börja med ha citattecken runt dina strängar. ("Östersund" och "Ljugby")

Jo den fungerar kanon om man väljer antingen Ljungby eller Östersund men inte om man väljer båda.

Jag får samma resultat om jag sätter citattecken runt "Östersund" och "Ljungby"

Är det någon som vet hur man skall göra för att få med båda när man valt både "Ljungby" och "Östersund"

Medlem sedan juni 2012581 inlägg
#10

Vad innehåller egentligen $form_data['field']['32']?

Jag misstänker att det kommer från ett formulär. Är det möjligtvis multipla checkboxar med samma namn som du prövar att fylla i flera? För då är nog inte innehållet det du tror att det är i variabeln. Skriv ut den med var_dump($form_data['field']['32']); så får du se!

Medlem sedan okt. 201438 inlägg
#11

Ja det stämmer att det kommer från ett formulär. Men med alternativknappar. Och jag har tänkt helt fel. Field 32 kan bara ha ett alternativ, men sen har jag field 33,34,35,36,37 och 38 som kan vara antingen Ljungby eller Östersund. Och alla behöver inte vara ifyllda så jag skall sätta en OR mellan istället tror jag?. Alltså att om något av dessa fält innehåller "Östersund" skall ett annat fält skrivas ut.

Medlem sedan juni 2012581 inlägg
#12

Ja, då får du använda or-operatorn (||) och göra jämförelsen på alla strängar. Här tror jag dock att du skulle kunna lösa detta på ett smidigare sätt, men jag vet ju inte hur ditt formulär är uppbyggt.

Lite halvrelevant fråga, varför använder du inte standardformateringen på dina if-staser?

Medlem sedan okt. 201438 inlägg
#13

prplxr skrev:

Ja, då får du använda or-operatorn (||) och göra jämförelsen på alla strängar. Här tror jag dock att du skulle kunna lösa detta på ett smidigare sätt, men jag vet ju inte hur ditt formulär är uppbyggt.

Lite halvrelevant fråga, varför använder du inte standardformateringen på dina if-staser?

Jag använder mig av Gravity Forms för att göra formulären. Ja går det att lösa på ett smidigare sätt blir jag glad :) Vad behöver du veta? Detta kanske kan hjälpa. http://dev.ctc.se/?gf_pdf=1&fid=9&lid=1155&template=utbildning.php&data=1

Anledningen till det är för att jag är en glad nybörjare som försöker lära mig php :)

Medlem sedan mars 20034 471 inlägg
#14

Wibbskii skrev:

Jag använder mig av Gravity Forms för att göra formulären. Ja går det att lösa på ett smidigare sätt blir jag glad :) Vad behöver du veta? Detta kanske kan hjälpa. http://dev.ctc.se/?gf_pdf=1&fid=9&lid=1155&template=utbildning.php&data=1

Länken ger bara fel, ingen sådan tråd finns? :q

I vilket sammanhang väljs städerna? Är det som olika alternativa svar på samma fråga, eller har du fler olika frågor som har flera städer som möjliga svar?

Medlem sedan okt. 201438 inlägg
#15

Ursäkta för sent svar. Jag löste det på detta sätt.

<?php 
	if (strpos($form_data['field']['32'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} elseif (strpos($form_data['field']['33'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} elseif (strpos($form_data['field']['34'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} elseif (strpos($form_data['field']['35'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} elseif (strpos($form_data['field']['36'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} elseif (strpos($form_data['field']['37'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} elseif (strpos($form_data['field']['38'], Ljungby) !== false) {
		echo
	'<tr>
		<td><strong>Utbildningsplats Ljungby</strong><br>CTC/Enertech AB<br>Näsvägen 8<br>341 34 Ljungby<br>Tel: 0372-88 000<br><a href="http://www.ctc.se" target="_blank">www.ctc.se</a></td>
		<td>&nbsp;</td>
	</tr>';
	} else {
		echo
	'<tr>
		<td><strong>Utbildningsplats Östersund</strong><br>Jämtlands Gymnasium<br>Fyrvallavägen 4<br>831 43 Östersund</td>
		<td>&nbsp;</td>
	</tr>';
	}
 ?>
Medlem sedan mars 2007845 inlägg
#16

Varför envisas du med att inte ha citattecken " eller ' vid dina strängar?

'Ljungby'

Om du sätter error_reporting(E_ALL); ,som du bör ha när du kodar, så ser du PHP gnälla om dom.

Medlem sedan juni 2012581 inlägg
#17

drew skrev:

Varför envisas du med att inte ha citattecken " eller ' vid dina strängar?

Det undrar jag också. Kan man verkligen göra så?

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)