webForumDet fria alternativet

php Conditionals and operators

16 svar · 3 704 visningar · startad av Wibbskii

WibbskiiMedlem sedan okt. 201438 inlägg
#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.

cascaMedlem sedan feb. 20003 262 inlägg
#2

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

WibbskiiMedlem 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å?

prplxrMedlem sedan juni 2012557 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

drewMedlem sedan mars 2007748 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).

WibbskiiMedlem 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; ?>
cascaMedlem sedan feb. 20003 262 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.

prplxrMedlem sedan juni 2012557 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")

WibbskiiMedlem 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"

prplxrMedlem sedan juni 2012557 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!

WibbskiiMedlem 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.

prplxrMedlem sedan juni 2012557 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?

WibbskiiMedlem 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 :)

aasahMedlem sedan mars 20033 451 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?

WibbskiiMedlem 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>';
	}
 ?>
drewMedlem sedan mars 2007748 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.

prplxrMedlem sedan juni 2012557 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å?

133 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
130 ms — hämta tråd, inlägg och bilagor (db)