Créer, modifier une tables dans ma base de données [Résolu]

Signaler
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Messages postés
29559
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 septembre 2020
-
Bonjour,
voici ce que je veux faire :
quand l'utilisateur crée une matière alors :
1. on vérifie que la table moyenne existe dans la base de données.
2. si elle n'existe pas on la crée (la table moyenne)
3. mais si elle existe déjà, on ajoute simplement le nom de la matière postée
dans la table moyenne.

voici l'erreur affichée :
la recherche de la table dan sa bdd na pas abouti

voici mon code :
<?php
if (isset($_POST["valider"])) {
$groupe=trim($_POST["groupe"]);
$matiere=trim($_POST["matiere"]);
$coeff=trim($_POST["coeff"]);
$code=trim($_POST["code"]);
$sql = "SELECT code FROM matieres WHERE code='$code'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on compte le nombre de résultats
$res = mysql_num_rows($req);

if($res!=0) // l'url existe déjà, on affiche un message d'erreur
{
$msg = 'Désolé, mais ce nom existe déjà dans notre base.';
echo '<script>alert(\' '.$msg.' \');</script>';
}
else // L'url n'existe pas, on insère les informations du formulaire dans la table
{
if (empty($code)) {

$msg="<font color=red>Veuillez saisir le nom !!!!!!!!</font>";
}
else {
$sql="INSERT INTO matieres(id,groupe,matiere,coeff,code) VALUES('','".$groupe."','".$matiere."','".$coeff."','".$code."')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
//creation de la table moyenne
//Vérification de l'existance de la tables
$q = mysql_query("SHOW TABLES FROM bdd_ecole WHERE TABLES= moyenne ")or die('la recherche de la table dan sl bdd na pa abouti');
while ($data = mysql_fetch_row($q)) {
//echo $data[0];
$r = $data[0];
if($r){
//ALTER TABLE 'table' ADD 'nom_champ' VARCHAR( 20 ) NOT NULL AFTER 'champs_precedant' ;
$resultat = mysql_query("ALTER moyenne table ADD ".$matiere." VARCHAR(150) NOT NULL ");
;
}else{
// création de vos tables
$resultat = mysql_query("CREATE TABLE moyenne(id int(11) NOT NULL auto_increment,".$matiere." varchar(150) NOT NULL default '',PRIMARY KEY (id)
)
");

if (!$resultat)
{
print("erreurs lors de la création des tables. Error: ".mysql_error())."<p>";
}
$msg = $matiere.'***ajoutée';
echo '<script>alert(\' '.$msg.' \');</script>';
}
}
}
}
}

2 réponses

Messages postés
29559
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 septembre 2020
337
..... Dis voir..... tu as testé ta requête directement dans ta BDD ??

SHOW TABLES FROM bdd_ecole WHERE TABLES= moyenne 

Je pense (non.. je suis sûr..) que NON.. sinon tu aurais vite vu qu'elle n'était pas bonne....que le WHERE ne peut pas s'utiliser pour ce genre de requête....

NB: Sachant que ce n'est pas la première fois que je te fais cette remarque ( suggestion...critique... appelles ça comme tu veux... ^^ )

Donc.. la "bonne" syntaxe est :

 $strBddName = "bdd_ecole";
 $strTableName = " moyenne";
 $sql="SHOW TABLES FROM ".$strBddName."
  like '".$strTableName."' ";
 $resultat = mysql_query($sql)
   or die(' Erreur : '.$sql); 

// Et puis pour savoir si ta table existe..
// pas besoin de boucle... 
// juste vérifier le nombre de lignes retournées.
if(mysql_num_rows($resultat )==1){
  echo "<br> La table ".$strTableName ." existe ";

}else{

  echo "<br>La table ".$strTableName ." n'existe pas dans la Base ".$strBddName ;
}     
 


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020

merci @jordane45 ça bien marché . mais je t 'assure que j'ai testé ta requête directement dans ta BDD mais c'est juste que je savais pas comment m'y prendre . sinon effectivement ça ma donné une erreur la bas.
rassure toi j'apprends beaucoup avec toi et merci une fois de plus encore.
Messages postés
29559
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 septembre 2020
337
Pour tes prochaines questions.. si tu rencontres un souci du même genre..
=> Si tu l'as testé dans la BDD :
1 - Tu ne nous donnes pas tout le code de ta page mais Juste la requête ( ça suffit pour trouver le problème)
2 - Tu nous indiques le message d'erreur rencontré.

@++