Seite 3 von 4

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 19.02.2012 11:18
von Helmut
Hallo Volli3,

die Abfrage sollte so in etwa aussehen

Code: Alles auswählen

$suchen_ort = request_var('ort', '');
           
$sql = 'SELECT *
    FROM ' . ADRESSEN_TABLE ."
    WHERE ort LIKE '$suchen_ort%'
    GROUP BY ort, name";           
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
     //Hier Ausgabe alles was zum Datensatz gehört
    $template->assign_block_vars('liste', array(
        'ORT' => $row['ort'],                         
        'PLZ' => $row['plz'], 

        'U_FORM_ACTION_EDIT'         => append_sid($phpbb_root_path . 'adress_eingabe.' . $phpEx, 'mode=edit&id=' . $row['id']), //Datensatz bearbeiten
        'U_FORM_ACTION_DELETE'       => append_sid($phpbb_root_path . 'adress_eingabe.' . $phpEx, 'mode=delete&id=' . $row['id']), //Datensatz löschen                       
    ));
}
$db->sql_freeresult($result);


//hier Ausgabe vom Rest
$template->assign_vars(array(
    'U_FORM_ACTION'         => append_sid($phpbb_root_path . 'adress_suche.' . $phpEx, 'mode=search'),
));
 
und so wird die Liste in der html ausgegeben (mit entsprechender Formatierung, musst halt noch machen)

Code: Alles auswählen

//Hier würde die Eingabe für die Suche sein

<!-- BEGIN liste -->

{liste.ORT} 
{liste.PLZ}

//Hier würden die Buttons zum Bearbeiten vom Datensatz sein
<!-- END liste -->  
Du solltest die php Dateien für die Eingabe der Datensätze und die für die Anzeige trennen z.B adress_eingabe.php und adress_suchen.php, dann wird es einfacher und übersichtlicher.

Gruß Helmut

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 21.02.2012 20:19
von Volli3
Hallo Helmut,
läuft jetzt alles glänzend :grin:

Noch mal großen Dank für deine Hilfe.

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 21.02.2012 20:36
von BNa
Statt

Code: Alles auswählen

$suchen_ort = request_var('ort', '');
würde ich

Code: Alles auswählen

$suchen_ort = request_var('ort', '', true);
draus machen. Für UTF8 Unterstützung, zB. Suche nach "München"

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 22.02.2012 18:06
von Volli3
Danke BNa für den Tipp

Beim Eintragen geht das wunderbar wenn ich schreibe

Code: Alles auswählen

$sql =   'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                 'ort' =>        request_var('ort','', true),
Bei suchen macht er es nicht.
Mein Code

Code: Alles auswählen

$suchen_ort = request_var('ort', '', true);                   
    $sql = 'SELECT *
        FROM ' . ADRESSEN_TABLE ."      
        WHERE ort LIKE '$suchen_ort%'
        GROUP BY ort, name";           
    $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result))
    {
        $template->assign_block_vars('liste', array(
            'ORT'      => $row['ort'],  'ORT'      => $row['ort'], 

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 25.02.2012 11:14
von Helmut
Hallo Volli3,

und läuft jetzt dein Projekt?

Lasse doch mal sehen was du da zusammen gebastelt hast.

Gruß Helmut

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 25.02.2012 16:28
von Volli3
Hallo Helmut,
habe das zur Demo mal teilweise freigeschaltet.
http://www.polarbiker.dyndns.org/forum/adress_liste.php

Auflisten, Eintragen und Suchfunktion ist fertig und funktioniert.
Ändern / Löschen ist noch in Arbeit.

Beim Eintragen ist allerdings noch ein kleiner Fehler drin. Er schreibt mir jedesmal eine Leerzeile in die Datenbank.
Kannst du den Fehler sehen ?

Code: Alles auswählen

 $sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(
    
           'name' =>     request_var('name','', true),
           'strasse' =>  request_var('strasse','', true),
           'plz' =>      request_var('plz',''),
           'ort' =>      request_var('ort','', true),
           'land' =>     request_var('land','', true),
           'telefon' =>  request_var('telefon',''),
           'email' =>    request_var('email','', true),
           'homepage' => request_var('homepage','', true),
				   'Notiz' =>    request_var('Notiz',''))               
          );
     
    $db->sql_query($sql); 

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 25.02.2012 17:02
von Helmut
Hallo Volli3,

du meinst bei jedem Eintrag schreibt er zwei Datensätze in die Tabelle wobei einer davon leer ist?

Dann stellt sich die Frage, schreibt er zuerst den leeren und dann den vollen Datensatz oder umgekehrt. Der Teil vom Code wo du die Daten absendest wäre noch interessant und auch die html Datei dazu.

Gruß Helmut

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 25.02.2012 17:18
von Volli3
Ja er macht 2 Einträge
1. Leere Zeile dann 2. den korrekten Eintrag

So sehen die Dateien komplett aus:

adress_eintrag.php

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();  
$auth->acl($user->data); 
$user->setup('mods/adressen'); 

// Code erzwingt Anmeldung, Gäste haben keinen Zugriff
if ($user->data['user_id'] == ANONYMOUS)
{
// wenn Benutzer nicht angemeldet ist
}
else
{
// wenn Benutzer angemeldet ist
}
if ($user->data['user_id'] == ANONYMOUS)
{
	login_box();
}
// Ende Anmeldung erzwingen, ohne Anmeldung kein Zugriff

   // zeigt die Anzahl der vorhandenen Datensätze
   $sql = 'SELECT COUNT(*) AS count
   FROM ' . ADRESSEN_TABLE . '
   ORDER BY name';
   $result = $db->sql_query($sql);       
   $count = (int) $db->sql_fetchfield('count');
   $db->sql_freeresult($result); 
   $template->assign_vars(array(
   'TERM_ID_COUNT' => $count,
   // Ende Anzahl Datensätze anzeigen  
));

   // Beginn Daten in Datenbank eintragen                
    $sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(
    
           'name' =>     request_var('name','', true),
           'strasse' =>  request_var('strasse','', true),
           'plz' =>      request_var('plz',''),
           'ort' =>      request_var('ort','', true),
           'land' =>     request_var('land','', true),
           'telefon' =>  request_var('telefon',''),
           'email' =>    request_var('email','', true),
           'homepage' => request_var('homepage','', true),
				   'Notiz' =>    request_var('Notiz',''))               
          );
     
    $db->sql_query($sql); 
   // Ende Daten in Datenbank eintragen 

page_header($user->lang['MEIN_TITEL']);
$template->set_filenames(array(
	'body' => 'adress_eintrag.html'
));
page_footer();
?>
adress_eintrag.html

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
<br />
<div class="forabg">
	<div class="inner">
		<span class="corners-top"><span></span></span>
		<ul class="topiclist">
			<li class="header"><dl><dt>{L_EXAMPLE}</dt>
                <dd></dd>
              </dl></li>
		</ul>	
		<ul class="topiclist forums" style="padding: 5px">
			<li>
<!-- Bis hier nichts verändern -->	

<!-- Anfang Inhalt einfügen -->

<font face="Verdana" size="2">Total sind</font>&nbsp;<b><font color="crimson" size="2">{TERM_ID_COUNT}</font></b><font face="Verdana" size="2"> Eintragungen in der Datenbank vorhanden.</font>
<br>
<br>

<p>
{L_BUTTONANZEIGEN} {L_BUTTONSUCHE} {L_BUTTONAENDERN} {L_BUTTONGMAP}
</p>


<h2>{L_EINTRAGEN}</h2> 

<b>Hinweis:</b> Dein Eintrag darf die Länge des Eingabefeldes nicht überschreiten.<br>Die Datenbank zeigt sonst eine Fehlermeldung !
<br>
<br>
<form action="" method="post">
<table width="700" border="0">
   
  <tr>
    <td><font face="Verdana" size="2">Cafe&bull;Kneipe&bull;Pension&bull;Hotel</font></td>
    <td><input type="text" name="name" size="30" /></td>
  </tr>
  
  <tr>
   <td>&nbsp;</td>
	 <td>&nbsp;</td> 
  </tr>
  
  <tr>
    <td><font face="Verdana" size="2">Stra&szlig;e</font></td>
    <td><input type="text" name="strasse" size="30" /></td>
  </tr>
  
  <tr>
    <td><font face="Verdana" size="2">PLZ</font></td>
    <td><input type="text" name="plz" size="5" /></td>
  </tr>
  
  <tr>
    <td><font face="Verdana" size="2">Ort</font></td>
    <td><input type="text" name="ort" size="30" /></td>
  </tr>
  
   <tr>
   <td>&nbsp;</td>
	 <td>&nbsp;</td> 
  </tr>
  
  <tr>
    <td><font face="Verdana" size="2">Land</font></td>
    <td><input type="text" name="land" size="3" />&nbsp;&nbsp;z.B. D / CZ / PL</td>
  </tr>
  
  <tr>
   <td>&nbsp;</td>
	 <td>&nbsp;</td> 
  </tr>
  
  <tr>
    <td><font face="Verdana" size="2">Telefon</font></td>
    <td><input type="text" name="telefon" size="20" /></td>
  </tr>
  
  <tr>
   <td>&nbsp;</td>
	 <td>&nbsp;</td> 
  </tr>
  
  <tr>
    <td><font face="Verdana" size="2">E-Mail</font></td>
    <td><input type="text" name="email" size="80" /></td>
  </tr>

  <tr>
    <td><font face="Verdana" size="2">Homepage</font></td>
    <td><input type="text" name="homepage" size="80" /></td>
  </tr>
  
  <tr>
   <td>&nbsp;</td>
	 <td>&nbsp;</td> 
  </tr>
  
  <tr>      
    <td><input type="reset" name="reset" value="Zurücksetzen" /></td>
    <td><input type="submit" name="submit" value="Eintragen" /></td>      
  </tr>
</table>
</form>

<!-- Ende Inhalt einfügen -->	

<!-- IF S_DISPLAY_ONLINE_LIST -->

	<table class="tablebg" cellspacing="1">
	<tr>
		<td class="cat" colspan="2"><!-- IF U_VIEWONLINE --><h3><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a></h3><!-- ELSE --><h3>{L_WHO_IS_ONLINE}</h3><!-- ENDIF --></td>
	</tr>
	<tr>
	<!-- IF LEGEND -->
		<td class="row1" rowspan="2" align="center" valign="middle"><img src="{T_THEME_PATH}/images/whosonline.png" alt="{L_WHO_IS_ONLINE}" /></td>
	<!-- ELSE -->
		<td class="row1" align="center" valign="middle"><img src="{T_THEME_PATH}/images/whosonline.png" alt="{L_WHO_IS_ONLINE}" /></td>
	<!-- ENDIF -->
		<td class="row1"><span class="genmed">{TOTAL_USERS_ONLINE} ({L_ONLINE_EXPLAIN})<br />{RECORD_USERS}<br /> <br />{LOGGED_IN_USER_LIST}</span></td>
	</tr>
	<!-- IF LEGEND -->
		<tr>
			<td class="row1"><b class="gensmall">{L_LEGEND}: {LEGEND}</b></td>
		</tr>
	<!-- ENDIF -->
	
	</table>
<!-- ENDIF -->
<hr>
<div class="copyright">{L_PHPBB} | {L_VERSION}


<!-- Ab hier nichts verändern -->			
			</div>
			</li>
		</ul>
		<span class="corners-bottom"><span></span></span>
	</div>
</div>
<br />
<!-- INCLUDE overall_footer.html -->

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 25.02.2012 17:46
von Helmut
Hallo Volli3,

hm .... wie schaut der Code vor // Beginn Daten in Datenbank eintragen bei dir aus, also wo du die Bedingungen vorgibst wann der Datensatz geschrieben wird?

Scheint mir fast als ob die Anweisung für den Button "submit" schon vorher einen Datensatz schreibt bevor das array gefüllt wurde.

Bin mir nicht sicher, aber nehme mal die Leerzeile nach $sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array( raus, könnte auch stören. Außerdem brauchst du vermutlich das $db->sql_query($sql); am Ende nicht.

Gruß Helmut

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Verfasst: 25.02.2012 19:53
von Volli3
Hallo Helmut,
Scheint mir fast als ob die Anweisung für den Button "submit" schon vorher einen Datensatz schreibt bevor das array gefüllt wurde.
Dieser Denkanstoß hat mich auf die Lösung gebracht. Hab jetzt mal ausgiebig rumprobiert.
Die Leerzeile nach:
$sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(
ist nicht die Ursache.
$db->sql_query($sql);
Muss drin stehen, sonst überhaupt kein Eintrag

Habe den Code in der adress_eintrag.php jetzt so erweitert:
Und jetzt geht das :grin:

Code: Alles auswählen

// Beginn Daten in Datenbank eintragen  
	 $submit	= (isset($_POST['submit'])) ? true : false;
		if ($submit)
		{
	               
    $sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(

           'name' =>     request_var('name','', true),
           'strasse' =>  request_var('strasse','', true),
           'plz' =>      request_var('plz',''),
           'ort' =>      request_var('ort','', true),
           'land' =>     request_var('land','', true),
           'telefon' =>  request_var('telefon',''),
           'email' =>    request_var('email','', true),
           'homepage' => request_var('homepage','', true),
				   'Notiz' =>    request_var('Notiz',''))                       
				  );
            $db->sql_query($sql); 
     		}
   // Ende Daten in Datenbank eintragen 
Nur wenn ich jetzt den SUBMIT-Button drücke, erfolgt ein Eintrag und keine zusätzliche Leerzeile.
Ich muss mir nur noch was austüfteln ein paar Plichtfelder einzubauen, damit kein leerer Eintrag gespeichert wird wenn nicht wenigstens ein Feld ausgefüllt wird.
Dann ist das perfekt.