Personendatenbank

Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Hi yui!

Was heißt denn:
"Zeige alle Datensätze, deren PLZ mit einer x anfängt und gebe die in der Datei personen.php aus"
???

Also der Select dafür wäre:

Code: Alles auswählen

SELECT * FROM con_personen WHERE PLZ LIKE 'x%';
Damit bekommst Du nur die Einträge, deren PLZ mit einem 'x' anfangen. Kannst dann ja durch 1, 2, 3 ... ersetzen.
Nur verstehe ich den Sinn nicht darin. Möchtest Du die PLZ sortieren, oder wie? Das geht auch mit 'ORDER BY PLZ ASC'. Was willst Du denn in die Datei personen.php ausgeben??

Gruß,
Black Widow
yui
Beiträge: 140
Registriert: Di 17. Jun 2003, 17:55
Kontaktdaten:

Beitrag von yui »

Ich mache das jetzt mit dem Modul "snippet", in dem man direkt PHP eingeben kann.

Diese Abfrage läuft auf meinem lokal Server richtig, nur in Contenido bekomme ich es nicht zum laufen.

Code: Alles auswählen

 <?php
mysql_select_db($database_DBName, $tbl_personen);
$query_Recordset1 = "SELECT * FROM tbl_personen WHERE PLZ LIKE '1%'  ORDER BY PLZ ASC";
$Recordset1 = mysql_query($query_Recordset1, $tbl_personen) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
 
 
 
 	  
            <table width="100%"  border="0" cellpadding="1" cellspacing="0">
              <tr>
                <td width="88"> </td>
                <td width="19"> </td>
                <td colspan="4" class="s2"><div align="right">Telefonische Beratung </div></td>
              </tr>
              <tr>
                <td> </td>
                <td> </td>
                <td colspan="3" class="s3"><div align="right">Beratung vor Ort </div></td>
                <td width="20" class="s2"> </td>
              </tr>
              <tr>
                <td> </td>
                <td> </td>
                <td colspan="2" class="s1"><div align="right">Gruppe</div></td>
                <td width="20" class="s3"> </td>
                <td width="20" class="s2"> </td>
              </tr>
              <?php do { ?>
              <tr>
                <td colspan="2" bgcolor="#CCCCCC" class="beratung"><?php echo $row_Recordset1['PLZ']; ?> <?php echo $row_Recordset1['Ort']; ?></td>
                <td width="193" bgcolor="#CCCCCC" class="beratung"><?php echo $row_Recordset1['Name']; ?></td>
                <td width="20" class="s1"><div align="center"><?php echo $row_Recordset1['Gruppe']; ?></div></td>
                <td width="20" class="s3"><div align="center"><?php echo $row_Recordset1['Beraterin']; ?></div></td>
                <td width="20" class="s2"><div align="center"><?php echo $row_Recordset1['TelBerat']; ?></div></td>
              </tr>
              <tr>
                <td colspan="2"> </td>
                <td class="beratung"><?php echo $row_Recordset1['Telefon']; ?> <a href="http://<?php echo $row_Recordset1['Homepage']; ?>" title="Seite öffnet sich in einem neuen Fenster" target="_blank"><?php echo $row_Recordset1['Homepage']; ?></a> <br>
                <?php echo $row_Recordset1['Infos']; ?></td>
                <td width="20" class="NaviKlein"> </td>
                <td width="20" class="NaviKlein"> </td>
                <td width="20" class="NaviKlein"> </td>
              </tr>
              <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
			  <tr>
                <td colspan="4" class="s1"><div align="right">Gruppe</div></td>
                <td width="20" class="s3"> </td>
                <td width="20" class="s2"> </td>
              </tr>
			  <tr>
                <td colspan="5" class="s3"><div align="right">Beratung vor Ort </div></td>
                <td width="20" class="s2"> </td>
              </tr>
			  <tr>
                <td colspan="6" class="s2"><div align="right">Telefonische Beratung </div></td>
              </tr>
              
              
            </table>  
			
			 
<?php
mysql_free_result($Recordset1);

?>
Ich vermute, dass die DB_Verknüpfung falsch ist, kann jedoch den Fehler einfach nicht finden. Hat jemand von Euch eine Idee?

yui
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Also in Contenido kannste Du doch die Klasse DB_Contenido benutzen!

Einfach ...

Code: Alles auswählen

$sql_query = "SELECT ....... ";
$db_Con = new DB_Contenido;
$db_Con->query($sql_query);

while($db_Con->next_record())
{
    //mache irgendwas
    echo ($db_Con->f('Spaltenname'));
}
usw ....

Damit klappts!

Gruß,
Black Widow
yui
Beiträge: 140
Registriert: Di 17. Jun 2003, 17:55
Kontaktdaten:

Beitrag von yui »

Hi Black Widow,

vielen Dank für Deinen Beitrag. Dein Auszug funktioniert für sich, allerdings nicht in der Tabelle, geschweige denn in der Anzeige der Datensätze.

Würde es Dir etwas ausmachen, Dein Beispiel ansatzweise in meine Tabelle einzuweben? Ich kann ein paar platte Weisheiten noch gut gebrauchen.

yui
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Hi yui!

So, hab das mal ganz schnell zusammengeklöppelt, hab im Moment leider keine Zeit das groß durchzugucken, hoffe das läuft ...

Code: Alles auswählen

<?php

$sql_query = "SELECT * FROM tbl_personen WHERE PLZ LIKE '1%'  ORDER BY PLZ ASC"; 
$db_Con = new DB_Contenido; 
$db_Con->query($sql_query); 
?>


<table width="100%"  border="0" cellpadding="1" cellspacing="0"> 
  <tr> 
    <td width="88"> </td> 
    <td width="19"> </td> 
    <td colspan="4" class="s2"><div align="right">Telefonische Beratung </div></td> 
  </tr> 
  <tr> 
    <td> </td> 
    <td> </td> 
    <td colspan="3" class="s3"><div align="right">Beratung vor Ort </div></td> 
    <td width="20" class="s2"> </td> 
  </tr> 
  <tr> 
    <td> </td> 
    <td> </td> 
    <td colspan="2" class="s1"><div align="right">Gruppe</div></td> 
    <td width="20" class="s3"> </td> 
    <td width="20" class="s2"> </td> 
  </tr> 
  
<?php
	while($db_Con->next_record()) 
	{ ?>
	  <tr> 
	    <td colspan="2" bgcolor="#CCCCCC" class="beratung"><?php echo($db_Con->f('PLZ').' '.$db_Con->f('Ort')); ?></td> 
	    <td width="193" bgcolor="#CCCCCC" class="beratung"><?php echo($db_Con->f('Name')); ?></td> 
	    <td width="20" class="s1"><div align="center"><?php echo($db_Con->f('Gruppe')); ?></div></td> 
	    <td width="20" class="s3"><div align="center"><?php echo($db_Con->f('Beraterin')); ?></div></td> 
	    <td width="20" class="s2"><div align="center"><?php echo($db_Con->f('TelBerat')); ?></div></td> 
	  </tr> 
	  <tr> 
	    <td colspan="2"> </td> 
	    <td class="beratung"><?php echo($db_Con->f('Telefon')); ?> <a href="http://echo($db_Con->f('Homepage'));; ?>" title="Seite öffnet sich in einem neuen Fenster" target="_blank"><?php echo($db_Con->f('Homepage')); ?></a> <br> 
	    <?php echo($db_Con->f('Infos')); ?></td> 
	    <td width="20" class="NaviKlein"> </td> 
	    <td width="20" class="NaviKlein"> </td> 
	    <td width="20" class="NaviKlein"> </td> 
	  </tr> 
  <?php } ?> 
<tr> 
    <td colspan="4" class="s1"><div align="right">Gruppe</div></td> 
    <td width="20" class="s3"> </td> 
    <td width="20" class="s2"> </td> 
  </tr> 
<tr> 
    <td colspan="5" class="s3"><div align="right">Beratung vor Ort </div></td> 
    <td width="20" class="s2"> </td> 
  </tr> 
<tr> 
    <td colspan="6" class="s2"><div align="right">Telefonische Beratung </div></td> 
</tr>
  
</table>  
Schau mal, ob Du da was mit anfangen kannst ...

Gruß,
Timo
yui
Beiträge: 140
Registriert: Di 17. Jun 2003, 17:55
Kontaktdaten:

Beitrag von yui »

Hi Timo,

genau so soll es sein!!

1000 Dank! :D

yui
Black Widow
Beiträge: 174
Registriert: Mi 22. Okt 2003, 11:08
Kontaktdaten:

Beitrag von Black Widow »

Hi yui!

Kein Problem! :wink:
PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay »

Ich würde eigentlich eher einen anderen Ansatz wählen, und zwar weil er sich für beliebig andere Projekte einsetzen lässt und keine zusaätzliche Tabelle benötigt und kein Extra-Verwaltungssystem.

Die Idee dahinter ist, dass jeder Datensatz einen Artikel darstellt, und einzelne Felder dieses Artikels sind dann etwa CMS_HEAD, oder CMS_HTMLHEAD oder auch CMS_IMG, etc. Entsprechen muss man Vorlagen und Module für die Verwaltung der Datensätze und deren Ausgabe erstellen.

1. Du erstellst ein Layout, das nur den Inhalt CMS_CONTAINER[1] enthält, vorzüglich mit dem Namen CONFIG

2. Du erstellst mit HTML eine Tabelle folgeden Schemas und speicherst sie als OUTPUT eines neuen Moduls, etwa CONFIG_USERS:
- - - - - - - - - - - - - - - -
| Name | XXX
- - - - - - - - - - - - - - - -
| Vorname | YYY
...

3. Dort wo jetzt ein XXX steht, schreibst du im HTML-Code:
<?PHP echo "CMS_HTMLHEAD[1]" ?>
..dort wo Y steht:
<?PHP echo "CMS_HTMLHEAD[2]" ?>
und so weiter...
Wichtig ist, das das CMS_HTMLHEAD zwischen zwei "" steht, da das CMS_HTML im Editiermodus \" enthält.

4. Nun erstellst du eine Template mit dem Layout CONFIG und setzt für Container 1 das Modul CONFIG_USERS.

Damit hast du die Eingabemaske erstellt. Nun kannst du für jeden Benutzer einen Artikel mit der Template CONFIG_USERS erstellen und so via Contenido die Felder einfach editieren und verwalten.

5. Ich würde jetzt eine neue Hauptkatgorie mit dem Namen 'Datenquellen' erstellen, und darunter etwa eine Kategorie 'Persondendatenbank'. Dieser Kategorie ordnest du als Standardlayout einfach CONFIG_USERS zu.

6. Damit die Artikel schneller gefunden werden würde ich noch das Modul CONFIG_USERS am Schluss folgendermassen ergänzen:

Code: Alles auswählen

<?PHP

 if ($edit) {
  $str = "CMS_HTMLHEAD[1] / CMS_HTMLHEAD[2] / ...";
  // Filter alles ev. vorhandene HTML raus
  $str = preg_replace('/<([^<^>]*)>/si','',$str); 
  $sql = "UPDATE
           ".$cfg['tab']['art_lang']."
          SET
           title = '$str';
          WHERE
           idart = $idart
          ;
        ;";
  $db->query($sql);
 }

?>
Das ändert den Artikeltitel etwa in "Müller / Fritz / München", so dass die Daten leichter gefunden werden

Weiter zur Ausgabe der Daten:

7. Nun erstellst du ein weiteres Modul, etwa USERS_AUSGABE, und eine neue Template, wo du dem entsprechenden Container eben dieses neue Modul, USERS_AUSGABE, zuordnest.

8. Nun kommt die komfortable Contenido-API zum Einsatz, mit der du einfach alle Artikel der Datenquellen Kategorie ausliest und z.B. in einen Array speicherst. Diesen kannst du anschliessnd auch nach Bundesland, etc ordnen. Irgendwo must du noch eine Template speichern, so könnte das in etwa aussehen (Ist ein Modul, das ich zu ähnlichen Zwecken verwende, musst es nur noch etwas abändern):

Code: Alles auswählen

<?PHP
 $catStart = 25;

 $tpl['format']            =
  '

<p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
 <td>
  <table width="100%" border="0" cellspacing="0" cellpadding="1">
   <tr>
    <td><strong><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">[FUNCTION]</font></strong></td>
   </tr>
   <tr>
    <td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[NAME]</font></td>
   </tr>
   <tr>
    <td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[ADDRESS]</font></td>
   </tr>
   <tr>
    <td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[CITY]</font></td>
   </tr>
   <tr>
    <td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">[PHONE]</font></td>
   </tr>
  </table>
 </td>
</tr>
<tr>
 <td bgcolor="#666666"><img src="images/spacer.gif" width="1" height="1"></td>
</tr>
</table>
</p>


  ';

$artikel_param=array
 (
  'idcat'=>$catStart,
  'client'=>$client,
  'lang'=>$lang,
  'start'=>false,
  'order'=>"title",
  'direction'=>"asc"
 );

$artikel = new ArticleCollection($artikel_param);

while ($k_art=$artikel->nextArticle()) {
 $k_str=$tpl['format'];
 $k_str=preg_replace('/\[FUNCTION\]/si',$k_art->GetContent('htmlhead',1),$k_str);
 $k_str=preg_replace('/\[NAME\]/si',$k_art->GetContent('htmlhead',2),$k_str);
 $k_str=preg_replace('/\[ADDRESS\]/si',$k_art->GetContent('htmlhead',3),$k_str);
 $k_str=preg_replace('/\[CITY\]/si',$k_art->GetContent('htmlhead',4),$k_str);
 $k_str=preg_replace('/\[PHONE\]/si',$k_art->GetContent('htmlhead',5),$k_str);
 $k_str=preg_replace('/\[EMAIL\]/si',$k_art->GetContent('head',6),$k_str);
 $k_str=preg_replace('/\[EMAIL_ENC\]/si',eml_encode($k_art->GetContent('head',6)),$k_str);
 echo $k_str;
}

?>

Wie gesagt, diese Methode hat folgende Vorteile:
- Kann sehr schnell zu anderen Zwecken, etwa auch zu einem Gästebuch umgeschrieben werden
- Keine externe Verwaltung nötig, da jeder Datensatz einen Artikel darstellt und so einfach per Contenido editiert, gelöscht und verwaltet werden kann.
- Es ist leicht, nachher einen Redaktor einzuweisen, da dieser sowieso schon an Contenido gewöhnt ist (oder zumindest sein sollte).

Die Nachteile:
- Du solltest PHP und SQL ziemlich gut kennen, und natürlich Contenido
- Beim ersten Mal ist es etwas aufwändig, nacher dafür umso schneller.

Ich verwende diese Methode schon zu mehreren Zwecken, unter anderem für ein Gästebuch, ein Kontakteverzeichnis, ein Linkverzeichnis, eine Bildergalerie (noch in Entwicklung) und bin sehr zufrieden damit.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

@pickpay
intressante methode... jeder der zwei variationen hat ihre berechtigung...
ich würde dennoch die seperate tabelle vorziehen nur um die daten sätze getrennt von einander zu verwalten, zb für excel export, import
in der con_content wird es etwas schwieriger für mich das rauszufiltern
ch.schulze
Beiträge: 44
Registriert: Mo 25. Aug 2003, 22:41
Kontaktdaten:

Beitrag von ch.schulze »

hat jemand von euch schon sowas am laufen?
andrej
Beiträge: 333
Registriert: Mi 8. Okt 2003, 09:46
Kontaktdaten:

Beitrag von andrej »

Hat einer schon etwas brauchbares an der Hand ? Einer etwas weiter entwickelt ?
Gesperrt