Bonjour,
Je me suis lancé il y a peu à la création de site php/sql et c'est pas encore évident ^^
J'ai deux tables : une 'group' et une 'lien'
La table 'group' est composée d'un champ 'id' et un 'nom'
La table 'lien' est composée d'un champ 'id', 'nom', 'adresse', 'description' et 'groupe'
Mes problèmes :
1) J'aurais voulu faire une liaison pour que le champ 'lien.groupe' doive renvoyer à un champ de 'group.nom' (donc une foreign key si je ne m'abuse). Donc ma commande :
ALTER TABLE lien
ADD CONSTRAINT fk_groupe
FOREIGN KEY ( groupe ) REFERENCES group(nom)
Réponse :
#1064 - Erreur de syntaxe près de 'group(nom)' à la ligne 3
Pourtant ça me semble correct. Une idée ?
2) J'ai fait une procédure php pour rajouter un lien dans la table :
else if($cat =="addlink"){
$sql = mysql_query('SELECT nom FROM `group` ORDER BY id ASC') or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo'<br><br><center><form name="form1" method="post" action="?cat=addlink2">
<table border="0" cellpadding="2" cellspacing="2">
<tr>
<td>Nom</td>
<td><input name="nom" type="text" id="nom"></td>
</tr>
<tr>
<td>Adresse</td>
<td><input name="adresse" type="text" id="adresse" value="http://"></td>
</tr>
<tr>
<td>Description</td>
<td><input name="description" type="text" id="description"></td>
</tr>
<tr>
<td>Groupe</td>
// liste déroulante des groupes
<td><select name="groupe">';
while(list($groupe) = mysql_fetch_array($sql)){
echo'<option value='.$groupe.'>'.$groupe.'</option>';
}
echo'</select></td>
</tr>
<tr>
</tr>
</table>
<input type="submit" name="Submit" value="Envoyer">
</form></center>';
} pour le forumlaire. Suivit d'une validation
else if($cat =="addlink2"){
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$description = $_POST['description'];
$groupe = $_POST['groupe'];
$req = mysql_query("INSERT INTO lien (`id`,`nom`,`adresse`,`description`,`groupe`) VALUES('','$nom','$adresse','$description','$groupe')");
//rajout du http si pas
$req = mysql_query('UPDATE lien SET adresse = concat("http://",adresse) WHERE SUBSTR(adresse,1,7)<>"http://"');
echo'<center>Lien ajoute avec succes<br><br>';
echo'<a href="?cat=list">Liste des liens</a></center>';
} Tout marche impec sauf quand le nom du groupe est en
plusieurs mots, il ne prend que le premier dans la base sql ("un autre groupe" devient "un'")
3) Je veux pouvoir supprimer un groupe de la table. Ce qui donne en php :
else if($cat == "delgr"){
$sql = mysql_query('SELECT id, nom FROM `group` ORDER BY id ASC') or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo'<br><br><center><form name="form1" method="post" action="?cat=delgr2&id='.$_POST['idgroupe'].'">
<table border="0" cellpadding="2" cellspacing="2">
<tr>
<td>Sélectionnez le groupe à supprimer</td>
</tr>
<tr>
<td>Groupe</td>
<td><select name="idgroupe">';
while(list($id, $groupe) = mysql_fetch_array($sql)){
echo'<option value="'.$id.'">'.$id.' - '.$groupe.'</option>';
}
echo'</select></td>
</tr>
<tr>
</tr>
</table>
<input type="submit" name="Submit" value="Envoyer">
</form>
<br><br><a href="?cat=list">Annuler</a></center>';
}
Pour la liste des liens. Puis la validation :
else if($cat == "delgr2"){
$id = $_GET['id'];
$sql = 'DELETE FROM `group` WHERE group.id='.$id.'';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo'Lien supprime<br><br>';
echo'<a href="?cat=list">Liste des liens</a>';
} Bien entendu il ne supprime pas le groupe (sinon il y aurait pas de problème). J'ai remarqué qu'il n'enregistrait pas l'id du groupe sélectionné car n'apparaissait pas dans l'adresse de la page (.com/?cat=degr2&id= devrait se finir par un nombre)
Bon et c'est déjà pas mal du tout si j'ai une réponse à ça :p
Un grand merci d'avance
Configuration: Linux
Firefox 2.0.0.14