Eintrag in MySQL Datenbank nur bis zum ersten Leerzeichen

McMatze

Enthusiast
Thread Starter
Mitglied seit
14.05.2005
Beiträge
275
Ort
Bremen
Hi!

Habe wieder mal ein kleines Problem.
Ich lese aus einer MySQL Datenbank Namenheraus. Z.B. Herr Soundso.
Dann lasse ich mir diese Namen in einer Auswahlliste anzeigen und kann diese dann auch auswählen. Wenn ich aber dann diese Namen in eine andere MySQL-DB eintragen lassen will, dann tut er dies nur bis zum ersten Leerzeichen. Wie kann ich das ändern??


Würde ja gerne auch das Script posten, aber weiß nicht, welchen Teil davon nützlich ist und ich posten soll... :(


Wäre trotzdem dankbar für jede Idee!
MfG
da NoobI
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
und wie soll man jetz helfen ohne script ?

schau wo der fehler liegen könnte und poste nur den teil ...
 
Vielleicht hier? :)
PHP:
			//Den Datenbankeintrag vorbereiten
			$insert_query =	"INSERT INTO tb_aufgaben ( snr, ereignis, eingetragen_von, eingetragen_am, faellig_am, wird_erledigt_von ) VALUES ( ";
			$insert_query .=	" '" . $_REQUEST["form_schule"] . "', ";
			$insert_query .=	" '" . $_REQUEST["form_ereignis"] . "', ";
			$insert_query .=	" '" . $_REQUEST["form_eingetragen"] . "', ";
			$insert_query .=	" '" . $datum . "', ";
			$insert_query .=	" '" . $_REQUEST["form_faellig"] . "', ";
			$insert_query .=	" '" . $_REQUEST["form_mitarbeiter"] . "' ";
			$insert_query .=	" ) " ;
 
da die ganzen daten im array $_REQUEST stehen schaetz ich mal direkt aus dem forum, was ich wiederum aus den key namen schließe :d
 
Welches Format hat die Spalte der Datenbank, wo du die Sachen speichern möchtest? Vielleicht haste da einfach nur den falschen Datentyp drin stehen ;)

MfG TrOuble
 
@burni87
Die Daten kommen aus einer Auswahlliste, in denen Namen stehen. Dort stehen die voollständigen Namen ja auch korrekt alle richtig drinne. Nur scheint es da ein Problem beim eintragen zu geben...
Hier werden die Daten in deiner Auswahlliste angezeigt.
PHP:
<?php 
//In der Liste einen Mitarbeiter auswaehlen
  for ($i = 1; $i <= $mitarb_anzahl; $i++) {
    $mitarb_datensatz = mysql_fetch_array($mitarb_result);
    echo "<option value=".$mitarb_datensatz["mitarbeiter"].">".$mitarb_datensatz["mitarbeiter"]."</option>";
}
?>

Und hier sollen(...) sie eingetragen werden:
PHP:
		if ($error_msg == "") {
			//Den Datenbankeintrag vorbereiten
			$insert_query =	"INSERT INTO tb_aufgaben ( snr, ereignis, eingetragen_von, eingetragen_am, faellig_am, wird_erledigt_von ) VALUES ( ";
			$insert_query .=	" '" . $_REQUEST["form_schule"] . "', ";
			$insert_query .=	" '" . $_REQUEST["form_ereignis"] . "', ";
			$insert_query .=	" '" . $_REQUEST["form_eingetragen"] . "', ";
			$insert_query .=	" '" . $datum . "', ";
			$insert_query .=	" '" . $_REQUEST["form_faellig"] . "', ";
			$insert_query .=	" '" . $_REQUEST["form_mitarbeiter"] . "' ";
			$insert_query .=	" ) " ;
		
			//In die Datenbank eintragen
			$insert_result = mysql_query($insert_query);
	
			//Wenn nicht gekalppt
			if (!$insert_result) {
				die("Konnte nichts in die Datenbank eintragen.<br> ".mysql_error());
      }
		}


@TrOuble@LLM
Also Format der Spalte in der Datenbank war Varchar. Habe das eben einmal, zum Test, auf Text umgestellt, aber dann habe ich das selbe Problem.
 
PHP:
<?php 
//In der Liste einen Mitarbeiter auswaehlen
  for ($i = 1; $i <= $mitarb_anzahl; $i++) {
    $mitarb_datensatz = mysql_fetch_array($mitarb_result);
    echo "<option value=\"".$mitarb_datensatz["mitarbeiter"]."\">".$mitarb_datensatz["mitarbeiter"]."</option>";
}
?>
das wäre das erste was ich mal aendern wuerde :)
 
Code:
$insert_query =    "INSERT INTO tb_aufgaben ( snr, ereignis, eingetragen_von, eingetragen_am, faellig_am, wird_erledigt_von ) VALUES ( ";
            $insert_query .=    " '" . $_REQUEST["form_schule"] . "', ";
            $insert_query .=    " '" . $_REQUEST["form_ereignis"] . "', ";
            $insert_query .=    " '" . $_REQUEST["form_eingetragen"] . "', ";
            $insert_query .=    " '" . $datum . "', ";
            $insert_query .=    " '" . $_REQUEST["form_faellig"] . "', ";
            $insert_query .=    " '" . $_REQUEST["form_mitarbeiter"] . "' ";
            $insert_query .=    " ) " ;

Jezus, wie sowas immer lustig zum Ansehen ist o_O NOT! (ich wollte schon immer mal so nen NOT satz sagen!! :d )

Das ist 1. nur performance fressend, und 2. sieht total bescheuert aus. Wenn man schon die Ordnung bei längeren Inserts erhalten will, dann trotzdem nur mit einer Var. Oder eben nur in einer Var, ohne Ordnung (die radikale Variante halt):

Code:
$insert_query = "INSERT INTO `tb_aufgaben` (`snr`,`ereignis`,`eingetragen_von`,`eingetragen_am`,`faellig_am`,`wird_erledigt_von`) VALUES ('".$_REQUEST['form_schule']."','".$_REQUEST['form_ereignis']."','".$_REQUEST['form_eingetragen']."','".$datum."','".$_REQUEST['form_faellig']."','".$_REQUEST["form_mitarbeiter"]."')";

Ich hoffe keine Rechtschreibfehler verbaut zu haben... Kannst ja mal testen... Ist nun auch n Badwords Filter drin, und die Struktur wurde bisschen umgebastelt.

An deiner Stelle würd ich das sowieso mal komplett anders machen.

Nämlich so:
Code:
if (!isset($error_msg)) {
            mysql_query("INSERT INTO `tb_aufgaben` (`snr`,`ereignis`,`eingetragen_von`,`eingetragen_am`,`faellig_am`,`wird_erledigt_von`) VALUES ('".$_REQUEST['form_schule']."','".$_REQUEST['form_ereignis']."','".$_REQUEST['form_eingetragen']."','".$datum."','".$_REQUEST['form_faellig']."','".$_REQUEST["form_mitarbeiter"]."')") or die(mysql_error());
}

Kürzer - schöner - sollte auch funken.

Ebenso sollte man die Spaltennamen nicht so ellenlang vergeben. "freigegeben_am", oder "eingetragen_von" - da wäre "released" und "author" viel schöner ;) Englisch ftw!

Und:
Wie Nascar schon sagte, würde ich das auch mal ändern. Der Wert der Auswahlmöglichkeiten entspricht der angezeigten Auswahlmöglichkeit. Als Wert sollte man die ID oder so nehmen. Aber das ist jeden seine eigene Sache, und DB-Struktur-abhängig...

regards, me
 
Ach manno...

Da hatte ich schon Hoffnung, dass ich dem Problem auf die Spur komme (mit eurer Hilfe ;)) und dann funktioniert das alles trotzdem nicht.

Habe alles einmal so geändert, wie ihr das beide gesagt habt.
ABER: immer noch dasselbe Problem. :wall: :wall:



PS: Ich bin noch ziemlich neu im Bereich PHP/HTML etc. usw. Deswegen nicht wundern, wenn da manchmal solche "dummen" Fehler bei sind ;) Ich lerne noch :bigok:
 
Das ist ja mal komisch... Evtl. liegts am restlichen Code, der hier nicht steht! :O
 
Soll ich jetzt den ganzen Code hier reinposten? ...
Kann ich machen, ist kein Problem... Aber wer hat Lust sich das durchzulesen? ...


Außerdem lachen mich dann wieder alle aus, weil ich manche Sachen noch sehr umständlich mache... :(
 
Ohne den Thread jetzt mal komplett gelesen zu haben, gehe ich mal davon aus, dass bei dir im Code irgendwo, wo du die Strings für die Datenbank übergibst Anführungsstriche fehlen...

statt so (richtig):

$text = "kljasflk kljsdfl kjlk lkjasd fkllkajsdf"

etwa so (falsch):

$text = klsjadfl kklfjaslkdfj laskjdf lksajdlfk j

php oder mysql oder was auch immer meint dann, dass $text lediglich "klsjadfl" ist und der rest anderweitig hin gehört;
 
Für eine aktuelle Datenbank Implementierung mit PHP schau Dir mal PHP Data Objects (PDO) an. Ich empfehle ausserdem mal die Lektüre gängiger Fachliteratur zum Thema SQL-Injection, anstatt, wie hier teilweise empfohlen, irgendwelche strings und sql statements zu mergen.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh