mosiz: dynamisch if für mysql

Hallo,
über ein link <a href=index.php?var=tabellen_name>
übergebe ich variable (var) mit den tabellennamen.

ich lese meine SQL-Tabellen mit:

$abftrge =   $abfrage = "SHOW TABLES";
$ergebnis = mysql_query( $abfrage, $dbref );
  for( $i=0; $i < mysql_num_rows( $ergebnis ); $i++ ) {

print mysql_result( $ergebnis, $i );
  }
aus.

durch mysql_result( $ergebnis, $i ) erhalte ich nun die namen der einzelnen tabellen. ich würde jetzt gerne wissen wie erstell ich jetzt die if abfrage zu einer vorhandenen oder nicht vorhanden tabelle auserhalb der for scheife dar?

z.B.
in dieser if müsste ich jeden tabellen_namen eintragen, verknüpft mit or oder and.
if( $var == "tabellen_name" ){
tabellen_name ist vorhanden. mach das
}else{
tabellen_name ist _nicht_ vorhanden. mach das
}
ich möchte versuchen die abfrage dynamisch zuerstellen, ich weiss nur noch nicht wie und geht das überhaupt, wenn ja wie?!

Grüße mosiz

  1. Hallo mosiz!

    <a href=index.php?var=tabellen_name>
    übergebe ich variable (var) mit den tabellennamen.

    Greife in deinem Script doch bitte über $_GET['var'] auf diese Variable zu.
    (Lesetip: http://www.php.net/manual/en/language.variables.predefined.php)

    ich lese meine SQL-Tabellen mit [...] aus.

    Also, nochmal langsam:
    Du willst prüfe, ob der im Link übergebene Variablenname ein gültiger Tabellenname ist?

    Wenn Du die in der Datenbank vorhandenen Tabellen in einen array schreibst, dann solltest Du mit in_array() (http://php.net/in_array) prüfen können, ob die übergebene Variable einer Tabele entspricht, oder nicht.

    Ich hoffe, ich habe deine Frage richtig verstanden und einigermaßen beantwortet.

    MfG
    Götz

    --
    Losung und Lehrtext für Donnerstag, 16. Oktober 2003
    Du holst mich wieder herauf aus den Tiefen der Erde. Du machst mich sehr groß und tröstest mich wieder. (Psalm 71,20-21)
    Eine Frau, die seit zwölf Jahren den Blutfluss hatte, trat von hinten an Jesus heran und berührte den Saum seines Gewandes. Da wandte sich Jesus um und sah sie und sprach: Sei getrost, meine Tochter, dein Glaube hat dir geholfen. Und die Frau wurde gesund zu derselben Stunde. (Matthäus 9,20.22)
    (http://www.losungen.de/heute.php3)
    1. Hi Götz,

      Greife in deinem Script doch bitte über $_GET['var'] auf diese Variable zu.

      warum nicht mit $_POST['var'] oder warum mit $_GET['var']?

      Du willst prüfe, ob der im Link übergebene Variablenname ein gültiger Tabellenname ist?

      exakt, genau das meine ich.
      das könnte doch dann so ausehen oder?
      if( in_array( $var, $ergebnis) ) {
      gruß mosiz

      1. Hallo mosiz!

        Das mit dem Array scheint ja zu klappen.

        warum nicht mit $_POST['var'] oder warum mit $_GET['var']?

        Weil du die Variable ja im Link übergibst, also per GET und nicht in einem formular oder so (wobei Formular nicht zwingend = POST ist, aber meist ist das so).

        Götz

        --
        Losung und Lehrtext für Donnerstag, 16. Oktober 2003
        Du holst mich wieder herauf aus den Tiefen der Erde. Du machst mich sehr groß und tröstest mich wieder. (Psalm 71,20-21)
        Eine Frau, die seit zwölf Jahren den Blutfluss hatte, trat von hinten an Jesus heran und berührte den Saum seines Gewandes. Da wandte sich Jesus um und sah sie und sprach: Sei getrost, meine Tochter, dein Glaube hat dir geholfen. Und die Frau wurde gesund zu derselben Stunde. (Matthäus 9,20.22)
        (http://www.losungen.de/heute.php3)
    2. ich ich habs :).

      ich erstelle ein leeres array z.B.
      $tabellenname = array()

      und führe array_push($tablename, mysql_result( $ergebnis, $i ));
      in der for schleife aus

      auserhalb der for kann ich dann die if so aufbauen
      if( in_array( $menue, $tablename) ) {

      cool, danke für den denk anstoss

      -------------------------------------------------------------------
      Nichts wahrhaft Wertvolles erwächst aus Ehrgeiz oder bloßem Pflichtgefühl, sondern vielmehr aus Liebe und Treue zu Menschen und Dingen.

      Albert Einstein (1879 &#8211; 1955)
      Physiker und Nobelpreisträger

  2. Hi,

    weiß nicht ob ich die Frage verstanden habe,
    aber du willst nur feststellen, ob die Tabelle existiert?
    dann selektier doch einfach einen Datensatz aus der Tabelle, wenn du null oder einen Fehler bekommst, gibt's das ding nicht.

    SELECT * FROM tabellenname LIMIT 0,1;

    Oder man kann auch glaub ich die Tabelle direkt selektieren (also nicht über alle und dann aussortieren) mit:

    SHOW TABLE tabellenname;

    BTW: du solltest aufpassen, wenn du variablen bzw. Übergabeparameter direkt in dein Statment einbaust, stell die vor es ruft einer die seite mit "seite.html?var=tabellexy;delete from tabellexy"

  3. Greetz,

    Versuch mal folgendes:

    while ($line = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
    {
     if ($line["Tables_in_[deineDB]"] == "tabellen_name")
     {
      Anweisungen;
     }
    }

    der ausdruck ["Tables_in_[deineDB]"] könnte evtl. anders laut (versionsunterschiede). Müsstest "SHOW TABLES" in per pure SQL einfach mal abfragen und schauen wie die Spaltenüberschrift lautet.

    cya.