Userangaben in DB übernehmen

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
nightwalker
Mitglied
Beiträge: 21
Registriert: 30.07.2005 20:36
Wohnort: Wickede
Kontaktdaten:

Userangaben in DB übernehmen

Beitrag von nightwalker »

Hi Leutz !
Ich habe mir den Shop-Mod ein wenig umgeschrieben. Wenn jetzt jemand etwas kauft, benötige ich die Adresse des Users, und habe mir nun eine shop_angaben.tpl und eine shopangaben.php programmiert, doch leider bekommt er die Variable nicht aus der tpl und ich weiss echt nicht, warum bitte helft mir ! (Der code versucht z.Z. nur die PLZ in die DB einzutragen. Die Felder sind natürlich in der DB enthalten)
Hier die TPL:

Code: Alles auswählen

<form action="{S_ANGABEN_ACTION}" method="post">
<table width="56%" border="0" align="center" cellpadding="10" cellspacing="0">
	<tr>
		<td><table width="83%" border="0" align="center" cellpadding="4" cellspacing="1" class="forumline">
			<tr>
			  <th height="25" colspan="2" class="thHead">Benutzerangaben</th> 
			</tr>
			<tr>
			  <td width="33%" valign="top" class="row1">Vorname / Nachname:</td>
			  <td width="58%" valign="top" class="row1"><input name="vorname" type="text" size="18,9">
                <input name="name" type="text" size="19"></td>
		  </tr>
			<tr>
			  <td valign="top" class="row1">Strasse / Nummer:</td>
			  <td valign="top" class="row1"><input name="street" type="text" size="30">
                <input name="nr" type="text" size="7"></td>
		  </tr>
			<tr>
			  <td valign="top" class="row1">PLZ / Wohnort:</td>
			  <td valign="top" class="row1"><input name="plz" type="text" size="7">
                <input name="ort" type="text" size="30"></td>
		  </tr>
			<tr>
			  <td colspan="2" valign="top" class="row1"><p align="center">
			    <input type="submit" name="Submit" value="Senden">
              </p>
			  </td> 
			</tr>
		</table></td>
	</tr>
</table>
</form>
und hier die php

Code: Alles auswählen

<?php 
define('IN_PHPBB', true);

$phpbb_root_path = './';

include($phpbb_root_path . 'extension.inc');

include($phpbb_root_path . 'common.'.$phpEx);

include($phpbb_root_path . 'includes/bbcode.'.$phpEx);

include($phpbb_root_path . 'includes/functions_search.'.$phpEx);


//

// Start session management

// 

$userdata = session_pagestart($user_ip, PAGE_ANGABEN); 

init_userprefs($userdata); 

//

// End session management

//





//

// Generate page

//

$page_title = 'Benutzerangaben';

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 


$template->set_filenames(array( 

	'body' => 'shop_angaben.tpl') 

); 

	$template->assign_block_vars('topics', array( 

	    'CLASS' => $class,
		'S_ANGABEN_ACTION' => append_sid('shopangaben.'.$phpEx) 

	)); 



$sql = "UPDATE  phpbb_users 

		SET user_plz =  $plz

		WHERE user_id = " . $userdata['user_id'] . "";

		if( !$db->sql_query($sql) ) 

		{ 

		message_die(GENERAL_ERROR, 'ERROR ', '', __LINE__, __FILE__, $sql); 

		}

$template->pparse('body'); 



include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 

?>
THX schonmal im vorraus !


www.aprilia-racing-forum.de
Benutzeravatar
Budman
Mitglied
Beiträge: 327
Registriert: 02.02.2005 10:46

Beitrag von Budman »

Du setzt ja in Deinem SQL Update auch nur die PLZ oder sehe ich das um die Uhrzeit jetzt falsch? Du musst die anderen Felder schon auch eintragen in Deine DB ;)

Ausserdem bin ich mir ehrlich gesagt sicher, dass Du hier

Code: Alles auswählen

$template->assign_block_vars('topics', array(
eigentlich keinen Loop verwenden darfst, zumal Du ihn im Template nicht aufrufst...

Code: Alles auswählen

$template->assign_vars(array(
Aber es ist schon spät, vielleciht hab ich da jetzt auch was falsch gelesen ;)

Nimm mal dieses Tutorial, da ist das schön erklärt ;)
Benutzeravatar
AceVentura
Mitglied
Beiträge: 366
Registriert: 30.07.2005 02:16
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag von AceVentura »

Probier mal folgendes:

FIND

Code: Alles auswählen

$sql = "UPDATE  phpbb_users
BEFORE, ADD

Code: Alles auswählen

$plz = ( isset($HTTP_POST_VARS['plz']) ) ? $HTTP_POST_VARS['plz'] : '';
Es wäre auch interessant zu wissen, welchen Typs deine Datenbankerweiterungen sind. VARCHAR ?

Sollte es kein VARCHAR, sondern eine Form von INT sein, sollteste dieses einbauen

Code: Alles auswählen

$plz = ( isset($HTTP_POST_VARS['plz']) ) ? intval ($HTTP_POST_VARS['plz']) : 0;
Zuletzt geändert von AceVentura am 07.08.2005 18:34, insgesamt 1-mal geändert.
nightwalker
Mitglied
Beiträge: 21
Registriert: 30.07.2005 20:36
Wohnort: Wickede
Kontaktdaten:

Danke

Beitrag von nightwalker »

Danke, so funktioniert es ! Aber ein Problem hab ich noch, und zwar, wenn ich die anderen Felder auch noch übernehnem will, geht es nicht mehr. Die Felder inner DB sind VARCHAR
Hier der Code:

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './'; 

include($phpbb_root_path . 'extension.inc'); 

include($phpbb_root_path . 'common.'.$phpEx); 




// 

// Start session management 

// 

$userdata = session_pagestart($user_ip, PAGE_SHOPANGABEN); 

init_userprefs($userdata); 

// 

// End session management 

// 





// 

// Generate page 

// 
$page_title = 'Benutzerangaben'; 

$template->set_filenames(array( 

   'body' => 'shop_angaben.tpl') 

); 

	$template->assign_vars(array(
	   'S_ANGABEN_ACTION' => append_sid('shopangaben.php')
   )); 
    
$template->pparse('body'); 
$name = ( isset($HTTP_POST_VARS['name']) ) ? $HTTP_POST_VARS['name'] : '';
$street = ( isset($HTTP_POST_VARS['street']) ) ? $HTTP_POST_VARS['street'] : '';
$nr = ( isset($HTTP_POST_VARS['nr']) ) ? $HTTP_POST_VARS['nr'] : '';
$plz = ( isset($HTTP_POST_VARS['plz']) ) ? $HTTP_POST_VARS['plz'] : '';
$ort = ( isset($HTTP_POST_VARS['ort']) ) ? $HTTP_POST_VARS['ort'] : '';

$sql = "UPDATE  phpbb_users SET user_name = $name, 
								user_street = $street, 
								user_nr= $nr,
								user_plz= $plz, 
								user_ort = $ort
								WHERE user_id = '2'"; 
?>
Thx
Nightwalker
Benutzeravatar
AceVentura
Mitglied
Beiträge: 366
Registriert: 30.07.2005 02:16
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag von AceVentura »

Diese Größenangabe sieht nicht schön aus. Evtl. änderste die noch
size="18,9"


Dann pack auch mal den SQL Teil der php Datei vor das
// Generate the page

(Das hat keinen Effekt, sieht aber im Vergleich zu andern phpBB Dateien einheitlicher aus.)


Du hast in der neuen php Datei unten den Teil vergessen wo das in die Datenbank eingetragen wird:

Code: Alles auswählen

if( !$db->sql_query($sql) ) 

      { 

      message_die(GENERAL_ERROR, 'ERROR ', '', __LINE__, __FILE__, $sql); 

      }
Und dann mach auch mal die Hochkomma weg bei

Code: Alles auswählen

WHERE user_id = '2'
Am besten machste da wieder das hin, was in der alten php Datei stand
(auch ein wenig korrigiert)

Code: Alles auswählen

WHERE user_id = " . $userdata['user_id'];

Hoffe das klappt dann ;)

gruß Ace
nightwalker
Mitglied
Beiträge: 21
Registriert: 30.07.2005 20:36
Wohnort: Wickede
Kontaktdaten:

THX

Beitrag von nightwalker »

Super ! DU BIST DER BESTE !
Es funzt. DANKE !!!

Kannst du mir vieleicht Erklähren, was das genau bedeutet:

Code: Alles auswählen

$HTTP_POST_VARS
THX
Benutzeravatar
AceVentura
Mitglied
Beiträge: 366
Registriert: 30.07.2005 02:16
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag von AceVentura »

Mit $HTTP_POST_VARS kannst Du die Variablen auslesen, wenn Du Formulare abschickst und method="post" im <form...>-Tag gesetzt hast.

Die Variablen aus einer URL (z.B. index.php?mode=3) bekommst Du mit
$HTTP_GET_VARS (z.B. $HTTP_GET_VARS['mode'])



Guck ausserdem mal hier rein: http://oxpus.de/kb.php?mode=article&k=4
nightwalker
Mitglied
Beiträge: 21
Registriert: 30.07.2005 20:36
Wohnort: Wickede
Kontaktdaten:

Re

Beitrag von nightwalker »

Hi ! Danke !
Nun hab ich noch ein Problem, und zwar will ich, wenn er das Formular ausgefüllt und abgesendet hat, das er an einen bestimmten link weitergeleitet wird ? wie mache ich das mit php ? kann ich ich ihm sagen

Code: Alles auswählen

if (!$name='leer' & submit)
gehe zu seite blabla.php
???
Thx
Night
Benutzeravatar
AceVentura
Mitglied
Beiträge: 366
Registriert: 30.07.2005 02:16
Wohnort: Altenkirchen
Kontaktdaten:

Beitrag von AceVentura »

Umleitungen machst Du mit:

Code: Alles auswählen

redirect(append_sid("blabla.$phpEx", true));
Aber ich glaube es ist nicht das was Du suchst. Du willst wahrscheinlich Deinem Anwender sagen, dass er gefälligst seinen Namen eingeben soll, richtig ? ;)

Das machst Du am besten mit:

Irgendwo in die lang_main.php

Code: Alles auswählen

$lang['missing_input_message'] = 'Du hast nicht alle erforderlichen Angaben gemacht. Klick %shier%s um es noch einmal zu versuchen';
Und in Deine Datei:

Code: Alles auswählen

$missing_input_message = sprintf($lang['missing_input_message'], '<a href="javascript:history.back()">', '</a>');
message_die(GENERAL_MESSAGE, $missing_input_message);

Der Code der nach "message_die(...);" geschrieben ist, wird garantiert nicht ausgeführt, wenn das message_die aufgerufen wurde. Sowas hier würde also nicht gehen:

Code: Alles auswählen

if (true) {
      $message_die(....); 
      $und_zusätzlich_noch_einen_Tadel_vergeben = 'ja';
}

Gruß Ace
nightwalker
Mitglied
Beiträge: 21
Registriert: 30.07.2005 20:36
Wohnort: Wickede
Kontaktdaten:

re

Beitrag von nightwalker »

Hi, danke für deine Antwort, aber das meine ich nicht. Ich möchte, das wenn er auf den Senden button geht, das die daten dann abgesendet werden, und der user auf eine bestimmte seite weitergeleitet wird.

thx
night
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“