Aide pour structure table mysql

Résolu
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   -  
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je souhaite réaliser, depuis longtemps, une BDD de recettes plutôt que créer une multitude de pages html qui me prend un temps fou. Voir mon site: http://www.abarka.eu à recettes. J'ai fait des tests sur mon compte de tests http:txiki.free.fr (tapas test).
1- quelque soit le lien cliqué, c'est toujours la même recette qui s'affiche
2- la photo ne s'affiche pas

J'ai utilisé le principe des prénoms, qui fonctionne à merveille.

Pour la photo, j'avais utilisé un champ BLOB mais ça m'affichait des hiéroglyphes. En plus ce n'est pas très indiqué de mettre des photos sur une table.
J'ai donc utilisé un champ TEXTE en y mettant l'url complète mais cela ne fonctionne pas non plus.

J'ai vu sur le forums, ici et ailleurs qu'il fallait simplement mettre le nom du fichier (albondigas.jpg) mais je ne comprends pas comment on va chercher ce fichier sur mon site.

Je ne sais pas comment joindre le fichier sql généré alors je le mets ci-dessous:
-- phpMyAdmin SQL Dump
-- version 3.3.2
-- https://www.phpmyadmin.net/
--
-- Serveur: 127.0.0.1
-- Généré le : Ven 19 Novembre 2010 à 19:31
-- Version du serveur: 5.1.45
-- Version de PHP: 5.3.2

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: 'txiki'
--

-- --------------------------------------------------------

--
-- Structure de la table 'tapas'
--

CREATE TABLE IF NOT EXISTS 'tapas' (
  'ID' int(4) NOT NULL,
  'Nom_Tapa' varchar(255) COLLATE latin1_general_ci NOT NULL,
  'Info_Tapa' text COLLATE latin1_general_ci NOT NULL,
  'Ingredients_Tapa' text COLLATE latin1_general_ci NOT NULL,
  'Photo_Tapa' text COLLATE latin1_general_ci NOT NULL,
  'Prep_Tapa' text COLLATE latin1_general_ci NOT NULL,
  'Auteur' text COLLATE latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Contenu de la table 'tapas'
--

INSERT INTO 'tapas' ('ID', 'Nom_Tapa', 'Info_Tapa', 'Ingredients_Tapa', 'Photo_Tapa', 'Prep_Tapa', 'Auteur') VALUES
(0, 'Albondigas', 'Les albondigas sont des boulettes de viande passées à la farine et cuites en ajoutant la sauce tomate à la fin de la cuisson. Elles peuvent être servies en portion ou équipées d''une pique chacune pour l''apéritif.<br />\r\nLe mot albondigas est dérivé de l''arabe <i>''al-bunduq''</i> signifiant "noisette". ', '- 200 gr de steak haché <br />\r\n- 200 gr chair à saucisse <br />\r\n- 1 oignon <br />\r\n- huile d''olive <br />\r\n- sauce tomate <br />\r\n- farine <br />\r\n- 1 oeuf <br />\r\n- persil <br />\r\n- sel, poivre', '\\Txiki\\recettes\\tapas\\illus_tapas\\albondigas.jpg', 'Mixer éventuellement la chair à saucisse si elle est hachée trop gros. Dans une grande <i>cazuela</i>, malaxer à la main la viande de b?uf et la chair à saucisse pour bien les mélanger. Faire chauffer l''huile d''olive dans une poêle et pocher l''oignon haché très fin. Ajouter le persil, l''oignon, l''?uf entier, saler et poivrer puis malaxer de nouveau l''ensemble.\r\nLaisser reposer 1 heure au réfrigérateur. <br />\r\nVerser la farine dans une assiette. Avec une cuillère à café, prendre une dose de viande et former une boulette dans le creux des mains puis fariner et les poser dans un plat pour les frire. Faire chauffer assez d''huile et quand elle chante y plonger les boulettes. Les retourner en secouant la poêle énergiquement.<br />\r\nRéserver. <br />\r\nMettre les boulettes au fur et à mesure de leur cuisson dans une cazuela. A la fin, ajouter la sauce tomate puis la mélanger à la viande avec une cuillère en bois.<br />\r\nDresser dans des cassolettes en terre (cazuelitas) avec une pique pour chacune et saupoudrer de persil haché.', 'recette de <i>Txiki</i>.');


Autre chose: je ne sais pas comment faire pour revenir à la ligne pour les ingrédients par exemple alors j'ai mis des balises <br /> dans la table. Je sais c'est pas très catholique....

Quelqu'un pourrait-il m'expliquer et/ou m'aider à créer la structure de la table "Tapas".
Merci infiniment d'avance car je ne maitrise pas les bases de données. Je suis autodidacte en ce qui concerne les BDD.





Le bonheur est la seule chose que l'on peut donner sans l'avoir.
A voir également:

28 réponses

olimix
 
a mon avis ya un problème avec tes quote et double quote

a la place de ca : ".$row["Ingredients"]."
mettre ca : ".$row['Ingredients']."

et ce pour toutes les resultats. :

".$row['NOM_COLONNE']."
0
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   521
 
Bonsoir olimix, encore moi,

Si on regarde le détail de la recette choisie sur http://txiki.free.fr tapas_test, je vois que seuls les lignes du script php contenant .$row[Nom_champ]. ne s'affichent pas.
Pourtant pour les tables des prénoms cela fonctionne. Alors qu'est-ce qui cloche ici ? Je n'ai plus les idées claires.
Tu a raison pour les apostrophes, je ne sais du tout pourquoi j'ai comme ça.
<?php
// On recupere la variable "id" correspondant à la recette choisie
// La manipulation de $id par la méthode $_GET est plus simple que celle de $_POST["id"]
$ID = $_GET['ID']; 

// On récupère les informations de connexion à la base 
require 'fonctions.php';

// connection à la DB
$link = mysql_pconnect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table

// requête SQL qui affiche les infos de la fiche correspondante au lien cliqué 
$link = '$link';
$url_photo ='$url_photo';
// On selectionne seulement la ligne qui correspond à la recette choisie sur la table Recettes ttriée sur la colonne Tapa
$select = "select Type, Nom, Info, Ingredients, Photo, Preparation, Auteur FROM recettes WHERE ID='$ID'";

$result = mysql_query($select) or die ('Erreur : '.mysql_error() );

// mysql_fetch_row genere un tableau correspondant a la ligne selectionnée de la BDD
// Les informations sont accessibles par $row["id"], $row["Nom"], $row["Info"] etc...
$row= mysql_fetch_array($result);  

// Affichage de la fiche dans un tablea&u dynamique (largeur du tableau fixée à 96 % sur la CSS)
	echo "<div id='fiche'><table margin='0' align='center' font size='100%'>\n";  
	// On affiche le nom de la recette sur 3 colonnes fusionnées
	echo "<tr><td align='center' colspan='3'><font-size='2'><font color='#000000'><strong>".$row['Nom']."</strong></font></font></td>"; 
	// affiche les intitulés des colonnes
	echo "<tr><td class='info_recette_T'><i><font color='#FF0000'>Info pratique / Astuce :</font></i><br /></td><td class='fiche_recette_T'>Ingrédients:<br /></td><td class='fiche_recette_T' width='35%'><td class='fiche_photo'></td></tr>\n"; 
	// On affiche une éventuelle Info + les ingrédients + la photo
	echo "<tr><td class='info_recette'>".$row['Info']."</td><td class='fiche_ingredient'>".$row['Ingredients']."</td><td class='fiche_photo'><img src='.$url_photo.' /></td></tr>\n"; 
	// On affiche une ligne de liens vers des pages sur le glossaire, Ustensiles, Trucs et astuces etc...
	echo "<tr><td colspan='3' align='center'><a href='index.php?page=Glossaire_AC&lang=Fr'>&nbsp;Glossaire&nbsp;</a>&nbsp;&nbsp;<a href='index.php?page=Ustensiles&lang=Fr'>&nbsp;Ustensiles&nbsp;</a>&nbsp;&nbsp;<a href='index.php?page=Trucs_A&lang=Fr'>&nbsp;Trucs & Astuces&nbsp;</a>&nbsp;&nbsp;<a href='index.php?page=Crustaces1&lang=Fr'>&nbsp;Info crustacés&nbsp;</a>&nbsp;&nbsp;<a href='index.php?page=Intro_produits&lang=Fr'>&nbsp;Info produits&nbsp;</a>&nbsp;&nbsp;<a href='index.php?page=Intro_labels&lang=Fr'>&nbsp;Info Produits AOC&nbsp;</a></td></tr>\n";
	// On affiche le mode de préparation
    echo "<tr><td class='fiche_recette' colspan='3'>".$row['Preparation']."</td></tr>\n"; 
	// On affiche l'auteur de la recette
	echo "<tr><td class='fiche_auteur' colspan='3' align='right'>".$row['Auteur']."</td></tr>\n";  
	echo "</table>\n</div>";
mysql_close();
?>
<br />
<table width="70%" align="center" border="0" cellspacing="0" cellpadding="0">
	<tr>
		<td>&nbsp;</td>
		<td width="20%" align="center">&nbsp;</td>
		<td width="20%" align="center"><a href="Javascript:history.go(-1)">&nbsp;Précédente&nbsp;</a></td>
	</tr>
</table>


Merci encore pour ta patience.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
olimix
 
il faut que dans l'url tu remplace id minuscule par majuscule

essaye ca : ca marche http://txiki.free.fr/index.php?page=Fiche_Recette&lang=Fr&ID=2

ou alors dans ton code tu remplace $ID = $_GET['ID'];
par $ID = $_GET['id'];


apres tu va avoir un problème d'encodage des caractères a régler et aussi les images a voir .
0
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   521
 
NIKEEEEEL ! ça MAAAAAAAAAAAAAAAAAARCHE !

Oh merci beaucoup.
Maintenant reste à regler l'affichage des images comme tu dis. Par contre pour l'encodage c'est moins sur. Je crois que ça dépend des serveurs. Mais je vais regarder la table de plus près.

Encore un grand bravo pour cette énorme patience. Merci !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0

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

Posez votre question
olimix
 
de rien
pour l'encodage il faut le spécifier dans le code de ta page

du genre :

<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>

après je peux pas t'aider plus sur l'encodage a choisir , j'ai jamais réussi a faire fonctionner l'encodage

pour l'image il te reste presque rien a faire

a la place de ca :

echo "<tr><td class='info_recette'>".$row['Info']."</td><td class='fiche_ingredient'>".$row['Ingredients']."</td><td class='fiche_photo'><img src='.$url_photo.' /></td></tr>\n";

tu récupère le nom de limage + extension

echo "<tr><td class='info_recette'>".$row['Info']."</td><td class='fiche_ingredient'>".$row['Ingredients']."</td><td class='fiche_photo'><img src='images/".$row['url']."'/></td></tr>\n";

oublis pas de bien placer tes images dans le dossier images et ca devrai le faire
0
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   521
 
Encore moi ! décidément !

J'ai tout essayé mais je ne vois pas l'erreur:
echo "<tr><td class='info_recette'>".$row['Info']."</td><td class='fiche_ingredient'>".$row['Ingredients']."</td><td class='fiche_photo'><img src='/Photos_Recettes/".$row['url']."' /></td></tr>\n";
Dans la table j'ai fini par mettre l'url ainsi: http://txiki/Photos_Recettes/albondigas.jpg. Ce champ est de type texte (je ne vois quel autre type je pourrais mettre).

Je me souviens que tu m'a dit qu'il fallait mettre l'extension mais pourquoi déclarer une variable spécifique si l'on prend tout grâce à l'id ?
En fait c'est là que je bloque, rien sur le net même sur le site du zéro que je trouve super pourtant !

ça me prend vraiment le choux et du coup je vais rester à mes 5 enregistrements dans la table car ce n'est pas la peine de continuer si je ne peux pas afficher les photos.

Je te dois déjà beaucoup et je comprendrais que tu ne veuille plus continuer. En tous cas merci de m'avoir aidé jusque là !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
olimix
 
ne t'arrêtes pas la il te reste presque rien a faire pour afficher l'image

dans ta bdd , dans la table recette tu met un champs nommé url ( de type texte )
ca tu la déjà fais

dans ce champs tu met (nom image + extention ) et non pas l'url totale
exemple : albondigas.jpg

a partir de la ca devrai fonctionner
il faut bien entendu que tu transfert les images sur ton ftp dans le dossier correspondant ( ici photos_Recettes)

apres tu affiche l'image :

echo "<tr><td class='info_recette'>".$row['Info']."</td><td class='fiche_ingredient'>".$row['Ingredients']."</td><td class='fiche_photo'><img src='/Photos_Recettes/".$row['url']."' /></td></tr>\n"

ce code est bon pas la peine de le changer
0
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   521
 
Ca MAAAAAAAAAAAAAAAAAAAAAAAARCHE !

Je ne sais pas comment te remercier pour ta patience.

Maintenant que le modèle est OK, je vais continuer. Et je cloture la discussion.

Merci encore !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0