Anfänger braucht Hilfe allgemein

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anfänger braucht Hilfe allgemein

    Hab mich seit heut morgen mal mit SQL beschäftigt. Grund ist das ich eine DB erzeugen will mit lautern Daten die ich alle schon in $variablen hab. Jetzt hab ich das Problem das ich hier 2 Bücher liegen hab die beide was anderes sagen wie man PHP mit SQL behandeln muss. Dann hab ich noch devise HPs angeschaut aber auch die unterscheiden sich wie man Zugriffe macht oder ähnliches. Habs jetzt mal so probiert.

    PHP-Code:
    $link mysql_connect("localhost""mein_username""mein_passwort");
    if (!
    $link)
    die(
    "Kann den Server nicht erreichen.");
    if (!
    mysql_select_db("dbftp"$link))
    {
        echo
    "Kann die Datenbank nicht anwählen.";
    }
    else
    {
        
    create table temp;
        (
        
    ftpname char,
        
    username char(30),
        
    passwort char(30),
        
    port int(5),
        
    pfad char,
        
    datei char,
        
    dateiendung char(5),
        
    groesse int
        
    );
        
    rekursiv($servername$benutzername$passwort$port$open$fx$suche);

    Bekomm gleich mal für die erste Zeile eine Fehlermeldung
    Parse error: parse error in C:\apache\htdocs\ftp\suchskript3.php on line 78

    Muss ich erst ein Aufruf machen das jetzt php kommt oder was muss ich machen?

    Kleiner Auszug aus phpmyadmin
    "Datenbank dbftp auf localhost
    Keine Tabellen in der Datenbank gefunden. "

    Mfg Markus

  • #2
    so sollte/wird es gehen

    PHP-Code:
    <?php

      $link 
    mysql_connect("localhost""mein_username""mein_passwort");
      @
    mysql_select_db"dbftp" ) or die("Unable to select database");

      
    $sql "create table temp (
                ftpname char,
                username char(30),
                passwort char(30),
                port int(5),
                pfad char,
                datei char,
                dateiendung char(5),
                groesse int )"
    ;
                
      
    $result mysql_query($sql) or die(mysql_errno().": ".mysql_error());
      
      
    // dies ist nur zum test da ... ;)
      
    echo mysql_errno().": ".mysql_error();


      
    // wofür ist das? habs mal wegkommentiert. ;-)
      // rekursiv($servername, $benutzername, $passwort, $port, $open, $fx, $suche);

    ?>
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      PHP-Code:
        $result mysql_query($sql) or die(mysql_errno().": ".mysql_error());
        
        
      // dies ist nur zum test da ... <img src="images/smilies/wink.gif" border="0" alt="">
        
      echo mysql_errno().": ".mysql_error(); 
      Könntest du mir bitte geschwind erklären wofür das da ist? Oder wenn du eine Adresse zu einem Online Tut hast wäre ich darüber auch sehr happy!!!


      // wofür ist das? habs mal wegkommentiert. ;-)
      // rekursiv($servername, $benutzername, $passwort, $port, $open, $fx, $suche);
      Erklärung
      Aus der Funktion heraus soll die Tabelle mit den nötigen Daten versorgt werden. Noch eine Frage wofür brauch ich $sql = ... . Reicht da der normale Aufruf so wie ich in geschrieben hab nicht?

      Mfg Markus

      Kommentar


      • #4
        Original geschrieben von markusschmitt
        Könntest du mir bitte geschwind erklären wofür das da ist? Oder wenn du eine Adresse zu einem Online Tut hast wäre ich darüber auch sehr happy!!!
        http://www.php.net/manual/de/

        Original geschrieben von markusschmitt
        Reicht da der normale Aufruf so wie ich in geschrieben hab nicht?
        nein. schliesslich ist das CREATE ... ein sql kommando und kein php-befehl.

        ich habe das nur in ein var $sql gepackt, damit es schöner aussieht. du könntest natürlich auch ....
        PHP-Code:
        $result mysql_query("create table temp (
                                ftpname char,
                                username char(30),
                                passwort char(30),
                                port int(5),
                                pfad char,
                                datei char,
                                dateiendung char(5),
                                groesse int )"
        ) or die(mysql_errno().": ".mysql_error()); 
        .... schreiben, aber NIEMALS das CREATE direkt ... siehe manual (link oben)
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Jetzt brauch ich nochmal Hilfe

          Fülle gerade meine Tabelle über die Funktion
          PHP-Code:
          //---------------Funktionsbeginn------------------

          function rekursiv($ordner)
          {
              global 
          $servername,$benutzername,$passwort,$port,$open;
              
          $nlist ftp_nlist($openftp_pwd($open));
              for(
          $i =0$i sizeof($nlist); $i++)
              {
                  
          $verz ftp_pwd($open);
                  echo 
          "$verz<br>";
                  
          $htmldatei $nlist[$i];
                  echo 
          "$htmldatei<br>";
                  if (@
          ftp_size($open$nlist[$i]))
                  {
                      
          $groesse ftp_size($open$nlist[$i]);
                      
          $groesse = (integer) ($groesse 1024);
                      echo 
          "$groesse<br><p>";
                      
          $result mysql_query("insert temp values (
                                     '
          $servername',
                                     '
          $benutzername',
                                     '
          $passwort',
                                     '
          $port',
                                     '
          $verz',
                                     '
          $htmldatei',
                                  '
          $endung',
                                     '
          $groesse')") or die(mysql_errno().": ".mysql_error());

                  }
                  else
                  {
                      
          $baum "0";
                      echo 
          "$baum<br><p>";
                      
          $result mysql_query("insert temp values (
                                  '
          $servername',
                                  '
          $benutzername',
                                  '
          $passwort',
                                    '
          $port',
                                     '
          $verz',
                                    '
          $htmldatei',
                                  '
          $endung',
                                     '
          $baum')") or die(mysql_errno().": ".mysql_error());
                  }
                  if (@
          ftp_chdir($open$nlist[$i]))
                  {
                      
          $ordner ftp_pwd($open);
                      
          rekursiv($ordner);
                      
          ftp_cdup($open);
                  }
              }
          }

          //--------------Funktionsende-------------------- 
          Die Ausgabe sieht folgendermaßen aus

          /E:/FTP Server/--==[E-Books]==--/--==[Computer Bücher allgemein]==--
          Administration eines Apache Servers (german).pdf
          1089


          /E:/FTP Server/--==[E-Books]==--/--==[Computer Bücher allgemein]==--
          ANSI-ISO C++ Professional Programmer's Handbook.pdf
          1029


          1064: You have an error in your SQL syntax near 's Handbook.pdf', '', '1029')' at line 7
          Auszug aus phpmyadmin
          Zeilenstatistik : Angaben Wert
          Format starr
          Zeilen 13
          Zeilenlänge ø 570
          Zeilengröße ø 649 Bytes

          Also er bleibt mir in der 13 Zeile stehen und macht nichts mehr auser der Fehlermeldung aber warum läuft es nicht weiter?

          So sieht die Tabelle aus die ich iniziere!
          PHP-Code:
          $link mysql_connect("localhost""""");
          @
          mysql_select_db"dbftp" ) or die("Unable to select database");
          $result mysql_query("create table temp (
                                  ftpname char(40),
                                  username char(30),
                                  passwort char(30),
                                  port int(5),
                                  pfad char(255),
                                  datei char(200),
                                  dateiendung char(5),
                                  groesse int(20) )"
          ) or die(mysql_errno().": ".mysql_error()); 
          Warum bleibt der mir hängen?

          Kommentar


          • #6
            du hast einen syntax fehler in der sql anweisung in zeile 7 (die zeile 7 der sql-anweisung - nicht im php-script ) ....

            Code:
            1064: You have an error in your SQL syntax near 's Handbook.pdf', '', '1029')' at line 7
            checke mal deine daten in zeile 13 ab, was denn da so steht...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Sorry mein Kopf raucht, kann aber nichts entdecken. Ist mit Zeile 7 der inizierung gemeint ("port int(5),") oder die Stelle in der Funktion (" '$htmldatei',").

              meinst du mit Zeile 13 diese?
              $groesse = ftp_size($open, $nlist[$i]);

              Ich entdeck einfach nichts.
              Hab solange '$endung',
              auch noch definiert aber des hat auch nichts gebracht

              Gibts eigentlich irgendein Fehlermeldungsindex wo man erfahren kann was die Fehlernummer bedeutet?
              1064: You have an error in your SQL syntax near 's Handbook.pdf', '', '1029')' at line 7
              Wenn ja ist hier 1064 oder 1029 die Fehlernummer?

              Mfg Markus

              Kommentar


              • #8
                es geht nicht ums php-script und nicht um die funktion

                You have an error in your SQL syntax near 's Handbook.pdf'
                sieht danach aus, dass du z.B. in der zeile 13 die du gerade in die
                db einlesen willst, vielleicht einen text hast, der z.B. so aussieht:

                ..'bla','Peter[COLOR=red]'[/COLOR]s Handbook.pdf','bla',..

                besser is dat, wenn dort stünde:
                ..'bla','Peter[COLOR=red]\\'[/COLOR]s Handbook.pdf','bla',..


                also check mal die datensätze auf sonderzeichen
                Kissolino.com

                Kommentar


                • #9
                  OK, da ich jetzt keine Funktion kenne die solche Sonderzeichen kenn die mir des Abwandelt muss ich erst suche gehen aber ich gebe dir Recht die Datei die eigelesen wird sieht so aus
                  Programmer's Handbook
                  Ist das nur bei dem Abostroph so oder gibts da noch ander Zeichen, dann könnte man es durch explode vielleicht ändern.
                  Und ich hab mir schon überlegt warum da nur die halbe Datei steht. Also wenn ich nichts gefunden hab meld ich mich nochmal.

                  Danke

                  Mfg Markus

                  Kommentar


                  • #10
                    Habs damit gelöst
                    addslashes

                    Mfg Markus
                    Zuletzt geändert von markusschmitt; 27.03.2003, 20:57.

                    Kommentar


                    • #11
                      Jetzt brauch ich nochmal Hilfe,
                      Ich will aus einem String alle Sonderzeichen entfernen. Der String sieht folgendermaßen aus.
                      al-capone.dbh.hausbau.de
                      Hier müssen alle Zeichen wie . oder - oder + entfernt werden.
                      Ich brauch das weil ich eine Tabelle so nennen muss.
                      Ergebnis sollte so aussehen.
                      alcaponedbhhausbaude

                      Mein Code dafür.
                      PHP-Code:
                      $ausgabe preg_replace("/-|'|#|.|/","",$servername);
                      echo 
                      $ausgabe
                      Bekomm allerdings keinerlei Ausgabe. Woran liegt das ?

                      Mfg Markus

                      Kommentar


                      • #12
                        du willst eine tabelle so benennen? mal ne frage dazu..... hast du vor eine art counter pro eintrag zu machen? und willst für jeden eintragscounter eine neue tabelle erstellen???? ABRATEN kann ich dir nur!

                        wenn dem nicht so ist, solltest du auch im replace die sonderzeichen (teilweise] escapen.

                        $ausgabe = preg_replace("/\-|\'|\#|\.|/","",$servername);

                        kann sein, dass nciht alle escaped werden müssen. musst du mal testen.
                        ansonsten hilft die suche im forum auch weiter.
                        dbzgl. wurden schon fragen beantwortet.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Zur Frage, was das werden soll:

                          Soll ein auf Datenbank basierendes System werden das mir bestimmte FTPs einliest. Pro FTP sollen 1 Tabellen angelegt werden mitl Verzeichnissen und Dateien sowie den Spezifikation der Dateien wie Format und Größe und. Die Tabellen werden einwandfrei erzeugt. Um die Tabellen aktuell zu halten schreib ich mir gerade dieses einlese Skript welches mir eine temp Tabellen erzeugt. Wenn die Tabellen mit allen Daten versorgt sind soll die Tabelle in den aktuellen FTP benannt werden. Dazu muss ich natürlich erst die alte Tabelle löschen. Nur es gibt jetzt ersmal Probleme beim umbenennen. Zeichen die nicht gehen sind wie ich schon getestet habe "." sowie "-" . Zahlen gehen. Zur übersichtlichen Gestaltung will ich die Tabellen so nennen wie der FTP heißt da es jeden FTP nur einmal geben kann. Nur sehen die Daten für einen FTP nunmal so aus.
                          al-capone.dbh... also müssen jetzt alle - sowie . weg. Am Ende sollen inetwa so 10-20 Tabellen da stehen welche dann nach den Dateien über ein anderes Skript durchsucht werden.
                          Eine Lösung wäre die Namen zu codieren weil beim Codieren alle Zeichen in Buchstaben und Zahlen umcodiert werden aber das wäre nicht sehr übersichtlich wenn meine Tabellen gfdo32rsflsrfetce23r solche Namen hätten. Programmiere jetzt seit 7 Wochen daran bzw. mit PHP und finde eigentlich das ich schon sehr weit gekommen bin um jetzt an so einem Problem zu scheitern oder die Übersicht zu verlieren.

                          Mfg Markus
                          Zuletzt geändert von markusschmitt; 28.03.2003, 10:43.

                          Kommentar


                          • #14
                            ok. verstanden.

                            du solltest dein datenmodell überdenken.

                            im endeffekt wird das eine art linksammlung für ftp. vereinfacht ausgedrückt zumindest.

                            alle daten sind gleich in ihrer struktur. also würde ich diese auch in EINER TABELLE ablegen. und evtl. eine weitere für die ftp.host.identifierung verwenden.

                            ident (hostid, hostname)
                            dateien (fileid,fileparentid,hostid,filename,filepath)

                            so in der art zumindest. verbunden sind die tabelle via hostid.

                            für jeden host eine eigene tabelle anzulegen halte ich, wie auch viele andere, für absolut sinnlos und schwachsinnig.

                            überdenke das mal.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Da hast du Recht aber nehmen wir an, die Tabellen werden alle 3 Stunden aktualliesiert. Wenn ich jetzt aktuallisiere wird zu allen FTPs verbunden. Was ist jetzt aber wenn einer gerade nicht online ist. Dann fehlen die Einträge in meiner Tabelle. Auf deutsch gesagt. Statt z.B 15 FTPs sind jetzt nur 12 Eingetragen vorhanden. Jetzt verzichte ich auf die Daten in den anderen 3 FTP Servern. Wenn jeder Server eine eigene Tabelle bekommt werden die Daten nicht aktualliesiert und die alten Daten bleiben erhalten und können auch durchsucht werden.
                              Man könnte es natürlich auch mit einer Tabelle machen aber die wäre dann erstens riesig und schwer zu Programmieren da wenn auf den FTPs Daten verschoben werden muss ich löschen und einfügen, überprüfen ob gerade online dann dürfen die Datensätze nicht gelöscht werden usw.
                              Da ziehe ich zumindes die Lösung über mehrere Tabellen vor.
                              Am Ende kommt dann noch eine Überprüfung ob der Server online ist oder nicht, mit ftp_connect und den Daten die in der Tabelle stehen.

                              Wenn du eine bessere Lösung hättest wäre ich dafür auch sehr Dankbar aber mir ist mit meinem bisherigen Wissen nichts anderes eingefallen.

                              Mfg Markus

                              Kommentar

                              Lädt...
                              X