Seite 1 von 1

Alle Datensätze anzeigen

Verfasst: 16.02.2012 11:01
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>

Re: Alle Datensätze anzeigen

Verfasst: 16.02.2012 13:59
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

Re: Alle Datensätze anzeigen

Verfasst: 10.03.2012 17:08
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?

Re: Alle Datensätze anzeigen

Verfasst: 13.03.2012 11:08
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

Re: Alle Datensätze anzeigen

Verfasst: 14.03.2012 16:29
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>

Re: Alle Datensätze anzeigen

Verfasst: 23.03.2012 15:20
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.

Re: Alle Datensätze anzeigen

Verfasst: 25.03.2012 19:24
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

Re: Alle Datensätze anzeigen

Verfasst: 01.04.2012 17:50
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))
    {