Du bist nicht angemeldet. [Anmelden]
Seite 3 von 3 < 1 2 3 alle
Optionen
Thema bewerten
Re: Tutorials [Re: ] - #2109886 - 18.10.2010, 22:00:19
Mein Nick
Nicht registriert


Antwort auf: Data
Es ist vielleicht nicht essentiell wichtig, aber wohl besserer Stil. Ich hab's nachgetragen. Danke dafür.


Das ist so nicht ganz richtig, an vielen Stellen wird sogar empfohlen, das ?> weg zu lassen. Vor allem bei Dateien die includet werden.. Was den einfachen Grund hat Fehlermeldungen zu verhindern, weil schon ein output war (z.B. header(), session_start() ..). Weil selbst ein ?>'Leerzeichen' gibt dann schon eine Fehlermeldung.

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2109921 - 18.10.2010, 22:22:44
Data
Nicht registriert


Dann ist PHP, mit verlaub gesagt, irgendwie doof ;D

Ich setze es in Klammern in der Tut...

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110204 - 19.10.2010, 14:57:07
master Bratack
Nicht registriert


Es ist nötig für meinen seelenfrieden, damit konnten wir sicherlich einigen leuten fehler vom hals halten.
Sonst könnte es ja zu missverständnissen kommen, und ich glaube nicht das Ein Anfänger gleich sachen includiert/ Scripte zum Includireren schreibt.

Bratack

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110381 - 19.10.2010, 19:07:42
master Bratack
Nicht registriert


Sorry Nochwas: Wenn man Scripte Includiert kann man auch ?> weglassen AM ENDE. Wenn man Includiert wird das Script ausgeführt & das ergebniss an diese stelle gesetzt.

@Data
PHP ist wirklich ein bisschen Dumm, aber damit muss man halt leben

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110450 - 19.10.2010, 20:39:37
Data
Nicht registriert


Das hatte Mein Nick schon erwähnt, deswegen hab ichs so geschrieben, wie es jetzt im Thread steht. Muss man sich halt bisschen damit beschäftigen...

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110453 - 19.10.2010, 20:40:49
Scnappi
Nicht registriert


Es behauptet doch niemand, dass man das nur bei inkludierten Scripts machen kann. Es ist einfach ein Programmier/Coding-Stil. Anderes Beispiel dafür sind Klammern:
Php Code:
function sagHallo() {
	echo 'Hallo!';
}

function sagHallo()
{
	echo 'Hallo!';
} 

Einrücken tut auch jeder Programmierer anders (ein Leerzeichen? Ein Tab? Zwei Tabs? Wie groß ist der Tab?). Das ist nichts verpflichtendes und kann deswegen auch nicht darauf pauschalisiert werden, dass die Scriptsprache doof ist.

Bei HTML und CSS kann man es wie huendchen sagte auch so machen, dass man nicht schließt. Sind diese beiden Sprachen nun doof? Wo ist denn die bessere Alternative? ;-)

btw dieses Denglische Wort "includiert" klingt schrecklich.

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110473 - 19.10.2010, 20:58:42
Data
Nicht registriert


Naja ich bezog mich mit "doof" darauf, dass es Fehlermeldungen produziert, wenn ich schließe. Ich bin nur andere Sachen gewöhnt wie Java oder C. Da eine Klammer oder das ganze Dokument nicht zu schließen ist tödlich.

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110613 - 20.10.2010, 00:30:19
Mein Nick
Nicht registriert


Antwort auf: Data
Naja ich bezog mich mit "doof" darauf, dass es Fehlermeldungen produziert, wenn ich schließe.

Hm, Missverstaendnis. Das schliessen selbst erzeugt natuerlich kein Fehler - nur wenn danach noch ein Whitespace kommt.. Weil Whitespace = Output, dieser darf bei manchen Funktionen nicht sein, weil nach dem ersten output der Header nicht mehr manipuliert werden kann, deswegen ist es sinnvoll diese schliessenden Tags weg zu lassen, um diese Fehlerquelle zu vermeiden. & ich habe schon so viele Post gelesen, wo die Fehlermeldung wegen dem Leerzeichen kam, aber noch nie 'ne Fehlermeldung gelesen, die kam weil man 'nen schliessenden Tag vergessen hat (auf master Bratack bezogen).

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2110680 - 20.10.2010, 05:06:02
huendchen

Registriert: 29.03.2007
Beiträge: 2.385
Zitat:
Note:

The closing tag of a PHP block at the end of a file is optional, and in some cases omitting it is helpful when using include() or require(), so unwanted whitespace will not occur at the end of files, and you will still be able to add headers to the response later. It is also handy if you use output buffering, and would not like to see added unwanted whitespace at the end of the parts generated by the included files.

php manual - basic-syntax.instruction-separation


Mehr braucht man nicht zu wissen, besonders dann nicht, wenn es sich um kein ausgewiesenes Tutorial um PHP handelt, dafuer sind dann andere Tutorials notwendig. Das Semikolon beendet den PHP-Aufruf. Nicht notwenid also und in ZEND sogar missbilligt.

Waere es nicht einfacher, man konaktiert Batman uebers Handy und verzichtet in Zukunft auf den Lichtfluter?!

[zum Seitenanfang]  
Re: Tutorials [Re: huendchen] - #2112600 - 23.10.2010, 03:22:46
Mein Nick
Nicht registriert


Hey,

das ist jetzt nicht direkt ein Tutorial, sondern eher eine 'Erweiterung' zu Huendchen's Tut. (evtl. koennte man es auch in den Beitrag mit rein schreiben, wenn's Huendchen erlaubt?)
Genau gesagt: es sind 2 kleine Aenderungen, die mich in SQL Buddy ziemlich genervt haben (Beides nur mit Version 1.3.2 getestet).
Allerdings ist das schon eine Weile her, wo ich die geschrieben habe - deswegen koennte es sein, dass ich das ein oder andere versehentlich vergessen habe.

Die erste fuegt auf der Seite 'browse' (anzeigen der Tabellen Inhalten) ein Link ein, mit dem man direkt zur edit-Seite der entsprechnden Zeile kommt. (Nicht mehr ueber den 'Umweg' Checkbox -> Bearbeiten..
Ich bin faul. :-)
Das gleich koennte man eig. mit loeschen machen - allerdings loesche ich selten Inhalte ueber den Datenbank Manager, deswegen habe ich dafuer gerade nichts da.
so schauts aus:[img]http://nixseite.de/knuddels/sql_buddy1.jpg[/img]

Als erstes schieben wir die Spalten-Namen weiter nach Rechts.
Zeile 198 wie gefolge aendern:
Php Code:
echo '<div class="emptyvoid" style="width: 47px">&nbsp;</div>'; 


Dann muessen wir die Spalte fuer die Checkbox, Info & den neuen Link vergroessern.
Zeile 278 sieht dann so aus:
Php Code:
echo '<div class="leftchecks" style="width: 55px;">'; 



Nun kommt der Link dazu ~ Zeile 307
Warnung! Spoiler!
Php Code:
echo '<dd style="width: 30px;"><a onclick="editRow(\'' . addslashes($queryBuilder) . '\')" class="editRow" style="float: left;">e</a><a onclick="fullTextWindow(' . $m . ')" class="info" style="float: left;"></a><div style="clear:both; font-size: 1px; line-height: 1px; height: 1px;"></dd>'; 


Zum schluss dann noch die Tabelle nach Rechts schieben, sonst verschwinden ein paar Inhalte:
Zeile 320 wie gefolge aendern:
Php Code:
echo '<div class="gridscroll" style="margin-left: 55px;">'; 


Das wars dann auch schon mit dem Markup & Style. Jetzt noch die Javascript-Funktion & ein wenig CSS:

Die Javascript-Funktion kommt in 'helpers.js', wo genau ist eigentlich egal - die 'richtige' Stelle waere allerdings nach Zeile 332. (Vom aufbau her)

Code:
function editRow(query) {
	var grid = sb.grid;
	if (f(grid)) {
		sb.topTabs[sb.topTabSet].addTab("Edit", "edit.php", true);
		sb.page = "edit.php";
		var x = new XHR({url: "edit.php", onSuccess: finishTabLoad}).send("editParts=" + query);
	}
}


So, non fuegen wir noch die Klasse 'editRow' ein, und aendern ein wenig an dem vorhanen Stylesheet:
Dazu ersetzen wir den Code von Zeile 267-276 mit diesem:
Code:
.manip dd a.info {
background: url(../images/info.png) no-repeat;
width: 13px;
height: 13px;
display: block;
cursor: default;
}
.manip dd a.info:hover {
background: url(../images/infoHover.png) no-repeat;
}
.manip dd a.editRow {
background: url(../images/edit.png) no-repeat;
width: 13px;
height: 13px;
display: block;
cursor: default;
}
.manip dd a.editRow:hover {
background: url(../images/editHover.png) no-repeat;
}


Hier dann noch die 2 Bilder die gebraucht werden:
Edit: [img]http://nixseite.de/knuddels/edit.png[/img]
editHover: [img]http://nixseite.de/knuddels/editHover.png[/img]


Soa, das 2. Ding ist eine bearbeiten-Funktion fuer Tabellen wo kein Primaerschluessel definiert wurde.
Dazu allerdings 3 Sachen, die ich vorher erwaehnen moechte:
1. sollte eig. IMMER ein Schluessel angegeben werden, besser noch: eine ID (MySQL auto_increment)
2. Wenn es Zwei Spalten gibt, die genau den gleichen Inhalt in allen Spalten haben, werden BEIDE veraendert! (Wenn es Drei sind, werden halt alle Drei geaendert.. etc.)
3. Konnte ich das nun nur mit Text & int-Feldern testen, wie das dann mit BLOB etc aussieht.. Weiss ich nicht. Also vorher besser die Datei sichern.

Als erstes aendern wir eine kleine if-Klausel, die schon vorhanden ist.
Diese beginnt in Zeile 319 (wenn nicht in den naechsten Zeilen angaben immer die Anzahl drauf Rechnen oder abziehen) uns sieht so aus:
Php Code:
	 if (isset($primaryKeys) && count($primaryKeys))
			echo '<div class="gridscroll" style="margin-left: 55px;">';
		else
			echo '<div class="gridscroll">'; 

Daraus machen wir:
Php Code:
	 if (isset($primaryKeys) && count($primaryKeys)){
			$setWhere = false;
			echo '<div class="gridscroll" style="margin-left: 55px;">';
		}
		else {
			$setWhere = true;
			echo '<div class="gridscroll">';
		}
		$where = ''; 

.. hier setzen wir nur eine Variable die uns spaeter sagt, ob wir das benoetigen (wenn wir einen Primaerschluessel haben, haben wir ja schon vorhin den Button eingefuegt).
Nach der if-Klausel setzen wir noch eine leere Variable, die wir spaeter mit Inhalt fuellen.

Wenn das dann geaendert ist, geht es zur Zeile 330, die dieses beinhaltet:
Php Code:
while (($dataRow = $conn->fetchArray($dataSql)) && ($m < $displayLimit)) { 


NACH dieser Zeile wird das eingefuegt:
Php Code:
		 if($setWhere==true) {
				$where = 'WHERE ';
				foreach($fieldList as $key => $value) {
					if($dataRow[$key]!='') {
						if ($conn->getAdapter() == "sqlite") {
							$where .= $value . ' = \'' . $dataRow[$key] .'\' AND ';
						} else {
							$where .= '`' . $value . '` = \'' . $dataRow[$key] .'\' AND ';
						}
					}
				}
				$where = substr($where, 0, -5);
				$where = ' onclick="editRow(\''. addslashes($where) .';\')"';
			} 

Hier stezen wir dann unsere WHERE-Bedingung zusammen, die wir dann spaeter an die Javascript Funktion 'editRow' senden.
Als erstes wird ueberprueft, ob der Inhalt der Variable setWhere war oder falsch ist. Das haben wir vorhin in der if-Klausel gesetzt. Wenn der wahr ist, gehen wir in eine Schleife, in der wir dann wieder eine Ueberpruefung haben. In dieser Ueberpruefung gucken wir ob die aktuelle Spalte auch einen Wert hat, wenn nicht wird diese nicht gebraucht und koennte nur zu einem Fehler fuehren.
Anschliessend wird unsere WHERE-Bedingung nach Verbindungsart zusammen gebaut, wieder verkleinert und in ein Javascript-Eventhandler gepackt.

zu guter Letzt noch den Eventhandler an die richtige Stelle platzieren (Zeile 357):
Php Code:
		 echo '<tr ' . $where . '>'; 


Bearbeitet von Mein Nick (23.10.2010, 03:23:35)
Bearbeitungsgrund: spoiler eingefuegt

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2116471 - 29.10.2010, 04:50:03
DoUgHbOyS
Nicht registriert


Vor einiger Zeit hab ich als kleines Projekt an einer Spielstruktur gearbeitet - Schere, Stein, Paper (in PHP); bis jetzt hatte ich keine weiteren Ideen fuer eine Weiterentwicklung des Spiels', weder neue Ideen, da es sich in logischer Weise nicht wirklich lohnt, - es ist nur ein simples Spiel das nach einer Zeit langweilig wird, ausserdem hab ich das Spiel gecodet um mir eine Spielstruktur fuer weitere Spiele zu entwickeln, das heisst das vorherige in das naechste Konzept zu verwirklichen.

Falls sich hier jemand fuer das Spiel interessiert, bzw. fuer die Source, koennte ich die hier mit Erklaerungen posten, und wenn ihr Lust habt, auch eure Weiterentwicklungsversuche hier vorstellen.

[zum Seitenanfang]  
Re: Tutorials [Re: ] - #2243844 - 26.05.2011, 19:21:16
master Bratack
Nicht registriert


Moinsen,
kann es sein, das aus dem Hauptthread langsam aber sicher einige Beiträge verschwinden?

Achja, besteht interesse an Perl & C++ Tutorials/Codesnippets?

[zum Seitenanfang]  
Seite 3 von 3 < 1 2 3 alle