IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sauvegarde de certaines tables d'une BdD


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut Sauvegarde de certaines tables d'une BdD
    Bonjour,

    je cherche à effectuer des sauvegardes de certaines tables d'une base de données avec des cases à cocher

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     //------------------ Connexion à la BdD -----------------------------
     
    include("connect.php");
     
    // ------------ Charger toutes les tables de la BdD-------------------
    echo'<br />'; echo'<br />'; echo'<br />';  
     
    	$req="show tables";
    	$result=mysqli_query($SQL,$req);
     
    echo"<center>";		
    echo "<p><h5><b>Sélectionnez les tables à sauvegarder: </b></h5></p>";
     
    echo '<form method="POST" action="">';
    echo"<table>";
    echo"<tr><td>Table</td><td>Tables à sauvegarder</td></tr>";
     
    	while ($ligne=mysqli_fetch_assoc($result))		
    	{	
    	echo '<tr>
    			<td>',print_r ($ligne),'</td>
    			<td><input type="checkbox" name=" [Tables_in_aisne]" value="',$ligne[0],'"</td>
    		</tr>
    		';	
    		echo"<br />";
    	}
     
    	echo '<tr><td colspan="4"><input type="submit" value="Sauvegarder les Tables cochées" /></td></tr>';
     
    echo"</table>";
    echo"</form>";			
    echo"</center>";
     
    //---------- Récuperation du nom des tables choisies -----------------	
     
    		$table = $_POST[' [Tables_in_aisne]'];
    		print_r ( $table);
    Je lis bien les tables, mais impossible de mettre en place.

    Message d'erreur:

    Sélectionnez les tables à sauvegarder:
    
    Table	Tables à sauvegarder
    Array ( [Tables_in_aisne] => _act_dec3 ) 1 	( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0165	136952	{main}( )	...\index.php:0
    "
    Array ( [Tables_in_aisne] => _act_div3 ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 "
    Array ( [Tables_in_aisne] => _act_mar3 ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 "
    Array ( [Tables_in_aisne] => _act_nai3 ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 "
    Array ( [Tables_in_aisne] => act_dec3 ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 "
    Array ( [Tables_in_aisne] => act_div3 ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 "
    Array ( [Tables_in_aisne] => act_geoloc ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 "
    Array ( [Tables_in_aisne] => act_log ) 1 ( ! ) Notice: Undefined offset: 0 in J:\UwAmp\www\backup_tables_case_cocher\index.php on line 45 Call Stack #TimeMemoryFunctionLocation 10.0165136952{main}( )...\index.php:0 " 
    j'ai bien les petits carrés à cocher qui apparaissent aprés le nom de la table et le chiffre 1

    la ligne erreur 45 correspond a la ligne 23

    merci de votre aide

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Pourtant le message est clair: Notice: Undefined offset: 0.

    Il n'y a pas d'index (ou de clef) 0 dans ton tableau $ligne. D'ailleurs tu peux le voir puisque tu l'affiches: Array ( [Tables_in_aisne] => _act_div3 ) .

    La seule clef de ton tableau est [Tables_in_aisne], il n'y en a pas d'autre.

    Au passage print_r peut s'utiliser de deux manières, soit comme une fonction qui provoque l'affichage et renvoie 1 par défaut (d'où le 1 qui s'affiche après ton tableau) quand on écrit print_r($variable); soit comme une fonction qui renvoie une chaîne si on met son deuxième paramètre à true: print_r($variable, true). C'est plutôt cette deuxième forme que tu devrais utiliser.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut
    Bonjour et merci de la réponse,

    non ce n'est malheureusement pas clair pour moi
    j'ai mis le true, mais pareil

    si tu pouvais m'en dire plus ce serait sympa

    à+

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    je pense que ceci devrait aider.

    Pour des détails sur les tableaux PHP : http://php.net/manual/fr/language.types.array.php
    Christophe

    Pensez à mettre quand c'est le cas.

  5. #5
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut
    Bonjour et merci pour les liens.
    Le problème est que l'appel à :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req="show tables";
    $result=mysqli_query($SQL,$req);

    …n'est pas courant et je ne vois pas comment connaitre l'index sans Id et configurer le while et l'input.

    Si quelqu'un a la solution pour les quelques lignes…
    Bonne soirée.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Je ne comprends pas votre question.

    Avez-vous fait ce qu'écrit CosmoKnacki ? (mes liens ne sont là que pour expliquer le fonctionnement de base de ce qu'il a écrit)

    La FAQ contient, entre autres, un exemple avec "show tables". En quoi n'est-ce pas courant ?
    J'ai l'impression que vous n'avez pas les bases PHP-MySQL.
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut
    bonjour et merci,

    oui j'ai essayé, mais compte tenu que dans ma requête show table je n'ai pas d'ID, juste le nom de la table
    je ne vois pas comment configurer les cases à cocher et retrouver le reste du script

    j'ai fait un script identique ou l'on choisi la table à sauvegarder dans une combo box et qui fonctionne bien

    http://gratosscript.fr

    si vous avez une minute pour me dire comment configurer les 3 ou 4 lignes de la partie cases à cocher

    oui j'ai des lacunes, mais à prés de 70 ans se mettre a la programmation en autodidacte pour la gestion d'une association , ce n'est pas tés facile

    à+ j'espére





    à+

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    http://g-rossolini.developpez.com/tu...tique#LIII-A-4 montre bien comment utiliser les cases à cocher.

    Cela devrait donner pour votre code ceci (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     <?php
     //------------------ Connexion à la BdD -----------------------------
     
    include("connect.php");
     
    // ------------ Charger toutes les tables de la BdD-------------------
    echo'<br /><br /><br />';  
     
    	$req="show tables";
    	$result=mysqli_query($SQL,$req);
     
    echo"<center>";		
    echo "<p><h5><b>Sélectionnez les tables à sauvegarder: </b></h5></p>";
     
    echo '<form method="POST" action="">';
    echo"<table>";
    echo"<tr><td>Table</td><td>Tables à sauvegarder</td></tr>";
     
    	while ($ligne=mysqli_fetch_assoc($result))		
    	{	
    	echo '<tr>
    			<td>',print_r ($ligne),'</td>
    			<td><input type="checkbox" name="Tables_in_aisne[]" value="'.$ligne[0].'"</td>
    		</tr>
    		';	
    	}
     
    	echo '<tr><td colspan="2">&nbsp;</td></tr>
                    <tr><td colspan="2"><input type="submit" value="Sauvegarder les Tables cochées" /></td></tr>';
     
    echo"</table>";
    echo"</form>";			
    echo"</center>";
     
    //---------- Récuperation du nom des tables choisies -----------------	
     
    		$table = $_POST['Tables_in_aisne'];
    		print_r ( $table);
    ?>
    Remarques :
    - La balise "<br/>" n'est pas à sa place entre deux "tr".
    - Le colspan est de 2, pas 4.
    - Il manque l'action du formulaire (mettre le nom de la page PHP).
    - $_POST ne peut rien afficher avant la soumission du formulaire.
    - La concaténation se fait avec "." pas ",".
    Christophe

    Pensez à mettre quand c'est le cas.

  9. #9
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Points : 62
    Points
    62
    Par défaut
    re christophe

    merci pour tes bons renseignements et conseils j'ai résolu le problème avec le script suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    // ------------ Charger toutes les tables de la BdD-------------------
    echo'<br />'; echo'<br />'; echo'<br />';  
     
    	$req="show tables";
    	$result=mysqli_query($SQL,$req);
     
    echo"<center>";		
    echo "<p><h5><b>Sélectionnez les tables à sauvegarder: </b></h5></p>";
    echo"</center>";
     
    echo"<center>";		
    echo '<form method="POST" action="">';
     
     
    echo"<table>";
    	while ($ligne=mysqli_fetch_array($result))		
    	{	
    	echo '<tr>
    			<td>',print_r ($ligne,true),'</td>
    			<td><input type="checkbox" name=" Tables_in_aisne[]" value="',$ligne[0],'"</td>
    		</tr>
    		';	
     
    			}			
    echo"</table>";		echo"<br />";		echo"<br />";
     
    	echo '<tr><td colspan="4"><input type="submit" value="Sauvegarder les Tables cochées" /></td></tr>';
     
    echo"</form>";			
    echo"</center>";
     
    //---------- Récuperation du nom des tables choisies -----------------	
     //pour debug
    	if(!empty($_POST))
    	{    
        echo '<pre>';
        print_r($_POST);
        echo '</pre><br />';
    	}
    merci encore et bonne journée

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Il reste quelques problèmes de placement de balises ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo"</table>";		echo"<br />";		echo"<br />";
     
    	echo '<tr><td colspan="4"><input type="submit" value="Sauvegarder les Tables cochées" /></td></tr>';
    Le "tr" n'est pas dans une table.

    Ce qui suit devrait faire la même chose (bien que la balise "<center>" soit obsolète) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo"</table>";	
    echo"<br /><br />";
     
    echo '<center><input type="submit" value="Sauvegarder les Tables cochées" /></center>';
    Christophe

    Pensez à mettre quand c'est le cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher les tables d'une BDD
    Par Samanta dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/07/2005, 18h09
  2. Réponses: 2
    Dernier message: 23/06/2005, 17h56
  3. récupérer le nom des champs d'une table d'une BDD-page web
    Par mathieu_r dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 09/06/2005, 14h02
  4. Obtenir le listing des tables d'une BDD
    Par zoubidaman dans le forum Outils
    Réponses: 1
    Dernier message: 10/11/2004, 00h17
  5. liste des tables d'une BDD
    Par 120 dans le forum ASP
    Réponses: 4
    Dernier message: 21/06/2004, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo