Recherche de la clé primaire d'une table pour réindexer la table

Résolu
claude77260 Messages postés 38 Date d'inscription dimanche 8 août 2010 Statut Membre Dernière intervention 13 janvier 2019 - 8 mars 2016 à 15:02
claude77260 Messages postés 38 Date d'inscription dimanche 8 août 2010 Statut Membre Dernière intervention 13 janvier 2019 - 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

5 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
8 mars 2016 à 15:07
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 ?
0
claude77260 Messages postés 38 Date d'inscription dimanche 8 août 2010 Statut Membre Dernière intervention 13 janvier 2019
Modifié par claude77260 le 8/03/2016 à 15:28
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é
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.....
0
claude77260 Messages postés 38 Date d'inscription dimanche 8 août 2010 Statut Membre Dernière intervention 13 janvier 2019
8 mars 2016 à 15:40
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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 ?
0
claude77260 Messages postés 38 Date d'inscription dimanche 8 août 2010 Statut Membre Dernière intervention 13 janvier 2019
8 mars 2016 à 16:13
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
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
claude77260 Messages postés 38 Date d'inscription dimanche 8 août 2010 Statut Membre Dernière intervention 13 janvier 2019
Modifié par claude77260 le 8/03/2016 à 17:07
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>';
?>
}
0
Rejoignez-nous