ilch Forum » Allgemein » HTML, PHP, SQL,... » "2. Profil" erstellen

Geschlossen
  1. #1
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hallo alle zusammen,

    Ich würde gerne etwas erstellen, was wohl am besten als eine Art zweites Profil beschrieben werden kann und habe daher beschlossen, das ganze auf der Grundlage der Profil-Dateien zu machen.

    Ich habe mir zuerst die /include/contents/user/profil_edit.php genommen und alles zusammengestaucht auf eine Datei /include/contents/user/abc.php mit dem Inhalt:

    <?php 
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    $title = $allgAr['title'].' :: Users :: ABC';
    $hmenu  = $extented_forum_menu.'<a class="smalfont" href="?user">Users</a><b> &raquo; </b> Profil'.$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1, 'forum/index.htm' );
    
    
    
    if ( $_SESSION['authright'] <= -1 ) {  
    
    if ( empty ($_POST['submit']) ) {
      $design->header();
    	$abf = 'SELECT xx,xx FROM `prefix_yy` WHERE id = "'.$_SESSION['authid'].'"';
    	$erg = db_query($abf);
    	if ( db_num_rows($erg) > 0 ) {
    	  $row = db_fetch_assoc($erg);
    		
    		$tpl = new tpl ('user/abc');	 
      
      # angaben bearbeiten
    		  db_query("UPDATE prefix_yy 
    			  SET 
              xyz1 = '".escape($_POST['xyz1'], 'string')."',
              ...
              xyz9 = '".escape($_POST['xyz9'], 'string')."'      
    				WHERE id = ".$_SESSION['authid']
          );
    
          
          # change other profil fields
      
      profilefields_change_save ( $_SESSION['authid'] );
    	$design->header();
    
          # definie and print msg
    	$fmsg = ( isset($fmsg) ? $fmsg : $lang['changesuccessful'] );
    	wd('?user-15' , $fmsg  , 3 );
      
    }
          	
    } else {  
    		$tpl = new tpl ( 'user/login' );
    		$tpl->set_out('WDLINK', '?user-15', 0);
    }
    }
    
    $design->footer();
    ?>


    Dann habe ich aus der /include/templates/user/profil_edit.htm folgendes (unter /include/templates/user/abc.htm) gemacht:

    <form action="index.php?user-15" method="POST" enctype="multipart/form-data">
    	<fieldset>
    	  <legend>Persönliche Daten ändern</legend>
    		  <br />
                         			<label style="float:left; width:35%;">blubb</label><input style="margin-bottom:2px;" name="blubb" value="{blubb}" size="20" /><br style="clear:both;" />
    ...
    			<label style="float:left; width:160;">blaaa</label><input style="margin-bottom:2px;" name="blaaa" value="{blaaa}" size="1" /><br style="clear:both;" />
              </fieldset>
              <br />
          <fieldset>
            <br />
        {EXPLODE} 
          </fieldset>
          <br />
          <label style="float:left; width:35%;">&nbsp;</label><input style="margin-bottom:2px;" type="submit" value="{_lang_send2}" name="submit"><br />
    	</fieldset>
    </form>


    Dann habe ich in /include/contents/user.php für case 15 auch abc gesetzt:

    	case 'ogame'      : case 15 : $userDatei = 'abc'; break;


    Wenn ich jetzt aber versuche .../index.php?user-15 aufzurufen, bekomme ich nur ausgegeben:

    ZitatZitat

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in .../include/includes/func/db/mysql.php on line 61


    Kann einer von euch sagen, wo der Fehler liegt? Ich versuche es schon seit heute morgen um 7Uhr, aber habe leider wirklich viel zu wenig Ahnung. traurig


    verwendete ilchClan Version: 1.1


    Zuletzt modifiziert von h00b3rT am 17.12.2006 - 14:11:51
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Mhh, und du hast auch eine Tabelle prefix_yy mit den Feldern xx angelegt?
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Japp, von der Seite sollte alles stimmen! Habe ich x-mal kontrolliert.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Es liegt auf jeden Fall an einer der Datenbankabfragen, da ist was fehlerhaft, und das einzige was ich jetzt sehe wären halt die nicht vorhanden Datenbankeinträge, aber wenn du sagst, dass du sie erstellt hast, weiß ich auch nicht.

    Gut vielleicht liegts auch an den ", bei "'.$_SESSION['authid'].'"'
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Kann ich mir nicht vorstellen, weil ich das alles direkt aus der orginal profil_edit.php übernommen habe und bei der klappt es ja so.

    Und die Datenbanken sind definitiv richtig. Ich kenne mich zwar nicht gut damit aus, aber sowas über phpmyadmin einzurichten - dazu gehört nicht sonderlich viel.

    Aber ich danke dir auf jeden Fall schon mal für die Mühe, die du dir auch hiermit wieder gibst!


    Zuletzt modifiziert von h00b3rT am 17.12.2006 - 19:31:21
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also in der originalen profil_edit steht es ohne, also ich weiß nicht obs geht, aber ich ändere es mal für dich, wie ich es meine
    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    $title = $allgAr['title'].' :: Users :: ABC';
    $hmenu  = $extented_forum_menu.'<a class="smalfont" href="index.php?user">Users</a><b> &raquo; </b> Profil'.$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1, 'forum/index.htm' );
    
    
    
    if ( $_SESSION['authright'] <= -1 ) {  
    
    if ( empty ($_POST['submit']) ) {
      $design->header();
        $abf = 'SELECT xx,xx FROM `prefix_yy` WHERE id = '.$_SESSION['authid'];
        $erg = db_query($abf);
        if ( db_num_rows($erg) > 0 ) {
          $row = db_fetch_assoc($erg);
            
            $tpl = new tpl ('user/abc');    
      
      # angaben bearbeiten
              db_query("UPDATE prefix_yy
                  SET
              xyz1 = '".escape($_POST['xyz1'], 'string')."',
              ...
              xyz9 = '".escape($_POST['xyz9'], 'string')."'      
                    WHERE id = ".$_SESSION['authid']
          );
    
          
          # change other profil fields
      
      profilefields_change_save ( $_SESSION['authid'] );
        $design->header();
    
          # definie and print msg
        $fmsg = ( isset($fmsg) ? $fmsg : $lang['changesuccessful'] );
        wd('?user-15' , $fmsg  , 3 );
      
    }
              
    } else {  
            $tpl = new tpl ( 'user/login' );
            $tpl->set_out('WDLINK', '?user-15', 0);
    }
    }
    
    $design->footer();
    ?>


    Bei dem 2. war es ja auch richtig, nur beim ersten halt nicht, also ich nehm an das es falsch ist, da die id eine Zahle und keine Stringvariable ist, bei der man " " drum machen müsste.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Okay, wir sind ein Stück weiter! Jetzt kommt nicht mehr die Fehlermeldung, also scheint es doch schon was gebracht zu haben. Dafür erstmal danke! Allerdings geht es immer noch nicht. Anstatt dass es so funktioniert, wie geplant, werde ich nur in eine endlose Weiterleitungsschleife geschmissen.

    Konkret:
    ZitatZitat

    Weiterleitung in 3 sekunden
    erfolgreich geändert

    weiter


    Es lädt neu.

    --->
    ZitatZitat

    Weiterleitung in 3 sekunden
    erfolgreich geändert

    weiter


    Und das ohne Ende.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ja hast du schön geschrieben was?
    Ich versuch es dir zu erklären, das Script überprüft ob das Formular abgesendet wurde, wenn dies der Fall ist werden Eintragungen in der Datenbank gemacht und wenn es nicht der Fall ist, z.B. ersten Seitenaufruf, wirst du auf die gleiche Seite weitergeleitet (das wd(....) macht dies, nimms raus und teste weiter).
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hm... also wenn du meintest, dass ich diese Zeile ersatzlos streichen sollte,

    wd('?user-15' , $fmsg  , 3 );


    dann ist das auch nicht die Lösung des Problems, weil mir dann eine komplett leere Seite angezeigt wird.

    Habe ich vielleicht irgendwie das Template für die Seite falsch hinterlegt, oder sowas?


    Zuletzt modifiziert von h00b3rT am 19.12.2006 - 09:36:24
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ja dann schreib einen Ersatz, was willst du denn, ich weiß doch nicht wie deine Dateien aussehen, aber ich nehme an du willst irgendein $tpl->out(0); machen, aber ich weiß nicht welche Zahl, kenne ja das Template nicht.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Na, was werde ich wohl wollen?! Ich möchte eigentlich nur, dass die Leute da für ihren Account ein paar Angaben machen können. Quasi wie im Profil die Angaben "Homepage" oder "Wohnort", die dann abgespeichert werden und später auch von anderen gesehen werden können. Wie gesagt, eben sowas wie ein Klon vom Profil, nur eben mit anderen angaben.

    Im ersten Post habe ich das ganze Template (bzw. den html-code) gepostet. Welche Angaben brauchst du denn noch? Ich habe das Template in den Ordner /include/templates/user/ gelegt und es heißt genauso, wie die .php Datei in /include/contents/user/ nur eben eine .htm-Datei anstatt einer .php-Datei.

    Ich freue mich ja über deine Hilfe, aber ehrlich gesagt weis ich nicht, was ich noch schreiben soll, da ich schon alles gepostet habe, was ich erstellt habe.
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ähm ja das mit dem Template hab ich ganz vergessen, ich schau es mir heute Abend nochmal an, muss erstmal weg.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Okay, ich versuche bis dahin noch ein wenig herum. Vielleicht hilft mir ja der Zufall. zwinker
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Das ist jetzt eher spekulativ, weil du dein Template ja nicht vollständig angegeben hast. Erklärung findest du hier.

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    $title = $allgAr['title'].' :: Users :: ABC';
    $hmenu  = $extented_forum_menu.'<a class="smalfont" href="index.php?user">Users</a><b> &raquo; </b> Profil'.$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1, 'forum/index.htm' );
    
    
    
    if ( $_SESSION['authright'] <= -1 ) {  
    
    if ( empty ($_POST['submit']) ) {
      $design->header();
        $abf = 'SELECT xx,xx FROM `prefix_yy` WHERE id = '.$_SESSION['authid'];
        $erg = db_query($abf);
        if ( db_num_rows($erg) > 0 ) {
          $row = db_fetch_assoc($erg);
            
            $tpl = new tpl ('user/abc');    
      
      # angaben bearbeiten
              db_query("UPDATE prefix_yy
                  SET
              xyz1 = '".escape($_POST['xyz1'], 'string')."',
              ...
              xyz9 = '".escape($_POST['xyz9'], 'string')."'      
                    WHERE id = ".$_SESSION['authid']
          );
    
          
          # change other profil fields
      
      profilefields_change_save ( $_SESSION['authid'] );
        $design->header();
    
          # definie and print msg
        $fmsg = ( isset($fmsg) ? $fmsg : $lang['changesuccessful'] );
        wd('?user-15' , $fmsg  , 3 );
      
    }
    } else {
      $tpl = new tpl ('user/abc');
      $out = array('blubb' => 'Wert für blubb',
                   'blaaa' => 'Wert für blaaa');
      $tpl->set_ar_out($out,0);
      $tpl->out(1);
    }          
    } else {  
            $tpl = new tpl ( 'user/login' );
            $tpl->set_out('WDLINK', '?user-15', 0);
    }
    
    
    $design->footer();
    ?>
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    1. Was habe ich denn von dem Template nicht angegeben? Ich habe eben die einzelnen Werte nicht gepostet, aber aber einfach an der Übersichtlichkeit liegt, da es ziemlich viele sind.

    2. Ich verstehe nicht: "$out = array('blubb' => 'Wert für blubb',"
    Ich nehme mal nicht an, dass ich das 1zu1 übernehmen soll. Aber was soll ich da für "Wert für.. " angeben?
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    In deinem Template steht ..., ich dachte das soll zur Verkürzung dienen, und diese Sache ersetzten die Sachen in geschweiften Klammern im Template, also wo {blubb} steht wird dann das stehen was recht vom => von blubb steht, wenn du diese nicht brauchst, kannst du einfach $tpl->out(0); nehmen, aber dann auch die Sachen aus dem Template rausnehmen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Achso, ja jetzt verstehe ich, wie du das meinst - denke ich zumindest.

      $out = array('blubb' => 'xyz1',
                   ...usw...
                   'blaaa' => 'xyz9');


    Richtig? Also muss ich quasi in der php noch mal alle Werte den einzelnen Feldern im Template zuweisen, wie ich das ähnlich eben auch schon in der htm gemacht habe?! Sprich: Sowohl in der php, als auch in der htm den selben Namen für einen Wert definieren?!
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Die sind eigentlich dafür da, dass wenn man sein Profil editiert, was bei dir jetzt noch nicht wirklich drin ist, dem Feld schon den Eintrag aus der Datenbank geben kann, damit man nicht alles neu eingeben muss, wenn man nur etwas ändern will.
    FALSCH bei dir kann man nur ändern nicht anlegen, naja auf jeden Fall gehts so wie du es gemacht hast noch nicht so, wie du es willst nehm ich mal stark an zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Hm... kannst du mir vielleicht noch sagen, was da bei mir fehlt? Was ich möchte ist im Endeffekt doch nicht mehr, als das die Leute dort ein paar Angaben machen können. Eben wie das Profil.

    So in der Art:

    Wohnort:
    Hobbies:
    ...

    What ever. Und wenn sich dann eine Angabe ändert soll man nicht, wie du schon richtig gesagt hast, alle Angaben komplett neu machen müssen. Ich wäre ja schon absolut zufrieden, wenn du mir sagen könntest, wo der Fehler liegt und wie ich ihn beheben kann, bzw. dass man mir sagt, welche Schwerpunkte in Sachen php diese Idee betrifft, damit ich mir entsprechende Tutorials suchen kann, damit ich selbst weiterversuchen kann.
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ja einfach Formulare auswerten und in die Datenbank eintragen, letztendlich hast du ja schon profiledit wie es geht, allerdings muss man beim Profiledit nie etwas anlegen, weil das bei der Registrierung gemacht wird. Wenn du nur ein paar Zusatzfelder willst, dann kannst du die doch noch im Profil unterbringen zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    h00b3rT Mitglied
    Registriert seit
    15.12.2006
    Beiträge
    19
    Beitragswertungen
    0 Beitragspunkte
    Ich bin mir sicher, dass man die Installation schon so umbasteln kann, dass auch für das zweite Profil schon alles angelegt wird. Das ist ja auch nicht mehr, als den vorhandenen Text, der das normale Profil anlegt etwas zu überarbeiten.

    Und warum ich die neuen Felder nicht im Profil haben möchte:
    - Es geht dabei um 259 Angaben
    - Es sind Angaben, die nur bestimmte User sehen sollen, weswegen es unbedingt nötig ist, dass die Möglichkeit, diese Daten einzusehen, klar vom Profil, das ja jeder ansehen kann, getrennt werden muss. zwinker

    Aber ich denke, dass ich trotz aller ungereimtheiten auf dem richtigen Weg bin. Ich muss nur noch etwas rumversuchen. Ich danke dir auf jeden Fall sehr für deine Geduld und Hilfe. lächeln
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten