Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Variable für $tabellenname wird nicht übermittelt [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Variable für $tabellenname wird nicht übermittelt


 
Devil-Inside
30-11-2004, 14:14 
 
Hallo!

Ein Problem gelöst, taucht schon ein neues auf.
Was ist meine, könnt ihr euch hier (http://www.timeconcept-int.de/html/anfrage.php) live anschauen.
(Einfach Mitarbeiternummer 1850 auswählen und auf "Senden" klicken.
Die anderen Felder sind noch nicht aktiv)
Das Design wird nocht fertig gemacht, bleibt nicht so!

Mein Skript
<?php
$anzeigen=10;//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
if($_GET[vor]){$start=$_GET[limit]+$anzeigen;}
if($_GET[back]){$start=$_GET[limit]-$anzeigen;}
if(!$start){$start=0;}
//Auslesen der Einträge
$tabellenname="$agent";

$sql="SELECT * FROM $tabellenname WHERE storno='nein'
LIMIT ".$start." , ".$anzeigen;
$link = mysql_connect("host","user","pwd");
mysql_select_db("db", $link);
$result = mysql_query($sql, $link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}
//Ermitteln, wie viele Einträge vorliegen
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 = mysql_query($sql1, $link);
$max= mysql_result($result1,0,0);

//Ausgeben der Einträge
for($i=0;$i<count($ergebnis);$i++)
{
echo "<table border=0><tr><td width=150> ".$ergebnis[$i][firma]." </td>
<td width=150> ".$ergebnis[$i][vorname]." </td>
<td width=150> ".$ergebnis[$i][nachname]." </td>
<td width=180> ".$ergebnis[$i][plz]." ".$ergebnis[$i][ort]." </td>";
if ($ergebnis[$i][storno] == nein)
{
echo '<td width=50 align="center">
<img src="http://www.timeconcept-int.de/button_ok_20.gif"></td>';
}
elseif ($ergebnis[$i][storno] == ja) {
echo '<td width=50 align="center">
<img src="http://www.timeconcept-int.de/button_error_20.gif"></td>';
}
else {}
echo '<td width=25><a href="anfrage_details.php?tabellenname='.$tabellenname.'
&id='.$ergebnis[$i][id].'">Details</a></td></tr></table>';

}
//Ausgeben der Links vor und zurück
echo "<table border=\"1\" width=\"850\"><tr><td align=\"left\">";
if($start>=$anzeigen){echo "<a href=\"".$PHP_SELF."?limit=".$start."&back=1\">Zurück</a>";}
echo "</td><td align=\"right\">";
if($start+$anzeigen<$max){echo "<a href=\"".$PHP_SELF."?limit=".$start."&vor=1\">Weiter</a>";}
echo "</tr></table>";
?>

Jetzt ist das Problem, wenn ich auf "weiter" klicke bekomme ich eine leere Seite. Ich nehme an, dass $tabellenname nicht übergeben wird.
Wie macht man das?
Habe so etwas versucht, aber es klappt nicht:

if($start>=$anzeigen){echo "<a href=\"".$PHP_SELF."
?tabellenname=".$tabellenname."&limit=".$start."&back=1\">Zurück</a>";}

 
wahsaga
30-11-2004, 14:21 
 
klingt auf den ersten blick nach dem stinknormalen register_globals-problem.
bitte informiere dich darüber, damit wir das hier nicht erneut durchkauen müssen.


btw: du hast doch wohl hoffentlich nicht wirklich für jeden agenten eine eigene tabelle angelegt, oder? das dürfte ja ein ziemlich vermurkstes datenmodell sein.

 
Devil-Inside
30-11-2004, 14:55 
 
Ich finde es einfacher für jeden Mitarbeiter (Agenten) eine Tabelle anzulegen. Es sind ja nur 30.
Dann hat jeder Mitarbeiter eigene Tabelle mit eigenen Kunden.
Hatte es vorher anders, nur eine Tabelle. Das war unübersichtlich und voll.

Ich habe mal durchgesöbert im Forum, aber keine passende Antwort gefunden.
Vielleicht sollte ich mir mehr Zeit nehmen, die ich aber wirklich nicht habe.

Ich weiß, dass man die Variablen mit in den Link setzen kann und weiter geben kann.
Und mit$tabellenname=$_GET['tabellenname'];
übernimmt. Aber in dér Browserleiste unten kann man sehen,
woraus der Link besteht. Und da fehlt die Angabe .....php?tabellenname=agent1850 (als Beispiel)
Warum?

 
asp2php
30-11-2004, 22:59 
 
wahrscheinlich, weil du nicht konsequent $tabellenname=$_GET['tabellenname'];
anwendet, sowie in obigen Script :dontknow:

 
wahsaga
01-12-2004, 10:49 
 
Original geschrieben von Devil-Inside
Ich finde es einfacher für jeden Mitarbeiter (Agenten) eine Tabelle anzulegen. Es sind ja nur 30.
Dann hat jeder Mitarbeiter eigene Tabelle mit eigenen Kunden.
das ist ein vermurkstes datenmodell.

 
Payne_of_Death
01-12-2004, 12:11 
 
Wo ist das Problem?

Eine Table Kunden
Eine Table Mitarbeiter
Eine Table Mitarbeiter_Kunden

Lässt sich doch easy pflegen....
Je nachdem ob ein Kunde nur einem Mitarbeiter gehören kann, könnte man den Primary KEy in Mitarbeiter_Kunden auf die Kunden ID setzen.....

 
goth
01-12-2004, 12:14 
 
oh schick ... meine Lieblingszuweisung: $tabellenname="$agent"; ... richtiges Troll-PHP ... !

 
Devil-Inside
01-12-2004, 12:27 
 
Ich weiß, dass es überflüßig ist $tabellenname="$agent";
Zum Schluß kürze ich alles, was weg kann.

Ich bin kein PHP-Kenner.
Eine Bekannte fragte mich, ob ich für ihr Unternehmen eine einfache Datenbank für die Kundenverwaltung erstellen kann.
Und gegen eine Herausfoderung habe ich nichts.

Ich sitze dann an den Büchern und "studiere" dann PHP.
Ich mache es aber nicht beruflich, deswegen muß ich mich damit nicht
perfekt auskennen. Und zu Not gibt es das gute Forum.

Also nicht böse sein, wenn mein Skript nicht den Programmierer-Erwartungen
entspricht. Beruflich bin ich im kaufmännischen Tätig, also nix mit Mediengestalltung.

Danke!!!

 
Wendel
01-12-2004, 12:31 
 
if($start+$anzeigen<$max){echo "<a href=\"".$PHP_SELF."?limit=".$start."&vor=1\">Weiter</a>";}
echo "</tr></table>";
?>
if($start>=$anzeigen){echo "<a href=\"".$PHP_SELF."
?tabellenname=".$tabellenname."&limit=".$start."&back=1\">Zurück</a>";}
Fällt Dir irgend ein Unterschied der beiden Zeilen auf?
Steht das so in Deinem Script, oder war das ein posting-Fehler.
Weil so, wird bei >Weiter< kein tabellenname übergeben!oder steht da was, was wir nicht sehen?
Zu Deinem Datenbankmodell sag ich jetzt ma nix, aber den Vorschlag von Payne_of_death würde ich mir nochmal durch den Kopf gehen lassen.

 
goth
01-12-2004, 12:32 
 
Blödsinn ... eine Zuweisung $tabellenname=$agent; kann ja durchaus Sinn machen ... Das hier: $tabellenname="$agent" ... ist Troll-PHP ... !

 
Devil-Inside
01-12-2004, 13:15 
 
Ich habe es zur Zeit so gelassen:
if($start+$anzeigen<$max){echo "<a href=\"".$PHP_SELF."?
limit=".$start."&vor=1\">Weiter</a>";}echo "</tr></table>";?>
Hatte es aber so probiert:
if($start>=$anzeigen){echo "<a href=\"".$PHP_SELF."?
tabellenname=".$tabellenname."&limit=".$start."&back=1\">Zurück</a>";}
, damit die Variable $Tabellenname übergeben wird.

Das funktioniert bei einem anderen Skript. Siehe hier (http://www.timeconcept-int.de/html/anfrage.php),
wenn man auf Details klickt. (Die Seite Anfrage_details ist nicht online).

Was muß ich in der Zeile
if($start+$anzeigen<$max){echo "<a href=\"".$PHP_SELF."?
limit=".$start."&vor=1\">Weiter</a>";}echo "</tr></table>";?>
ändern oder hinzufügen, damit die Variable
$Tabellenname übergeben wird.

Damit sie auch übernommen wird, ist das dann hier richtig?
$tabellenname =$_GET['tabellenname'];

Zum Datenbankmodell
Die db wird schon gefüllt. Die wieder umzustellen, ist zu aufwendig.
Wie viele Sätze verträgt eine Tabelle überhaupt.?
Ist das nicht so: Jeder größer die Tabelle, desto länger die Ladezeiten?

 
Wendel
01-12-2004, 16:40 
 
Aus
if($start+$anzeigen<$max){echo "<a href=\"".$PHP_SELF."?
limit=".$start."&vor=1\">Weiter</a>";}echo "</tr></table>";?>
wird durch hinzufügen von ?tabellenname=".$tabellenname."
if($start+$anzeigen<$max){echo "<a href=\"".$PHP_SELF."?Tabellenname=".$tabellenname."&limit=".$start."&vor=1\">Weiter</a>";}echo "</tr></table>";?>
und dann sollte das auch funktionieren mit der Übergabe.

 
goth
01-12-2004, 16:45 
 
Ich verschieb's jetzt trotzdem mal ... für mich ist das kein SQL Problem ... !

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:24 Uhr.