Alle Datensätze anzeigen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Alle Datensätze anzeigen

Beitrag von Walter91 »

Hallo, hab mal kleines Schript gemacht für eingeben und zeigen.
Reingeben und speichern in DB geht alles.
Bei anzeigen wird nur immer der letzte Datensatz gezeigt, will aber alle sehen.
Da fehlt also noch was im Script oder in der html
Kann mal jemand bitte helfen?
kunden.php

Code: Alles auswählen

$sql = 'SELECT * 
	FROM ' . KUNDEN_TABLE . '
	ORDER BY name';
	$result = $db->sql_query($sql);		
    while ($row = $db->sql_fetchrow($result))
    {
                   $kunde = $row['kunde'];
                   $handy = $row['handy'];      
       }
       $template->assign_vars(array(
              'KUNDE'      => $kunde,
          'HANDY'     => $handy,          
));
    $db->sql_freeresult($result);
ausgabe.html

Code: Alles auswählen

<table style="width:100%">   
<tr>
    <td style="width:50%">{KUNDE}</td>
    <td style="width:50%">{HANDY}</td>
</tr>   
    </table>
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Alle Datensätze anzeigen

Beitrag von Helmut »

Hallo Walter91,

klar weil du die while Schleife vor der Ausgabe beendest und somit nur der letzte Datensatz übrig bleibt. Du müsstest es so machen:

Code: Alles auswählen

    $sql = 'SELECT *
       FROM ' . KUNDEN_TABLE . '
       ORDER BY name';
       $result = $db->sql_query($sql);      
        while ($row = $db->sql_fetchrow($result))
        {
            $kunde = $row['kunde'];
            $handy = $row['handy'];
     
            $template->assign_block_vars('liste', array(
                  'KUNDE'      => $kunde,
                  'HANDY'     => $handy,         
            ));
        }
        $db->sql_freeresult($result); 
und in der html dann so:

Code: Alles auswählen

<!-- BEGIN liste -->

{liste.KUNDE} 
{liste.HANDY}

<!-- END liste --> 
Damit solltest du die ganze Liste bekommen weil jetzt bei jedem Durchlauf der Schleife der nächste Datensatz ausgegeben wird bis zum Ende.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: Alle Datensätze anzeigen

Beitrag von Walter91 »

Danke Helmut für die Hilfe, das geht jetzt.
Wie kann ich da noch eine Funktion reinbauen um die Daten zu ändern?
Ich möchte,das ich einen Datensatz in der Ausgabeliste anklicken kann und der dann zum ändern in einen Formular geöffnet wird. Gibts da ne einfache Lösung?
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Alle Datensätze anzeigen

Beitrag von Helmut »

Hallo Walter91,

ist normal kein Problem, du baust einfach einen Link zu jedem Datensatz ein und übergibst im jeweiligen Link die ID des Datensatzes. Dann nimmst du für den Edit Mode einfach das gleiche Formular her wie du für den Eintrag des Datensatzes nimmst und füllst die Felder mit den Daten aus der Datenbank. Danach einfach bearbeiten und wieder als sql "UPDATE" abspeichern, das war es schon. Ähnlich geht es auch wenn du den Datensatz löschen willst.

Hier habe ich schon mal was dazu geschrieben:
viewtopic.php?p=1261517#p1261517
viewtopic.php?p=1262280#p1262280


Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: Alle Datensätze anzeigen

Beitrag von Walter91 »

Danke Helmut ich glaub das Grundprinzip hab ich kapiert.
Ich habe das in 2 php geteilt damit ich besser Übersicht hab.

edit_1.php zeigt die ID-Nummer als Link und übergibt das nach anklicken an die edit_2.php Das funktioniert erst mal.

Code: Alles auswählen

	$sql = 'SELECT * 
	FROM ' . KUNDEN_TABLE . '
	ORDER BY name';
	$result = $db->sql_query($sql);      
  while ($row = $db->sql_fetchrow($result))
   {
       $id       = $row['Id'];
       $kunde    = $row['kunde'];
       $handy    = $row['handy'];
             
       $template->assign_block_vars('liste', array(
       
          'ID'     => $id,
          'KUNDE'  => $kunde,
          'HANDY'  => $handy,
                            
       ));
     }
       $db->sql_freeresult($result);

	    $template->assign_vars(array(
			'U_FORM_ACTION_EDIT'  => append_sid($phpbb_root_path . 'edit_2.' . $phpEx, 'mode=edit&id=' . $row['id']), 
        
    )); 
die HTML dazu

Code: Alles auswählen

<form method="post" action="{U_FORM_ACTION_EDIT}">		
	 			     
  <table border="0" style="width:100%">
     <!-- BEGIN liste -->   
   <tr>
    <td <a href="{U_FORM_ACTION_EDIT}"><font color="blue">{liste.ID}</font></a></td>
    <td {liste.KUNDE}</td> 
    <td {liste.HANDY}</td>
   </tr>
     <!-- END liste --> 
  </table>
	</form>
Was mir jetzt noch nicht richtig klar ist, das eigentliche Ändern. Ich bin noch am Grübeln wie ich den richtigen Datensatz hier rein bekomme. So hab ich das jetzt.
edit_2.php

Code: Alles auswählen

$submit	= (isset($_POST['submit'])) ? true : false;
		if ($submit)
		{
								           
    $sql = 'INSERT INTO ' . KUNDEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(
    
           'kunde' => request_var('kunde',''),
				   'handy' => request_var('handy',''))                       
				  );				  
            $db->sql_query($sql);             
     		}     		

if ($submit == true)
    {
        $db->sql_query('UPDATE ' . KUNDEN_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE id = ' . $id);
    }    
die HTML dazu

Code: Alles auswählen

<form action="" method="post">
<table width="100%" border="0">   
  <tr>
    <td>Kunde</td>
    <td><input type="text" name="kunde" size="30" /></td>
  </tr>
  <tr>
    <td>Handy</td>
    <td><input type="text" name="handy" size="30" /></td>
  </tr>
 <tr>      
    <td><input type="submit" name="submit" value="Speichern" /></td>      
  </tr>
</table>
</form>
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: Alle Datensätze anzeigen

Beitrag von Walter91 »

Hat keiner von den Profis einen Tipp?
ID als Link anzeigen und auf edit_2.php weiterleiten funktioniert.
Mein Speichernformular klappt auch.
In der edit_2.php muss aber noch ein Fehler sein. Ausgewählter Datensatz wird nicht angezeigt.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Alle Datensätze anzeigen

Beitrag von Helmut »

Hallo Walter91,

in meinen Links habe ich dir ja schon gezeigt, wie du die Edit Funktion gestalten könntest. In der edit_1.php musst du den Editlink in die Schleife rein nehmen damit du jeweils die richtige ID bekommst.

edit_1.php

Code: Alles auswählen

 $sql = 'SELECT *
   FROM ' . KUNDEN_TABLE . '
   ORDER BY name';
   $result = $db->sql_query($sql);     
  while ($row = $db->sql_fetchrow($result))
   {
       $id       = $row['Id'];
       $kunde    = $row['kunde'];
       $handy    = $row['handy'];
             
       $template->assign_block_vars('liste', array(
       
          'ID'     => $id,
          'KUNDE'  => $kunde,
          'HANDY'  => $handy,

          'U_FORM_ACTION_EDIT'  => append_sid($phpbb_root_path . 'edit_2.' . $phpEx, 'mode=edit&id=' . $row['id']),
                          
       ));
     }
       $db->sql_freeresult($result);
 
Ich habe mal ein Beispiel zusammen gestellt, da kannst du sehen wie du es machen könntest. Du kannst Datensätze anlegen, bearbeiten und löschen, mit Vorschau und im Textfeld auch BBCodes und Smilies. Es werden allerdings keine Eingaben geprüft, auch nicht die Berechtigungen, müsstest halt noch dazu machen. Hier mal der Link, bedenke dass das Beispiel nicht für den produktiven Einsatz gedacht ist.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: Alle Datensätze anzeigen

Beitrag von Walter91 »

Genial, Helmut das ist ja schon eine ganze Komplettlösung die du zum Download bietest. Da stecken viele Lösungen drin. Hab das jetzt mal auf meine Daten geändert und läuft klasse.
Ich bin jetzt noch dabei die Suchfunktion anzupassen. Habe mir bisher für jeden Begriff eine extra Datei angelegt. Geht zwar auch ist aber umständlich. Kann man mehrere Suchbegriffe gleich in eine Datei schreiben?
So hab ich das und möchte weitere vordefinierte Begriffe z.B. handy in die selbe Datei einfügen.

Code: Alles auswählen

$suchen_kunde = request_var('kunde', '');                   
$sql = 'SELECT *
FROM ' . KUNDEN_TABLE ."
WHERE kunde LIKE '$suchen_kunde%'
GROUP BY kunde, name";           
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
    {
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“