Recherche de la clé primaire d'une table pour réindexer la table [Résolu]

claude77260 37 Messages postés dimanche 8 août 2010Date d'inscription 8 octobre 2016 Dernière intervention - 8 mars 2016 à 15:02 - Dernière réponse : claude77260 37 Messages postés dimanche 8 août 2010Date d'inscription 8 octobre 2016 Dernière intervention
- 8 mars 2016 à 16:38
Bonjour,

comme le sujet l'indique je cherche à trouver l'id (clé primaire) d'une table choisie par une combo
la combo fonctionne et je récupère bien le nom de la table.

mais j'ai une erreur de syntaxe dans

 $res = mysqli_query($SQL,'DESCRIBE ').$table);


voici mon code

//on recupere le nom de la table appelée par la combobox
echo $table;//c ok
// on cHerche dans la table le champ ID CLE PRIMAIRE DE LA TABLE
$res = mysqli_query($SQL,'DESCRIBE ').$table);

$primary_key = '';
while($line = mysqli_fetch_array($res))
{
if(isset($line['Key']) && $line['Key'] == 'PRI'){
$primary_key = $line['Field'];
break;
}
}
// Affichage du champ primaire :)
echo $primary_key;


merci pour votre aide
claude
Afficher la suite 

Votre réponse

8 réponses

jordane45 22777 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 octobre 2018 Dernière intervention - 8 mars 2016 à 15:07
0
Merci
Bonjour,

Ne vois tu pas une erreur à la ligne de code que tu nous donnes ?
$res = mysqli_query($SQL,'DESCRIBE ').$table);

Tu as une parenthèse fermante en trop non ?
Commenter la réponse de jordane45
claude77260 37 Messages postés dimanche 8 août 2010Date d'inscription 8 octobre 2016 Dernière intervention - Modifié par claude77260 le 8/03/2016 à 15:28
0
Merci
bonjourJordane

milles excuses, comme j'ai tout essayé, j'ai copié une mauvaise version
mais en retirant la ) en trop j'ai toujours une erreur avec
 $res = mysqli_query($SQL,'DESCRIBE ').$table;

act_dec3 çà c'est mon echo $table
Error :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM act_dec3' at line 1

merci pour ta disponibilité
jordane45 22777 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 octobre 2018 Dernière intervention - 8 mars 2016 à 15:32
Ben maintenant tu as le bon nombre de parenthèses ... mais .... la parenthèse fermante est mal placée....
relis bien ton code.....
Commenter la réponse de claude77260
claude77260 37 Messages postés dimanche 8 août 2010Date d'inscription 8 octobre 2016 Dernière intervention - 8 mars 2016 à 15:40
0
Merci
j'ai essayé
 $res = mysqli_query($SQL,'DESCRIBE '.$table);

c'est pourquoi j'avais oublié de la retirer
mais c'est pareil , même erreur
jordane45 22777 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 octobre 2018 Dernière intervention - 8 mars 2016 à 15:56
par contre.... je ne comprend pas le rapport entre le message d'erreur et la ligne de code que tu nous montres...
N'aurais tu pas une autre requête ailleurs dans ton code ?
Commenter la réponse de claude77260
claude77260 37 Messages postés dimanche 8 août 2010Date d'inscription 8 octobre 2016 Dernière intervention - 8 mars 2016 à 16:13
0
Merci
effectivement je me suis focalisé sur ce morceau de script que je venais d'ajouter et l'erreur était dans la suite du soft

tu es un vrai père pour moi
enfin je te ne souhaite pas j'ai prés de 70 ans

merci pour ton aide et bonne soirée, je ne mets pas résolu je posterai l'appli complète à la suite, des sa mise au propre

bye
jordane45 22777 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 13 octobre 2018 Dernière intervention - 8 mars 2016 à 16:20

tu es un vrai père pour moi
enfin je te ne souhaite pas j'ai prés de 70 ans

Il ne faut pas croire... j'étais précoce ... enfin ... à -35 ans ;-)

Bonne continuation.
Commenter la réponse de claude77260
claude77260 37 Messages postés dimanche 8 août 2010Date d'inscription 8 octobre 2016 Dernière intervention - Modifié par claude77260 le 8/03/2016 à 17:07
0
Merci
chose promise ,chose due
Script reindexation table mysql choisie par combobox



<?php
error_reporting(E_ALL);
//error_reporting(0);
//-------------------------------------------------------------------
// Application de réindexation tables MySql
// choix des tables par combobox
// script php 5.5 à 7.03 et +
// fichier index.php

// Récupération des sauvegardes de tables dans le répertoire _backup_tables
//----------------------------------------------------------------------
?>
<html>
<head>
<title>reindexe_table_bdd</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<meta name="Author" content="Claude TREUNET" />
</head>
<body>
<?php

//--------------------------------------------------------------------
// Connexion au serveur et la bdd
//--------------------------------------------------------------------
//------------------ Php 5.5 et + ------------------------------------

$host="localhost";// mettre à jour les elements de connexion
$user="root";
$passwd="root";
$bdd="aisne";

$SQL = mysqli_connect($host,$user,$passwd,$bdd) or exit('Erreur de connection au serveur : Fichier'.__FILE__.'<br />Ligne '.__LINE__.'<br />MySQL dit : '.mysqli_connect_error($SQL));

//--------------- Vérification de la connexion -----------------------
if (mysqli_connect_errno())
{
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();

}

// ------------ 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 la table à Réindexer: </b></h5></p>";
echo'<FORM method "GET" NAME="table" action"liste_tables_combo.php">';
echo'<SELECT NAME="table" onchange="form.submit()">';
echo"<OPTION>-- Choisissez une table ---</OPTION>";
while ($ligne=mysqli_fetch_array($result))
{
echo "<option value='".$ligne[0]."'>".$ligne[0]."</option>";
}
echo "</select>";
echo"</form>";
echo"</center>";

//--- Récuperation du nom de la table choisie dans la combo ----------

$table = $_GET['table'];
//echo $table;

//--------------------- legende -Bandeau bleu-------------------------
if( $_GET['table'])
{
echo'<br />'; echo'<br />'; echo'<br />';
echo"<center>";
echo'<div class= "blue">';
echo"<pr>";
echo"<br />";
echo"vous avez choisi ----> $table";
echo"<br />";echo"<br />";
echo"</pr>";
echo'</div>';
echo"</center>";
echo"<br />";
echo'<br />' ; echo'<br />'; echo'<br />';
}
//--------------------------------------------------------------------
//--Recherche sur Table et nom du champ de l'ID à ré indéxé ----------
//--------------------------------------------------------------------
if(!empty($table)) {

//echo $table;//c ok
// on cHerche dans la table le champ ID CLE PRIMAIRE DE LA TABLE
$res = mysqli_query($SQL,'DESCRIBE '.$table);

$id_table = '';
while($line = mysqli_fetch_array($res))
{
if(isset($line['Key']) && $line['Key'] == 'PRI'){
$id_table = $line['Field'];
break;
}
}
// Affichage du champ primaire :)
//echo $id_table;


//--------------------------------------------------------------------
// Verrouillage de la table pour empêcher une écriture simultanée
mysqli_query($SQL,"LOCK `$table` WRITE");

//--------------------------------------------------------------------

// Lecture de la table
$REQUETE = "SELECT $id_table FROM $table";
$result = mysqli_query($SQL,$REQUETE);
if(!$result)
{
echo("Error :" . mysqli_error($SQL));
exit();
}
// Détermine le nombre de lignes du jeu de résultats
$nbre_ligne = mysqli_num_rows($result);
echo"<br />"; echo"<br />"; echo"<br />";
echo"<center>";
printf("Le jeu de résultats a %d lignes.\n", $nbre_ligne);
echo"</center>";
echo"<br />"; echo"<br />"; echo"<br />";

//On parcourt la liste
$i=0;
while ($row = mysqli_fetch_row($result))
{
$liste_id = $row[0];
//insertion en BDD
$insert = mysqli_query($SQL,"UPDATE `$table` SET `$id_table` = $i+1 WHERE `$id_table` = $liste_id");
if(!$insert){
echo("Error :" . mysqli_error($SQL));
exit();
}
$i++;
}
//------------- Fermeture mysql---------------------------------------
// Déverrouillage de la table
mysqli_query($SQL,"UNLOCK `$table`");

//libere mémoire
mysqli_free_result($result);

//cloture de la base
mysqli_close($SQL);

// message pour signaler que la réindexation de la table de la boucle a été faite ou pas
echo '<div align="center" style="color:#0A0; font-weight:bold; ">
La réindexation de la table `'.$table.'` s\'est déroulée avec succès !
</div>';
?>
}
Commenter la réponse de claude77260

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.