PHP - récupérer une chaine de caractère dans une bdd

allellla Messages postés 19 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 15 avril 2011 - 8 févr. 2009 à 21:01
allellla Messages postés 19 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 15 avril 2011 - 12 févr. 2009 à 15:51
Bonjour,


Je me lance enfin pour mon 1er post !!!!


J'ai une table nomméé "fond" dans laquelle je stock toute les url des images uploader via un bouton parcourir,

Dans ce champs je stock toutes les images relative au book, et je sépare les url avec ce caractère : "|"

voilà un exemple de mon url :

    $image_nouveau_nom =$_POST['zone'].'_'.$image_nom_original.$image_extension;
    $image_url = $image_destination.'/'.$image_nouveau_nom;

ce qui me donne ce qui suit dans ma table sql :


../images/images_book/1_citron_lime_gr.jpg|../images/images_book/3_fraise.jpg|../images/images_book/5_essai_book_zone_5.jpg


Ce que je n'arrive pas à faire c'est réussir à extraire l'image
commençant pas 1 pour la zone 1 de ma page, ou 4 pour la zone 4 de ma
page, donc j'ai fais des explode, mais là je bloc je sais pas comment
faire ???


Mon code PHP :

// recupération des éléments de la bdd ---------------------------------------------------------------------------

    $requete_recuperation_image ='SELECT fond FROM '.$base_de_donnees.'.book limit 1;';    $insertion mysql_query($requete_recuperation_image) or die('La requete de récupération d\'image a échouée: '.mysql_errno().' '.mysql_error());
    while ($ligne = mysql_fetch_array($insertion)) // faire un tableau de ce qu'on vient de récupérer de la table
    {
    natsort($ligne);
   
    //ici tu recupere toutes les url de la base -----------------------------------------------------------------------

    echo ' ici toutes les url sur un champ | ';
    print_r($ligne);
    echo '

';
   
    //ici tu cree un tableau ou tu liste tes url ----------------------------------------------------------------------

    $recuperation_nom_image = explode('|',$ligne['fond']); // tu explode la ligne qui t'interesse
    echo ' ici les url | ';
    print_r($recuperation_nom_image);
    echo '

';
   
    $nom_image_recuperee = explode('/',$recuperation_nom_image[0]);
    echo ' tu recupere ce qui t interesse / ';
    print_r($nom_image_recuperee);
    echo '

';
    // et t'as plus qu'a faire ta redirection...
    //echo '';

    }
    mysql_close($connexion);
    $redirection_OK = 'index2.php?';

Merci par avance pour votre, et soyez indulgents sur les erreurs, je suis débutante !!!! hihihi

4 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
8 févr. 2009 à 21:51
Salut,

Pour commencer, stocker toutes tes url dans un seul champ séparées par un pipe est une mauvaise idée. Tu devrais te faire une table spécialement pour ceci. Suivant ce modèle tu peux récupérer les url sans avoir besoin d'un explode (merci les jointures en SQL).

En ce qui concerne la partie qui t'intéresse :
Récupérer le nom du fichier (virer tout le chemin qui est devant) à l'aide de basename(). Exemple :
$fichier = '../toto/titi/chose.jpg';
echo basename($fichier); // affiche la chaine 'chose.jpg'.

Une chaine caractère est plus ou moins considérés comme un tableau de caractère (c'est le bordel en php). L'exemple suivant affiche la première lettre de la chaine :
echo $fichier[0];

En assemblant le tout on obtient :

$fichier = echo basename($fichier);
$premiere_lettre = $fichier[0];

Ou en une seule ligne :
$premiere_lettre = substr(basename($fichier), 0, 1);

A partir de ceci ça devrais aller un peu mieu
0
allellla Messages postés 19 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 15 avril 2011
9 févr. 2009 à 16:32
Bonjour,

Merci pour la réponse,  en fait il y a tellement d'image à télécharger qu'il serait ingérable de créer un champs voir une table pour chaque image uploader.
sinon je vais me pencher sur  le basename que je ne connaissait pas, merci pour l'info
sinon je vais faire un explode avec le "|" (et supprimer le 2ème explode) et ensuite faire une conditionnelle avec un if, du style si le 23ème caractère est strictement égal au chiffre voulu (selon la zone qui va de 1 à 5), affiche moi ce que tu as récupérer !!! dans la théorie j'ai l'impression que ça pourrait marché donc j'essaierai et donnerai des nouvelles
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
9 févr. 2009 à 19:40
Salut,

"en fait il y a tellement d'image à télécharger qu'il serait ingérable
de créer un champs voir une table pour chaque image uploader."
Tu es dans l'erreur, c'est bien plus propre et efficace de créer une entrée par image dans une table spécifique que d'aller coller d'immenses chaînes de caractères dans un champ que tu va ensuite traiter a la main. Les bases de données sont conçues spécialement pour stocker des donnés, même si c'est en grand nombre.
Actuellement j'ai des tables contenant quelques milliers ou dizaines de milliers d'entrées, ce n'est pas grand chose.
0
allellla Messages postés 19 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 15 avril 2011
12 févr. 2009 à 15:51
Bonjour,

C'est vrai que je n'y connais pas gd chose, je me suis fait conseiller par mon professeur, peut être que dans un an j'aurais plus de recul pour savoir quelle méthode pour quel cas utilisé.
Pour l'instant j'écoute tout les conseils que l'on me donne, et essai de faire avec mes connaissance lol.

en tout cas merci
0
Rejoignez-nous