#1 5. Juni 2007 Frage wegen MySQL & PHP Hallo, da ich z.Z. PHP & MySQL lerne hab ich mal etwas gecodet. eintrag.php - Daten in die Datenbank eintragen connect.php - Daten von der Datenbank ausgeben jetzt würde ich gerne noch 2Sachen Coden. Unzwar edit.php und delete.php. Ich würde gerne die Kundenummer (heißt in der datenbank "kundennummer") bei der edit.php per einem drop down feld auswählen lassen. Wenn eine Nummer ausgewählt wurde wie z.B. 0001 kommen die ganzen Daten von 0001 (Straße, PLZ, Telefon). Dann kann man das einfach im Formular ändern und mit einem Submit button die geänderten sachen in die Datenbank speichern. Bei der delete.php hab ich leider noch keine Ahnung wie ich das realisieren soll. + Multi-Zitat Zitieren
#2 5. Juni 2007 AW: Frage wegen MySQL & PHP Wie wärs einfach bei der edit.php eine Checkbox "Löschen" zu machen. Ist gar nicht mal so unüblich. Dann ersparst du dir die delete.php + Multi-Zitat Zitieren
#3 5. Juni 2007 AW: Frage wegen MySQL & PHP du kannst ebenfalls ein drop down machen indem du auch die id's listet. dann wählst du eine id aus und gibst du die id auf die delete.php mit DELETE FROM `asdads` WHERE id = $ausgewaehlte_id + Multi-Zitat Zitieren
#4 5. Juni 2007 AW: Frage wegen MySQL & PHP Stimmt ein Drope Down feld für id's könnte ich machen, jedoch hab ich keine Ahnung wie ich das machen soll wenn man z.B. eine id auswählt das automatisch gleich die ganzen daten kommen ok, wird gemacht! + Multi-Zitat Zitieren
#5 5. Juni 2007 AW: Frage wegen MySQL & PHP das mit der automatischen einfügen der daten nachm dropdown geht nur mit javascript, musst mal auf ne antwort der spezis hier warten. oder du machsts in 2 schritten: 1) kundennummer auswählen, absenden 2) daten anzeigen zum ändern. ist ja eig kein problem, oder? PHP: if(isset( $_POST [ 'sel_nr' ])) // id ausgewählt? { $qry = "SELECT daten FROM tabelle WHERE kundennummer = '" . $POST [ 'kundennummer' ]. "';" ; if( $result = mysql_query ( $qry )) { $row = mysql_fetch_assoc ( $result ); // und hier das formular mit daten aus $row füttern ... das ist ja net so schwer ;) // und dann einfach wieder abschickn lassen und mit UPDATE ändern } else { echo 'Fehler bei der Query-Verarbeitung! <br />' ; echo mysql_error (); }}else // wenn net, dropdownfeld anzeigen! { $qry = "SELECT kundennummer FROM tabelle ORDER BY kundennumer ASC;" ;if( $result = mysql_query ( $qry )){ echo '<form action="edit.php" method="post">' ; echo '<select name="kundennummer">' ; while( $row = mysql_fetch_assoc ( $result )) { echo '<option value="' . $row [ 'kundennummer' ]. '">' . $row [ 'kundennummer' ]. '</option>' ; } echo '</select>' ; echo '<input type="submit" name="sel_nr" value="Auswählen" />' ; echo '</form>' ;}else{ echo 'Fehler bei der Query-Verarbeitung! <br />' ; echo mysql_error ();}} zur delete.php: entweder wie gesagt noch n häkle oder nen zusätzlichen button zum löschen dazu, oder wie oben auch, nur überspringst du das anzeigen der daten und löscht gleich. PHP: $k_nr = $_POST [ 'kundennummer' ]; // die nummer, die du über das form kriegst $qry = "DELETE FROM tabelle WHERE kundennummer = '" . $k_nr . "' LIMIT 1;" ;if( mysql_query ( $qry )){ echo $k_nr . ' gelöscht!' ;}else{ echo $k_nr . ' konnte nicht gelöscht werden!' ;} + Multi-Zitat Zitieren
#6 5. Juni 2007 AW: Frage wegen MySQL & PHP Wofür denn da schon mit JS hantieren? Optionsvalue des Select Menüs absenden und darauf reagieren. Ich sehe das Problem nicht so richtig. Aber muss hier strikt gegen manche Tipps raten. PHP: $k_nr = $_POST [ 'kundennummer' ]; // die nummer, die du über das form kriegst $qry = "DELETE FROM tabelle WHERE kundennummer = '" . $k_nr . "' LIMIT 1" ; if( mysql_query ( $qry )) { echo $k_nr . ' gelöscht!' ; } else { echo $k_nr . ' konnte nicht gelöscht werden!' ; } Das ist absolut böse!!!! Richtig wäre es PHP: $k_nr = (int) $_POST [ 'kundennummer' ]; // die nummer, die du über das form kriegst $qry = "DELETE FROM tabelle WHERE kundennummer = { $k_nr } " ; if( mysql_query ( $qry )) { return true ; } return false ; Echo hatte ich jetzt mal außen vor gelassen und der Primary Key sollte auch ordentlich genutzt werden! Weißt du nicht wie du die Daten der Id entsprechend ausliest oder wo ist das Problem? + Multi-Zitat Zitieren
#7 5. Juni 2007 AW: Frage wegen MySQL & PHP Wie meinst du das? *duck* PHP: $abfrage = "SELECT id FROM tabelle" ; + Multi-Zitat Zitieren
#8 5. Juni 2007 AW: Frage wegen MySQL & PHP eben, würd ich acuh machen, ich verwende eig nie javascript, da ist man immer zu abhängig vom client. wieso? ^^ sry der sinn ist mir grad entgangen, kannst du mich bitte aufklären? (bitte immer offen für verbesserungen ) + Multi-Zitat Zitieren
#9 5. Juni 2007 AW: Frage wegen MySQL & PHP Ja genau, und wo ist dann dein Problem? Die Möglichkeiten zum Löschen haben wir ja jetzt bereits und zum Erstellen, liest du dann einfach die Daten der ID entsprechend aus, schreibst sie in die values des formulars, macht vielleicht auch noch ein hidden feld mit der ID und kannst dann über dieses menü deinen eintrag ändern. Ändern Ist in dem Fall der UPDATE - SQL Befehl. Richtig so sieht es aus und für einen "Anfänger" imho vielleicht auch noch nicht nötig. Du hast dich mit deinem Quellcode höchstens darauf verlassen, dass magic quotes an sind. Sollten diese aber aus sein oder einen Fehler birgen hast du hiermit eine Vorlage für eine SQL - Injection gegeben . . . . . . + Multi-Zitat Zitieren
#10 5. Juni 2007 AW: Frage wegen MySQL & PHP @ MarkenX es gibt leider zuviele, die nicht wissen was das (int) zb da soll und warum nciht so wie er es gemacht hat einfach kurz und knapp erklären, ich hoffe ich darf das mal: (int) sorgt dafür, dass der string, der übergeeben wird, ausschließlich numerisch ist. damit sorgst du dafür, das sowas wie : "2;SQL INJECTION" nicht funktioniert, da nur ein numerischer Wert durch (int) zurückgegeben wird. Daher nutzte sowas niemals ohne das Weiteres hier: http://www.dynamicwebpages.de/php/language.types.integer.php Ich würd gern mal den Code von der Eintrag.php sehen ^^ Vllt kann man da ja helfen + Multi-Zitat Zitieren
#11 5. Juni 2007 AW: Frage wegen MySQL & PHP Offtopic (evtl.) Sollte man eher PHP: (int) $var benutzen oder PHP: intval ( $var ) oder PHP: settype ( $var , integer ) oder ist das relativ irrelevant (ich meine jetzt die Geschwindigkeit & alles... ) + Multi-Zitat Zitieren
#12 5. Juni 2007 AW: Frage wegen MySQL & PHP boinger hat n Script online gestellt zum testen der Geschwindigkeit... Benutz das und find es heraus :] Learning by Doing nech? + Multi-Zitat Zitieren
#13 5. Juni 2007 AW: Frage wegen MySQL & PHP Ziemlich sinnlos imo, man könnte es auch eben hier schreiben, wenn man's weiß. + Multi-Zitat Zitieren
#14 5. Juni 2007 AW: Frage wegen MySQL & PHP Ist eigentlich so ziemlich wurscht würde ich sagen, je nach Stil und Geschmack, wobei settype eher zur Prüfung gedacht ist (denn es wird bool zurück gegeben) und mehr Code verursacht, weniger Code heißt normalerweise auch schneller, in dem Fall wäre dann (int) das beste .... naja obwohl .... mach wie es dir am besten schmeckt, hauptsache ist dass du die Zahlenwerte kontrollierst. In dem Fibonacci - Thread hat sich bei mir leider gezeigt dass die settype dazu im moment auch irgendwie buggy ist, aber nun ja. @Cydoc, naja hast schon Recht, aber da es für sowas php.net hab ich das jetzt einfach außen vorgelassen. + Multi-Zitat Zitieren
#15 5. Juni 2007 AW: Frage wegen MySQL & PHP Beim Fibonacci habe ich settype benutzt, und es war merklich schneller als intval.. Wollt nur nochma euch "konsultieren", vllt lags ja auch nur an meinem PC das es dann auf einma nur noch ein zehntel der Zeit benötigte. + Multi-Zitat Zitieren
#16 5. Juni 2007 AW: Frage wegen MySQL & PHP Jo ich hab mit Settype Buchstaben überprüft und es kam true raus, ist ja nicht wirklich sinn der sache .... + Multi-Zitat Zitieren
#17 5. Juni 2007 AW: Frage wegen MySQL & PHP Wie überprüft? Soweit ich weiß "ändert" (set) die Funktion doch nur den Type der Variable, und gibt true zurück wenns funktioniert hat? Da kann man doch nich wirklich was mit überprüfen, oder versteh ich dich falsch. MfG + Multi-Zitat Zitieren
#18 5. Juni 2007 AW: Frage wegen MySQL & PHP mit settype überprüft man ja auch keine variablen, das macht man mit is_string() usw...^^ settype() braucht glaub ich ein klein wenig länger als intval(), mein ich irgendwo gelesen zu haben PHP: $var = "hallo" ; $var2 = "0" ; $var3 = "1" ; $var4 = 1 ; settype ( $var , 'integer' ); settype ( $var2 , 'bool' ); settype ( $var3 , 'bool' ); settype ( $var4 , 'string' ); echo gettype ( $var ). "<br/>" ; // integer echo gettype ( $var2 ). "<br/>" ; // boolean (false) echo gettype ( $var3 ). "<br/>" ; // boolean (true) echo gettype ( $var4 ). "<br/>" ; // string ich verwende meist intval(); weil ichs mir einfach angewöhnt hab (int) oder (bool) verwend ich nur bei sachen wie ini_get("dies_das") usw btw: settype gibt immer true zurück + Multi-Zitat Zitieren
#19 5. Juni 2007 AW: Frage wegen MySQL & PHP Jo normalerweise schon, aber was z.B. konkret dieser Satz ? Was is in dem Fall, ist dann ein Fehlerfall? Normalerweise kann ich ja damit leben, die referenz der variablen die übergeben wird, wird zu einer typensicheren Zahl, ist es ein String wird die Referenz 0 und settype gibt true zurück. Ist ja auch vollkommen ok und der Fehlerfall bedeutet was anderes ... ABER .... bei mir blieb die Referenz ein String und es wurde true zurückgegeben .... Struktur war so PHP: <? php $foo = 'bar' ; if ( settype ( $foo , 'integer' )) { echo $foo ; } ?> Und es kam der String beim echo raus .... oder wie letztens mein Problem mit den header funktionen und status codes, oder dem fehlenden mysqli-objekt von dem ich berichtete ... komisch im moment bei mir irgendwie. @Murdoc-4D ... siehe mein Schnipsel, keine Überprüfung von Variablen? + Multi-Zitat Zitieren
#20 5. Juni 2007 AW: Frage wegen MySQL & PHP PHP: <? php $string = 'Hallo' ; if( settype ( $string , 'integer' )) { echo $string ; if( is_int ( $string )) echo ' <- is int!' ; } ?> Output: Code: 0 <- is int! Also wirds zu nem integer, und damit zu 0 EDIT: Der Rückgabewert zeigt also nur ob die Transformation "geklappt" hat! Kann ja sein das es aus nem unerfindlichen Grund (mir fällt keiner ein...) nicht funktioniert, und dann sollte man dies überprüfen und ggf. das Script abbrechen oder anders an die Variable rangehen (intval o.ä. je nachdem) ... ? + Multi-Zitat Zitieren
#21 5. Juni 2007 AW: Frage wegen MySQL & PHP Und was versteh ich daraus? Könnt ihr mal das für einen Anfänger bitte erklären + Multi-Zitat Zitieren
#22 5. Juni 2007 AW: Frage wegen MySQL & PHP ja schon aber in meinen augen keine sinnvolle, da man sich das "if" spaaren kann. PHP: $foo = "bar" ; settype ( $foo , 'integer' ); echo $foo ; oder PHP: echo $foo = intval ( "bar" ); is 1. weniger zu schreiben und 2. brauchts ned so lang + Multi-Zitat Zitieren
#23 5. Juni 2007 AW: Frage wegen MySQL & PHP Hast du nicht gelesen? Ich habe dem boing eine Version mit settype abgeliefert, in der ich, wie oben beschrieben, die Funktion in der selben Art und Weise anwendete und die übergebene Referenz ein String geblieben ist. Ich dachte ich hätte mich oben schon deutlich ausgedrückt!? @Murdoc ja das ist richtig, aber ich nahm an, dass der Fehlerfall mit false dann eintritt, wenn man konkurrierende Angaben macht. Und dann hätte es gepasst. + Multi-Zitat Zitieren
#24 5. Juni 2007 AW: Frage wegen MySQL & PHP Ist ja nicht nur für Integer. Kannst ja auch PHP: <? php $blub = 100 ; settype ( $blub , 'string' ); ?> o.ä. machen.. Oder halt eins davon: "boolean" (or, since PHP 4.2.0, "bool") "integer" (or, since PHP 4.2.0, "int") "float" (only possible since PHP 4.2.0, for older versions use the deprecated variant "double") "string" "array" "object" "null" (since PHP 4.2.0) Oder gibts "arrayval()" oder "stringval()" oder andere Funktionen die "sowas" machen? mfG. EDIT: Ich habe sehr wohl gelesen, aber bei mir hat's ja funktioniert mit dem set integer. Kannst ja mal n explizites Beispiel zeigen wo jenes nicht funktioniert? + Multi-Zitat Zitieren
#25 5. Juni 2007 AW: Frage wegen MySQL & PHP strval() PHP: echo gettype ( strval ( 1 )); // string http://de2.php.net/manual/de/function.strval.php macht aus einer zahl einen string, stript diese aber nicht settype() gibt zb false wenn übergabewert 1 oder 2 fehlt, ansonten immer true... + Multi-Zitat Zitieren