Mit PHP was in eine MySQL Datenbankschreiben

Alles rund um die Software-Entwicklung: Programme, Skripte, Projekte etc.
mr.no-name
Fleet Captain
Beiträge: 1095
Registriert: 06.04.2005, 20:34
Wohnort: Hannover

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von mr.no-name » 17.11.2009, 22:22

Ist es schon zu spät für mich *g* oder macht diese Bedingung wenig Sinn, da sie immer erfüllt ist?
if($enah<10 || $enah>-10)

Benutzeravatar
slrzo
Rear Admiral
Beiträge: 3679
Registriert: 10.08.2004, 14:46

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von slrzo » 17.11.2009, 22:25

IMHO ohne viel von PHP und MySQL zu verstehen macht die Sinn.

entweder ist $enah kleiner als 10 oder aber größer als -10 also von -10 bis +10.
I'm gonna eat your brains and gain your knowledge.

Benutzeravatar
fassy
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 5855
Registriert: 26.01.2004, 20:44
Wohnort: Hamburg

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von fassy » 17.11.2009, 22:57

hmmm, passt nicht so ganz:

Code: Alles auswählen

	public static void main(String[] args) {
		int[] values = {11,4,-4,-11};
	    for (int i : values){
	    	System.out.println(i+": "+(eval(i)));
	    }
	}
	
	public static boolean eval(int value){
		if(value < 10 || value > -10){
			return false;
		} else {
			return true;
		}
	}
11: false
4: false
-4: false
-11: false

Für werte zwischen 9 und -9 würd ich && empfehlen:

Code: Alles auswählen

	public static boolean eval(int value){
		if(value < 10 && value > -10){
			return true;
		} else {
			return false;
		}
	}
11: false
4: true
-4: true
-11: false
Zuletzt geändert von fassy am 18.11.2009, 09:54, insgesamt 6-mal geändert.
Pick up the hammer... pick it up.

mr.no-name
Fleet Captain
Beiträge: 1095
Registriert: 06.04.2005, 20:34
Wohnort: Hannover

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von mr.no-name » 18.11.2009, 00:55

slrzo hat geschrieben:IMHO ohne viel von PHP und MySQL zu verstehen macht die Sinn.

entweder ist $enah kleiner als 10 oder aber größer als -10 also von -10 bis +10.
Damit das so wäre, müssten die beiden Bedingungen doch mit "und" verknüpft sein. Da es aber ein "oder" ist, ist die Gesamtbedingung immer erfüllt, da der Wert immer entweder kleiner 10 oder größer als -10 oder beides ist...
(falls ich gerade dummes Zeug denke, schiebt es bitte auf die Uhrzeit *g*)

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 18.11.2009, 22:45

doch müste ein UND sein, aber nach 8h arbeiten und dann ne stunde lang nen fehler suchen der so offensichlich war das man ihn nicht sehen konnte, war mein Sinn für logik nicht mehr voll auf der höhe.

ich habe da den fehler vermutet weil das der punkt ist wo meine fehler meldung her kam, aber bei der übergabe der variablen $_POST hab ich ein kudelmuddel veranstalltet, so das die werte in die falsche Überprüfung gekommen sind und hab deswegen die fehlermeldung davon bekommen.

naja zumindest funktioniert es jetzt, ich muss nur noch mal alles durhcgehen und überprüfen und dan grafisch schön machen.

BdT
Varmandra

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 05.02.2010, 04:12

Bin mal wieder an einer Stelle wo ich wieder mal auf dem Schlauch stehe.

Ich schreibe zurzeit ein Installation-Script für mein Progrämmschen. Es gibt eine setting.php in der die Angaben zur Datenbank stehen die man ja entsprechen seines Servers ja anpassen muss/soll, was das installation-script per formular macht.
install.php:

Code: Alles auswählen

<?php
global $datei, $handler;
if (isset($_GET['start'])){$start=$_GET['start'];}
if ('POST' == $_SERVER['REQUEST_METHOD'])
	{
		if(isset($_POST['server'])) {$server=$_POST['server'];}
		if(isset($_POST['user'])) {$user=$_POST['user'];}
		if(isset($_POST['pass'])) {$pass=$_POST['pass'];}
		if(isset($_POST['dbname'])) {$dbname=$_POST['dbname'];}
$datei = "settings.php"; // Name der Datei
$array = file($datei); // Datei in ein Array einlesen
if (!empty ($server)){$array[2] = '$server="'.$server.'";';}
if (!empty ($user)){$array[3] = '$user="'.$user.'";';}
if (!empty ($pass)){$array[4] = '$pass="'.$pass.'";';}
if (!empty ($dbname)){$array[5] = '$dbname="'.$dbname.'";';}
$text = implode("",$array);
$handler = fOpen($datei , "r+");
fWrite($handler , $text);
fClose($handler); 
	}

if ($start==NULL)
{
	echo'<html><body>
		<form name="formular" action="install.php?start=start" method=post>
			<br>Server:<input name="server" size="20"  style="width:240px">
			<br>Benutzer:<input name="user" size="20" style="width:240px">
			<br>Passwort:<input name="pass" size="20" style="width:240px">
			<br>Dantenbankname:<input name="dbname" size="20" style="width:240px">
			<p><input type="submit" value="Speichern" name="speichern"><input type="reset">
		</from><br>';
	$datei = "settings.php";
	$array = file($datei);
	foreach ($array as $element) 
	{
		echo $element; // Dateiinhalt ausgeben
	}
	echo'<br></body></html>';
}

if ($start=="start")
{
	echo 'das array';
	foreach ($array as $element) 
	{
		echo $element; // Dateiinhalt ausgeben
	}
	echo 'der string';
	echo $text;
	echo 'die datei';
	$datei1 = "settings.php"; // Name der Datei
	$array1 = file($datei1); // Datei in ein Array einlesen
	foreach ($array1 as $element1)
	{
		echo $element1; // Dateiinhalt ausgeben
	}
}
?>
setting.php:

Code: Alles auswählen

<?php
########Datenbank angaben#########
$server="localhost";
$user="";
$pass="";
$dbname="";
############ SQL Query ###########
$db = new mysqli($server, $user, $pass, $dbname);
if (mysqli_connect_errno()){die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');}
?>
Das klappt soweit auch ganz gut, Datei öffnen in ein array lesen dann entpsrechend der Eingaben die entsprechenden Stellen im array ändern.
Dann setze ich das array zu einem string zusammen und schreibe dann den Inhalt neu in die Datei.

Jetzt zu meinem Problem, mir gehen die zeilen umbrüche verloren und am ende werden die letzten Zeichen doppelt geschrieben, wobei das immer unregelmäßig ist von nichts bis hin zu nnect_errno().')');}?> ist mir schon untergekommen, ich kann aber nicht wirklich nachverfolgen warum es mal so oder mal so ist, da an der install.php nichts geändert wurde, sondern nur die Eingaben im Formular waren unterschiedlich.

Wenn ich mir das array ($array) und string ($text) per echo anzeigen lasse sind keine doppelten Zeichen da, nur die Zeilenumbrüche fehlen.
In der der setting.php stehen dann aber zum beispeil folgendes:

Code: Alles auswählen

<?php
########Datenbank angaben#########
$server="test";$user="test";$pass="test";$dbname="test";############ SQL Query ###########
$db = new mysqli($server, $user, $pass, $dbname);
if (mysqli_connect_errno()){die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');}
?>).')');}
?>
Wo liegt der Fehler das die Zeilenumbrüche bei den geänderten Stellen im array verloren gehen und vieleicht weis einer ja auch warum es dazu kommt das teilweise am ende Zeichen doppelt in die Datei geschrieben werden. Bin für jeden Tip dankbar.

BdT
Varmandra
Zuletzt geändert von varmandra am 05.02.2010, 04:19, insgesamt 2-mal geändert.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 08.02.2010, 17:30

ok denke mal das ich das problem gelöst habe:
1. die zeilenumbrüche einfach nen <enter> drücken.
if (!empty ($server)){$array[2] = '$server="'.$server.'";';}
if (!empty ($server)){$array[2] = '$server="'.$server.'";
';}
2. Das mit dem doppelten hat sich gegeben dadurch das ich die zeile

Code: Alles auswählen

if (mysqli_connect_errno()){die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');}
halt auf zwei zeilen verteilt habe

Code: Alles auswählen

if (mysqli_connect_errno())
	{die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');}
Wobei ich nicht weis warum das so ist, den es sind nur 147 zeichen in der zeile und ich hab nur was von einer begrenzung von 256 zeichen gelesen.

BdT
Varmandra

stanglwirt
Fleet Captain
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 1591
Registriert: 17.03.2004, 07:22

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von stanglwirt » 09.02.2010, 08:26

1. solltest dir angewöhnen, nicht alles in eine zeile zu quetschen. da passieren schnell fehler die man leicht verhindern kann:

Code: Alles auswählen

if ( mysqli_connect_errno() ) {
   die( 'Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')' );
}
2. zeilenumbrüche macht man mit "\n"
MfG
everybody´s darling is everybody´s Arschloch. (c) Franz Josef Strauß

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 11.02.2010, 13:53

stanglwirt hat geschrieben: 2. zeilenumbrüche macht man mit "\n"
Das hatte ich schon probiert, aber das wurde einfach mit reingeschrieben sah dann so aus:

Code: Alles auswählen

$server="test";\n$user="test";\n$pass="test";\n$dbname="test";\n############ SQL Query ###########
BdT
Varmandra

stanglwirt
Fleet Captain
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 1591
Registriert: 17.03.2004, 07:22

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von stanglwirt » 12.02.2010, 11:12

"\n" ist natürlich nur innerhalb strings, also z.b. $test ="hallo \n jetzt neue zeile";
anscheinend hab ich dein problem missverstanden und versteh es bis jetzt nicht wirklich.

wenn du beim erstellen erst zeilenumbrüche drin hast und später nichts mehr, liegts wohl am verwendeten editor. keine ahnung mit was du schreibst aber nimm mal dreamweaver oder so.
MfG
everybody´s darling is everybody´s Arschloch. (c) Franz Josef Strauß

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 12.02.2010, 15:23

ich nehme ja dreamweaver, und ich bearbeite ja nicht die setting direkt damit, sondern mache das über ein php-script. siehe #31

Code: Alles auswählen

$datei = "settings.php"; // Name der Datei
$array = file($datei); // Datei in ein Array einlesen
if (!empty ($server)){$array[2] = '$server="'.$server.'";';}
if (!empty ($user)){$array[3] = '$user="'.$user.'";';}
if (!empty ($pass)){$array[4] = '$pass="'.$pass.'";';}
if (!empty ($dbname)){$array[5] = '$dbname="'.$dbname.'";';}
$text = implode("",$array);
$handler = fOpen($datei , "r+");
fWrite($handler , $text);
fClose($handler); 
ich hab ja mal im implode als seperator \n eingesetzt, blos dann wird halt beim schreiben in der datei überall ein \n hintendran geschrieben. ich könnte zwar jetzt beim einlesen der datei über ein explode mit dem seperator \n ja wieder zerlegen, aber dann sieht die setting datei halt rech durcheinander aus, weil die zeilenumbrüche nicht mehr da sind.

Hab ja wie in #32 sieht reicht es wenn ich einfach selber am ende enterdrückt bei dem was ins array rein soll.

nur beim dem doppelten scheint es immer noch probleme zu geben, ich weis leider nur nicht wo her, weil es nicht wiklich nachverfolgen kann woran es liegt.

BdT
Varmandra
Zuletzt geändert von varmandra am 12.02.2010, 15:38, insgesamt 1-mal geändert.

stanglwirt
Fleet Captain
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 1591
Registriert: 17.03.2004, 07:22

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von stanglwirt » 12.02.2010, 19:58

mit file() erhältst du ein array. jedes array-element enthält eine zeile mit zeilenumbruch am ende.

wenn du ein array-element (=zeile) änderst, dann musst natürlich am ende den zeilenumbruch setzen.
if (!empty ($server)) {
$array[2] = '$server="'.$server.'";'."\n";
}

ich denke, es versteht sich von selbst dass \n nur innerhalb doppelter anführungszeichen funktioniert.
Zuletzt geändert von stanglwirt am 12.02.2010, 20:00, insgesamt 1-mal geändert.
MfG
everybody´s darling is everybody´s Arschloch. (c) Franz Josef Strauß

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 13.02.2010, 02:08

Danke das ist es, hab mich bisher nicht groß mit den Escape-Sequencen auseinander gesetzt, wuste das es sie gibt, hab bisher halt mit HTML-Ausgaben ausgaben gearbeitet.


BdT
Varamandra

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 06.03.2010, 11:24

Ich mal wieder.
ich möchte drei variablen nach größe sortieren.

Code: Alles auswählen

			if ($p1 < $p2) 
			{
				$z=$p2;
			}
			else
			{
				$z=$p1; $p1=$p2;
			}
			if ($z < $p3)
			{
				$p2=$z;
			}
			else
			{
				$p2=$p3; $p3=$z;
			}
			if ($p1 > $p2)
			{
				$z=$p1; $p1=$p2;
			}

hier nach sollte doch egal welche zahlen man für welche variable angegeben hat doch folgendes immer gelten: $p1 < $p2 < $p3
oder hab ich da was übersehen?

BdT
Varmandra
Zuletzt geändert von varmandra am 06.03.2010, 11:27, insgesamt 1-mal geändert.

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von Epfi » 06.03.2010, 12:07

Schreib deine zahlen doch in ein array und benutz sort()
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 06.03.2010, 14:01

Epfi hat geschrieben:Schreib deine zahlen doch in ein array und benutz sort()
ist etwas komplizierter als einfach nur Zahlen zu sortieren, ich habe drei Variablen, die Zahlen von 1-7 bekommen können, diese Zahlen sind in einen array einem Wert zu geordnet und wird dann als $probe ausgegeben.

Code: Alles auswählen

			$arr = array (1 => 'MU',2 => 'KL',3 => 'IN',4 => 'CH',5 => 'FF',6 => 'GE',7 => 'KK');
			if ($p1 < $p2) {$z=$p2;}
			else {$z=$p1; $p1=$p2;}
			if ($z < $p3){$p2=$z;}
			else {$p2=$p3; $p3=$z;}
			if ($p1 > $p2){$z=$p1; $p1=$p2;}
			$probe= $arr[$p1].'/'.$arr[$p2].'/'.$arr[$p3];			
und damit die reihenfolge bei der probe immer MU-KL-IN-CH-FF-GE-KK ist z.B. MU/MU/KK usw.
Muß ich das halt vorher sortieren, da es nicht alphabetisch ist hab ich mir halt den Umweg über die Zahlen einfallen lassen.
Ich wüsste jetzt nicht wie ich mit zwei arrays und sort() da hinkommen sollte.

Hab auch überlegt ob ich mit ajax bei der Eingabe schon dafür sorge das es nur in der richtigen reihenfolge ausgewählt werden kann. blos das kamm mir sehr lang vor und so bin ich bei 7 zeilen.
bin halt schon etwas länger wach und dachte mir das hier vileicht ein wacheres Auge mal drauf schauen kann. Hab halt Anfangs den Wald vor Bäumen nicht gesehen und ne menge kleiner Fehler drin gehabt so das anfangs immer was falsch lief und ich bin mir nicht sicher ob ich da jetzt alle eventuallitäten berücksichtigt habe.

BdT
Varmandra

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von Epfi » 06.03.2010, 14:04

Womöglich suchst Du asort() - in PHP gibt es doch für jeden Mist ne fertige Funktion ;)

Falls asort() nicht genau richtig ist: Arrays sortieren mit PHP.
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 06.03.2010, 19:11

Nachdem ich jetzt mal ein bischen geschlafen habe....
nen uasort könnte gehen...mal probieren

aber noch was anderes:

Damit sollten ja Umlaute angezeigt werden.

Code: Alles auswählen

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>

nur irgendwie bei der einen funktion

Code: Alles auswählen

function formular_ausgabe($typ, $name, $gewicht, $groesse, $beschreibung, $oregel, $magisch, $preis, $fehler)
	{
	echo '
		<form name="formular" action="index.php?action=ausruestungeintragen" method=post>
		Kategorie:<select name="typ">
			<option value="" ';if ($fehler!=NULL){if(empty($typ)){echo'selected';}} echo'>Bitte Kategorie wählen</option>
			<option value="ruestzeug" ';if ($fehler!=NULL){if($typ=='ruestzeug'){echo'selected';}} echo'>Rüstzeug, Gürtel, Scheiden und Köcher</option>
			<option value="koch" ';if ($fehler!=NULL){if($typ=='koch'){echo'selected';}} echo'>Koch- und Eßgeschirr</option>
			<option value="werkzeug" ';if ($fehler!=NULL){if($typ=='werkzeug'){echo'selected';}} echo'>Werkzeuge</option>
			<option value="beleuchtung" ';if ($fehler!=NULL){if($typ=='beleuchtung'){echo'selected';}} echo'>Beleuchtung</option>
			<option value="behaelter" ';if ($fehler!=NULL){if($typ=='behaelter'){echo'selected';}} echo'>Behälter</option>
			<option value="seile" ';if ($fehler!=NULL){if($typ=='seile'){echo'selected';}} echo'>Seile, Netze und Ketten</option>
			<option value="reisebedarf" ';if ($fehler!=NULL){if($typ=='reisebedarf'){echo'selected';}} echo'>Reisebedarf</option>
			<option value="schreib" ';if ($fehler!=NULL){if($typ=='schreib'){echo'selected';}} echo'>Schreibwaren, Feinmechanik und Optik</option>
			<option value="spielzeug" ';if ($fehler!=NULL){if($typ=='spielzeug'){echo'selected';}} echo'>Spielzeug und Schmuck</option>
			<option value="fahrzeuge" ';if ($fehler!=NULL){if($typ=='fahrzeuge'){echo'selected';}} echo'>Fahrzeuge</option>
			<option value="tier" ';if ($fehler!=NULL){if($typ=='tier'){echo'selected';}} echo'>Tierbedarf</option>
			<option value="musik" ';if ($fehler!=NULL){if($typ=='musik'){echo'selected';}} echo'>Musikinstrumente</option>
			<option value="moebel" ';if ($fehler!=NULL){if($typ=='moebel'){echo'selected';}} echo'>Möbel</option>
			<option value="kleidung" ';if ($fehler!=NULL){if($typ=='kleidung'){echo'selected';}} echo'>Kleidung</option>
			<option value="koerper" ';if ($fehler!=NULL){if($typ=='koerper'){echo'selected';}} echo'>Körperpflege</option>
			<option value="nahrung" ';if ($fehler!=NULL){if($typ=='nahrung'){echo'selected';}} echo'>Nahrungs- und Genußmittel</option>
			<option value="alchimi" ';if ($fehler!=NULL){if($typ=='alchimi'){echo'selected';}} echo'>Alchimistische Stoffe</option>
			<option value="spezielles" ';if ($fehler!=NULL){if($typ=='spezielles'){echo'selected';}} echo'>Specielles</option>
	</select>
		<p>Name:<input name="name" size="30" value="';if ($fehler!=NULL){echo $name;}echo'">
		<p>Preis:<input name="preis" size="5" value="';if ($fehler!=NULL){echo $preis;}echo'">Silbertaler
		<p>Gewicht:<input name="gewicht" size="5" value="';if ($fehler!=NULL){echo $gewicht;}echo'">
		<p>Größe:<input name="groesse" size="3" value="';if ($fehler!=NULL){echo $groesse;}echo'">
		<p>Beschreibung:<br><textarea cols="50" rows="5" name="beschreibung">';if ($fehler!=NULL){echo $beschreibung;}echo'</textarea>
		<p>Regeln(Spieltechnische bewandniss):<br><textarea cols="50" rows="5" name="oregel">';if ($fehler!=NULL){echo $oregel;}echo'</textarea>
		<p>
		<input type="checkbox" name="magisch" value="1" ';if ($fehler!=NULL){if($magisch==1){echo'checked';}}echo'>magiescher Gegenstand
		<p><input type="submit" value="Speichern" name="speichern"><input type="reset"></from>';
	}
da kommt dann das bei raus

Code: Alles auswählen

		<form name="formular" action="index.php?action=ausruestungeintragen" method=post>
		Kategorie:<select name="typ">
			<option value="" >Bitte Kategorie wählen</option>
			<option value="ruestzeug" >Rüstzeug, Gürtel, Scheiden und Köcher</option>
			<option value="koch" >Koch- und Eßgeschirr</option>
			<option value="werkzeug" >Werkzeuge</option>
			<option value="beleuchtung" >Beleuchtung</option>
			<option value="behaelter" >Behälter</option>
			<option value="seile" >Seile, Netze und Ketten</option>
			<option value="reisebedarf" >Reisebedarf</option>
			<option value="schreib" >Schreibwaren, Feinmechanik und Optik</option>
			<option value="spielzeug" >Spielzeug und Schmuck</option>
			<option value="fahrzeuge" >Fahrzeuge</option>
			<option value="tier" >Tierbedarf</option>
			<option value="musik" >Musikinstrumente</option>
			<option value="moebel" >Möbel</option>
			<option value="kleidung" >Kleidung</option>
			<option value="koerper" >Körperpflege</option>
			<option value="nahrung" >Nahrungs- und Genußmittel</option>
			<option value="alchimi" >Alchimistische Stoffe</option>
			<option value="spezielles" >Specielles</option>
	</select>
		<p>Name:<input name="name" size="30" value="">
		<p>Preis:<input name="preis" size="5" value="">Silbertaler
		<p>Gewicht:<input name="gewicht" size="5" value="">
		<p>Größe:<input name="groesse" size="3" value="">
		<p>Beschreibung:<br><textarea cols="50" rows="5" name="beschreibung"></textarea>
		<p>Regeln(Spieltechnische bewandniss):<br><textarea cols="50" rows="5" name="oregel"></textarea>
		<p>
		<input type="checkbox" name="magisch" value="1" >magiescher Gegenstand
		<p><input type="submit" value="Speichern" name="speichern"><input type="reset"></from>
Bei nem kleine test, kommen alle Umlaute richtig an.

Code: Alles auswählen

$atext=' ä, &auml;';
function ausgabe ($test)
{
echo $test;
echo ' ä, &auml;';
}
ausgabe ($atext)
Woran könnte das liegen, das die umlaut bei der nicht korrekt wieder gegeben werden?

BdT
Varmandra
Zuletzt geändert von varmandra am 06.03.2010, 19:57, insgesamt 3-mal geändert.

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von Epfi » 06.03.2010, 19:25

In html Umlaute grundsätzlich per &auml; usw. schreiben - ebenso wie &, &szlig; usw... Habe dafür ne Funktion, die das für mich übernimmt. Dadurch sind die Daten in der Datenbank leserlich, bei der Ausgabe aber korrektes html.

Ansonsten: statt

Code: Alles auswählen

if(a)
{
    if(b)
    {
         if(c)
         {
              blubb();
         }
    }
}
kannst Du einfacher

Code: Alles auswählen

if (a && b && c)
{
    blubb();
}
schreiben. Ist irgendwie übersichtlicher. In PHP kannst Du statt && auch AND schreiben.

PS: "magischer Gegenstand" ohne ie ;)
Zuletzt geändert von Epfi am 06.03.2010, 19:26, insgesamt 1-mal geändert.
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 06.03.2010, 20:12

das komische ist, ich hab einfach mal den inhalt von ausruestungeintragen.php ind meine test.php kopiert, wenn jetzt die test.php geöfnet wird sind alle Umlaute korekt nur halt in der ausruestungeintragen.php nicht. hab auch mal mit UltraCompare verglichen ist alles gleich *grml*

Das mit dem umlauten wollt ich haben, da ich mir denke das es ein Probleme geben könnte.
tabele1, tabele2 und tabele3 sind per ID verknüpft, eine person hat die ID 1 somit gehören alle werte die in den tabellen die ID 1 haben zu ihm. jetzt ist es noch so das tabele3 noch mit tabele4 verbunden ist.

tabele3
ID
z
y
x
w
v
u
...

tabele4
ID
name = x (oder y usw)
probe
beschreibung

im namen kann jetzt halt ein Umlaut auf tauchen und wenn jetzt die umlaute funktionieren würde, hab ich mir gedacht ich brauch "name" nicht mehr überarbeiten...

BdT
Varmandra

Benutzeravatar
Epfi
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 10520
Registriert: 08.03.2004, 11:02
Wohnort: Haus, das Verrückte macht
Kontaktdaten:

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von Epfi » 06.03.2010, 20:55

Hast du mal die beiden quelltexte im browser verglichen, wenn du den inhalt in ne andere datei kopierst?

Du kannst die tabelle ja an sich so lassen, wie sie ist. Nur vor der ausgabe in den php-skripten musst du die umlaute durch ihr html-"kürzel" ersetzen. Dann klappt alles wunderbar und das html ist auch etwas korrekter...
hartware.net - *** ****** ***, ** ************ **** **** *********** ****.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 06.03.2010, 23:11

der code in den PHP dateien ist gleich, der quellode der beim browser landet ist unterschiedlich. in #43 ist der quelltext zu sehen (3. Code) da sind die Umlaute hatl voll verwurstelt bei dem Quellcode aus der test.php sind richtige Umlaute zu sehen.

Weiter zur Tabelle(n)

Code: Alles auswählen

			$sqle = 'INSERT INTO dsa_talente(typ, name, probe, beschreibung)
				VALUES(?, ?, ?, ?)';
			$statement = $db->prepare($sqle);
			if (!$statement){die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);}
			$statement->bind_param('ssss', $typ, $name, $probe, $beschreibung);
			if (!$statement->execute()){die ('Query konnte nicht ausgeführt werden: '.$statement->error);}
			else{
				$sqlwe = 'ALTER TABLE dsa_talentwerte ADD '.$name.' CHAR(30)';
				$werte = $db->query($sqlwe);
				if (!$werte){die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);}
				}
Und da kann jetzt für $name halt "Äxte und Beile" stehen ich denke mal das mit "ALTER TABLE dsa_talentwerte ADD '.$name.' CHAR(30)" auf Grund der Leerzeichen und des Umlaut Probleme gibt. am liebsten hätte ich ja die ID von tabele4 nehmen anstelle des "namen" aber da hatte ich halt bei der ALTER TABLE probleme, da er halt mit zahlen immer nen fehler ausgespuckt hat und ich vermute da kommen mir Umlaute und Leerzeichen genauso ungelegen.

BdT
Varmandra
Zuletzt geändert von varmandra am 06.03.2010, 23:17, insgesamt 1-mal geändert.

Leviathan
Captain
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 872
Registriert: 08.03.2004, 17:09
Wohnort: Kiel
Kontaktdaten:

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von Leviathan » 07.03.2010, 19:51

Epfi hat geschrieben:In html Umlaute grundsätzlich per &auml; usw. schreiben - ebenso wie &, &szlig; usw... Habe dafür ne Funktion, die das für mich übernimmt. Dadurch sind die Daten in der Datenbank leserlich, bei der Ausgabe aber korrektes html.
So ne Funktion gibts bereits eingebaut und heißt htmlentities().
Aber die sollte in der heutigen Zeit nicht mehr notwendig sein; HTML kann problemlos auch Umlaute enthalten. Es muss halt nur der richtige Zeichensatz angegeben sein. Hatten wir neulich erst: http://hartware.de/forum/viewtopic.php? ... 7&start=26

Ansonsten schau mal nach, dass die Daten aus der Datenbank nicht schon falsch vorliegen.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Mit PHP was in eine MySQL Datenbankschreiben

Ungelesener Beitrag von varmandra » 07.03.2010, 23:15

Die Sachen kommen ja nicht aus einer Datenbank, sonder aus einer Funktion in einer PHP Datei, und wie schon gesagt in der einen datei gehts in der anderen nicht, der einzige unterschied ist der Dateiname.

Ansonsten werden Umlaute ohne probleme umgesetzt, nur halt aus der Funktion nicht.

BdT
Varmandra
Zuletzt geändert von varmandra am 07.03.2010, 23:15, insgesamt 1-mal geändert.

Antworten