wo ist der Unterschied

Steglich

Steglich

Aktives Mitglied
Thread Starter
Dabei seit
30.05.2003
Beiträge
206
Reaktionspunkte
0
Zur Zeit arbeite ich mich durch ein Buch von Kevin Yank über "PHP und MySQL" mit Programmierungs Beispielen. Damit ich PHP von der Notation auch etwas besser kennenlerne, tippe ich die Listings ab und verändere sie entsprechend meinen Vorgaben. Und das obwohl auf der Website zum Buch die Listings zum download vorhanden sind.

Nun habe ich mit einem ein Problem: Ich habe 2 Dateien angehängt:
jokes.php // von mir abgetippt
kyjokes.php // von der Website zum Buch

Dummerweise funktioniert die Datei von der Website problemlos und meine eigene bricht beim Parsen mit folgender Fehlermeldung ab, die ich noch dazu überhaupt nicht nachvollziehen kann:
Parse error: parse error in /Users/thomassteglich/Sites/jokes/CMS/jokes.php on line 21

Meiner Ansicht nach sind beide Dateien gleich, aber vielleicht seht ihr ja den Unterschied.
 

Anhänge

  • archiv.zip
    2,1 KB · Aufrufe: 66
Also wenn du einen Editor mit Syntax-Highlighting benutzt siehst du das du in Zeile 20 einen Unterschied bei deinem
PHP:
<BR>
hast. Einmal hast du ein Leerzeichen vor dem / und einmal nicht. Probier es aus, vielleicht liegts daran.
 
BR

Also es ist egal, ob man
PHP:
<BR>
<BR/> oder 
<BR />
schreibt. Hab es vorher und jetzt gerade noch einmal überprüft.
Trotzdem Danke.
 
Also ...

Zeile 25 muss heißen:
PHP:
while ($author = mysql_fetch_array($authors)) {

Zeile 36 entsprechend:
PHP:
while ($cat = mysql_fetch_array($cats)) {

Fehler: Du hast eine runde Klammer am Ende der while Schleife vergessen.
 
Nicht ganz. Tags müssen nun auch bei HTML
geschlossen werden.
Aber bei PHP sollte das nicht direkt die Fehlermeldung
auslösen...

kermit
 
@Jamonit:

Der PHP Parser kümmert sich nicht um HTML "Fehler". Er bearbeitet lediglich die Codetei-
le, die von <?php und ?> eingeschlossen sind. Daher gibt er auch nur für diese Bereiche
Fehler aus. Leider wird, gerade was fehlende Klammern angeht, nicht immer die richtige
Zeile genannt.
 
Das war aber auch ein fieser Fehler wenn man nicht routiniert in PHP arbeitet… ich hab diese Fehler auch total oft gemacht, weil am Anfang doppelte )) komisch aussehen und nicht gewohnt sind…


Hier die Erklärung:


Du hast beidesmale eine abschließende Klammer ')' für die while Schleife vergessen.



PHP:
<?php
while ($author = mysql_fetch_array($authors)) { //Richtig

while ($author = mysql_fetch_array($authors) { //Falsch


Die korrigierte Datei ist erstmal nicht anbei, bitte überprüfe deinen Fehler und frage, wenn du etwas nicht verstehst. Wenn du mich verstanden hast musst du jeweils eine ) an der entsprechenden Stelle finden und nachfügen und dein Script sollte funktionieren.


Liebe Grüße

Oberlehrer Yves ;) :D
 
() Danke

Ich wusste, dass es etwas primitives sein muss, aber so etwas. Einfach eine Klammer zu vergessen. Das kommt davon, dass ich auf den Editor von GoLive umgestiegen bin, weil der so schön den Code ergänzt. Aber das hat man davon. Bei subetha habe ich diese Funktion noch nicht gefunden (oder herausgefunden wie sie geht), obwohl es laut Website in der neuen 2.0 Version die Code Ergänzung haben soll.

Auf alle Fälle vielen Dank an alle, die sich dem Problem angenommen haben und vor allem an Delmar.
 
Re: () Danke

Original geschrieben von Steglich
…und vor allem an Delmar.
&nbsp;

Mit dem red ich jetzt nicht mehr ;)

PHP:
<?php

for($i=0;$i==100;$i++)
{
echo 'Delmar ist ein oller Besserwisser!';
}
?>



Ich glaub ich werd langsam alt… als ich mir die Zip geladen habe waren keine Postings vorhanden und als ich dann mit Schaum vor dem Mund triumphierend die Lösung posten wollte und dabei ein wenig Pseudodidaktik mitschwingen ließ… musste ich sehen das alle schneller waren… :(
 
Danke

Danke auch an Yves,
Delmar war nur schneller,
Yves dafür ausführlicher.
Mit euch beiden macht PHP lernen Spaß.
 
Re: Danke

Original geschrieben von Steglich
Danke auch an Yves,
Delmar war nur schneller,
Yves dafür ausführlicher.
Mit euch beiden macht PHP lernen Spaß.
&nbsp;

Handel dir jetzt bloß nicht noch den Unmut der anderen Poster ein :D

Hehe… ja zusammen lernen macht immer Spaß. Delmar ist übrigens sozusagen auch mein Lehrmeister, hab ne Menge gelernt im letzten halben Jahr… gerade was MySQL angeht.

Aber bevor das Offtopic wird:

Schön das es jetzt klappt.
Zu:

<BR> -------------->Strict HTML konform
<BR/> -------------->XHTML konform
<BR /> -------------->XHTML konform, aber lieber die o.g. Schreibweise verwenden.


Was Leerzeichen in PHP angeht führen die meistens nicht zu Fehlern, ich persönliche finde es übersichtlicher ohne Leerzeichen.

PHP:
//Dein Code
			
<?php
			while ($author = mysql_fetch_array($authors)) {
				$aid = $author["ID"];
				$aname = htmlspecialchars($author["Name"]);
				echo("<option value='$aid'>$aname</option>\n");
			}
?>

//So würde ich es schreiben, Delmar hingegen mag das nicht.



<?php
while($author=mysql_fetch_array($authors)) 
    {
    $aid=$author['ID'];
    $aname=htmlspecialchars($author['Name']);
    echo'<option value="'.$aid.'">$aname</option>';
    }
?>


Liebe Grüße

Yves
 
Re: Re: () Danke

Original geschrieben von Yves
&nbsp;Mit dem red ich jetzt nicht mehr ;)

PHP:
<?php

for($i=0;$i==100;$i++)
{
echo 'Delmar ist ein oller Besserwisser!';
}
?>
&nbsp;


rotfl *TränenAusDenAugenWisch*
 
Re: () Danke

Original geschrieben von Steglich
Ich wusste, dass es etwas primitives sein muss, aber so etwas. Einfach eine Klammer zu vergessen. Das kommt davon, dass ich auf den Editor von GoLive umgestiegen bin, weil der so schön den Code ergänzt. Aber das hat man davon. Bei subetha habe ich diese Funktion noch nicht gefunden (oder herausgefunden wie sie geht), obwohl es laut Website in der neuen 2.0 Version die Code Ergänzung haben soll.
&nbsp;

Die Funktion wird in SubEthaEdit durch Alt + Esc ausgelöst und funktioniert wunderbar! :D
 
Re: Re: Danke

Original geschrieben von Yves

PHP:
//Dein Code
			
<?php
			while ($author = mysql_fetch_array($authors)) {
				$aid = $author["ID"];
				$aname = htmlspecialchars($author["Name"]);
				echo("<option value='$aid'>$aname</option>\n");
			}
?>

//So würde ich es schreiben, Delmar hingegen mag das nicht.



<?php
while($author=mysql_fetch_array($authors)) 
    {
    $aid=$author['ID'];
    $aname=htmlspecialchars($author['Name']);
    echo'<option value="'.$aid.'">$aname</option>';
    }
?>


Liebe Grüße

Yves

Das wird wohl außer dir niemand mögen. Hab noch nie so einen hässlichen Stil gesehen :D

BadHorsie
 
oder auch mit F5

aber das habe ich schon herausgefunden.
Aber was ich meine ist, dass wenn ich ein Tag eingebe, dass dann automatisch das end tag nach dem Cursor erscheint.
Oder wenn ich Attribute einfüge, dass dann automatisch ="" erscheint und der Cursor zwischen den Anführungszeichen stehen bleibt.
Das genau funktioniert auch bei GoLive, allerdings macht auch GoLive öffnende Klammern nicht automatisch zu. Und das wurde mir zum Verhängnis.
Ist es also besser, auf solche Automatiken zu verzichten, damit man sich mehr auf den Code konzentriert?
 
@BadHorsie: Danke! Wurde ja auch mal Zeit, dass er das mal von anderer Seite hört! :D
 
Re: Re: Re: Danke

--------
 
Zuletzt bearbeitet von einem Moderator:
:D

...ich hab wirklich schon ein Haufen Mist gesehen. Aber das schießt den Vogel echt ab. Errinnert mich irgendwie an den Perl obfuscated Contest :D

BadHorsie
 
Original geschrieben von BadHorsie
:D...ich hab wirklich schon ein Haufen Mist gesehen. Aber das schießt den Vogel echt ab. Errinnert mich irgendwie an den Perl obfuscated Contest :D
&nbsp;

Waaaaaaaaaaaaaaaaaaaaaaaaas?

Gezz gleich kreis ich abba ma aus hier, gezz is genuch mit die olle Lästerei über meinem Script seine Formatierung.
 
Willste wissen was für hybrides prozedural/OOP Mischmasch ich in Flash in meinem jugendlichen Wahn in den ersten Frame schmiere? ;)

Es funktioniert alles… aber teilweise abenteuerliche Gedankengänge, gepaart mit willkürlichem Stil und 1aKillerFormatierung :D


PHP:
//Actionscript

MovieClip.prototype.varChar=function(x,y)
	{
	var_x1=x;
	index_x1=var_x1.length;
	var_y1=y;
	index_y1=var_y1.length;
	this.onEnterFrame=function()
		{
		_root.elements.field_01.text='';
		_root.elements.field_02.text='';
		for (var i=1; i<=4; i++)
			{
			for (var j=0; j<this['index_x'+i]; j++)
				{
				temp_letter=String.fromCharCode(65+random(26));
				random(2) ? temp_letter=temp_letter.toLowerCase() : {};
				_root.elements.field_01.text += temp_letter;
				}
			_root.elements.field_01.text += this['var_x'+i].substring(this['index_x'+i], this['var_x'+i].length);
			_root.elements.field_01.text += newvar_x;
			this['index_x'+i]--;
			for (var k=0; k<this['index_y'+i]; k++)
				{
				temp_letter=String.fromCharCode(65+random(26));
				random(2) ? temp_letter=temp_letter.toLowerCase() : {};
				_root.elements.field_02.text += temp_letter;
				}
			_root.elements.field_02.text += this['var_y'+i].substring(this['index_y'+i], this['var_y'+i].length);
			_root.elements.field_02.text += newvar_x;
			this['index_y'+i]--;
			}
		}
	}
MovieClip.prototype.levelOneSelect=function(firstGroup,secondGroup,level_id,sequence_a,sequence_b,sequence_c,sequence_d,sequence_e,sequence_f,sequence_g,sequence_h,sequence_i,sequence_j,contenttype)
	{
	attachMovie("MacOs", "MacOs_instance",1)
	MacOs_instance.startDrag(true);
	Mouse.hide();
	_root.elements.white_navi_01._alpha=_global.navi_status[sequence_a];
	_root.elements.white_navi_02._alpha=_global.navi_status[sequence_b];
	_root.elements.white_navi_03._alpha=_global.navi_status[sequence_c];
	_root.elements.white_navi_04._alpha=_global.navi_status[sequence_d];
	_root.elements.white_navi_05._alpha=_global.navi_status[sequence_e];
	_global.cleanUp_navi_status_00=_global.navi_status[sequence_a];
	_global.cleanUp_navi_status_01=_global.navi_status[sequence_b];
	_global.cleanUp_navi_status_02=_global.navi_status[sequence_c];
	_global.cleanUp_navi_status_03=_global.navi_status[sequence_d];
	_global.cleanUp_navi_status_04=_global.navi_status[sequence_e];	
	_root.elements['navi_typo_0'+sequence_f]._alpha=navi_typo_alpha[1];
	_root.elements['navi_typo_0'+sequence_g]._alpha=navi_typo_alpha[0];
	_root.elements['navi_typo_0'+sequence_h]._alpha=navi_typo_alpha[0];
	_root.elements['navi_typo_0'+sequence_i]._alpha=navi_typo_alpha[0];
	_root.elements['navi_typo_0'+sequence_j]._alpha=navi_typo_alpha[0];
	_global['typostatus_0'+sequence_f]='active';
	_global['typostatus_0'+sequence_g]='inactive';
	_global['typostatus_0'+sequence_h]='inactive';
	_global['typostatus_0'+sequence_i]='inactive';
	_global['typostatus_0'+sequence_j]='inactive';
	_root.elements.level2.removeMovieClip();
	_root.elements.level3.removeMovieClip();
	_root.elements.level4.removeMovieClip();
	_root.elements.level5.removeMovieClip();
	_root.elements.content.ScrollFrame.removeMovieClip();
	_root.elements.content.gotoAndStop(1);
	var firstGroup=new itemOwnerGroup();
	_root.elements.createEmptyMovieClip('level2',1);
	var sender=new LoadVars()
	sender.object=this;
	sender.root_id=_global.key_id-level_id;	
	sender.sendAndLoad('query.php', sender, 'POST');
	sender.onLoad=function(success)
		{
		if (success)
			{
			var base_y=-65;
			var base_x=-470;		
			for (var i=0; i<this.repeats; i++)
				{			
				var CompClip=itemOwnerClass.createSymbol(_root.elements.level2, 'level2_'+i, i, firstGroup);				
				CompClip.id=eval('this.id_'+i);
				CompClip.name=eval('this.name_'+i);
				CompClip.field_name.text=eval('this.name_'+i);
				CompClip._x=base_x;
				CompClip._y=base_y+(i*20);
				CompClip.onRelease=function()
					{
					this.group.switchSelection(this);
					_root.varChar(this.name, this.date);
					var secondGroup=new itemOwnerGroup();
					_root.elements.createEmptyMovieClip('level3',2);					
					var sender2nd=new LoadVars()
					sender2nd.object=this;
					sender2nd.root_id=this.id;	
					sender2nd.sendAndLoad('query.php', sender2nd, 'POST');
					sender2nd.onLoad=function(success)
						{
						if (success)
							{
							for(var j=0; j<this.repeats; j++)
								{						
								var CompClip2=itemOwnerClass.createSymbol(_root.elements.level3, 'level3_'+j, j, secondGroup);
								CompClip2.id=eval('this.id_'+j);
								CompClip2.date=eval('this.date_'+j);
								CompClip2.name=eval('this.name_'+j);
								CompClip2.field_name.text=eval('this.name_'+j);
								CompClip2._x=base_x+133;
								CompClip2._y=base_y+(j*20);
								CompClip2.onRelease=function()
									{
									this.group.switchSelection(this);
									_root.varChar(this.name, this.date);
									var thirdGroup=new itemOwnerGroup();
									_root.elements.createEmptyMovieClip('level4',3);
									var sender3rd=new LoadVars()
									sender3rd.object=this;
									sender3rd.root_id=this.id;
									sender3rd.sendAndLoad('query.php', sender3rd, 'POST');
									sender3rd.onLoad=function(success)
										{
										if (success)
											{
											var level4_x=-200;
											var level4_y=297;
											for(var k=0;k<this.repeats;k++)
												{
												var CompClip3=itemOwnerClass.createSymbol(_root.elements.level4, 'level4_'+k, k, thirdGroup);
												CompClip3.id=eval('this.id_'+k);
												CompClip3.root_id=eval('this.root_id_'+k);
												CompClip3.date=eval('this.date_'+k);
												CompClip3.name=eval('this.name_'+k);
												if(k<9)
													{
													CompClip3.field_name.text='0'+[k+1];
													}
												else
													{
													CompClip3.field_name.text=k+1;
													}
												CompClip3.image=eval('this.image_'+k);
												CompClip3.txt=eval('this.text_'+k);
												CompClip3._x=level4_x+(18*k);
												CompClip3._y=level4_y;
												CompClip3.onRelease=function()
													{
													this.group.switchSelection(this);
													_root.varChar(this.name, this.date);
													_root.elements.createEmptyMovieClip('level5',4);
													var ContComp=_root.elements.level5.attachMovie('content', 'content', 1);												
													ContComp.name_field.text=this.name;
													if(contenttype=='textonly')
														{
														ContComp.txt_only_field.text=this.txt;
														ContComp.txt_only_field.autoSize=true;
														}
													else
														{													   														
														ContComp.txt_field.text=this.txt;
														ContComp.txt_field.autoSize=true;
														ContComp.image.loadMovie(this.image);													
														}
													_root.elements.content.createEmptyMovieClip('ScrollFrame',1);
													var Scrollpane=_root.elements.content.ScrollFrame.attachMovie('FScrollPaneSymbol','ScrollPane',1);
													Scrollpane.setSize(425, 374);
													Scrollpane._x=-44;
													Scrollpane._y=-206;
													Scrollpane.setScrollContent(ContComp);
													Scrollpane.setVScroll=true;
													Scrollpane.setHScroll=false;
													ContComp._x=-190;
													MacOs_instance.stopDrag();
													MacOs_instance.removeMovieClip();
													Mouse.show();
													}											
												}
											_root.elements.level4.level4_0.onRelease();
											delete this.object['sender3rd'];
											}
										}								
									}
								}
							_root.elements.level3.level3_0.onRelease();
							delete this.object['sender2nd'];
							}						
						}
					}
				_root.elements.level2.level2_0.onRelease();
				delete this.object['sender'];				
				}	
			}
		}
	}	

this.stop();
 
Zurück
Oben Unten