[PHP] Frage wegen MySQL & PHP

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Aslan, 5. Juni 2007 .

Schlagworte:
  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.
     
  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
     
  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
     
  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!
     
  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&auml;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&ouml;scht!' ;
    }
    else
    {
       echo 
    $k_nr . ' konnte nicht gel&ouml;scht werden!' ;
    }
     
  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&ouml;scht!' ;
    }
    else
    {
       echo 
    $k_nr . ' konnte nicht gel&ouml;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?
     
  7. 5. Juni 2007
    AW: Frage wegen MySQL & PHP

    Wie meinst du das?

    *duck*
    PHP:
    $abfrage  "SELECT id FROM tabelle" ;
     
  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 )
     
  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 . . . . . .
     
  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
     
  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... )
     
  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?
     
  13. 5. Juni 2007
    AW: Frage wegen MySQL & PHP

    Ziemlich sinnlos imo, man könnte es auch eben hier schreiben, wenn man's weiß.
     
  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.
     
  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.
     
  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 ....
     
  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
     
  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
     
  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?
     
  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) ... ?
     
  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
     
  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
     
  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.
     
  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?
     
  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...
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.