IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Souci d'écriture PHP [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Souci d'écriture PHP
    J'ai un souci

    Le code que je souhaite changer est celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    			 
    if( stristr(strtoupper($sql), 'SELECT') == true ) 
    {
    $i = 0;
    // On construit notre $resArray
    while( $row = mysql_fetch_assoc($this->result) ) {			        
         resArray[$i] = $row;
         ++$i;
    }//end while
    // On libere la ressource
    mysql_free_result($this->result);
    return $resArray;
    Sachant qu'il peut y avoir plusieurs type de requêtes (describe, show et explain) j'aurai préféré une construction comme_suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    						
    {	// On teste le type de requête ('select','show','explain','describe')
    	$found = array_search( strtoupper($this->query) ,  array('select','show','explain','describe') ) ;
    
    	user_error("Found[".$found."]" , E_USER_NOTICE) ;
    
    	switch( $found )
    	{	case 'SELECT' 	:	$i = 0;
    				 		// On construit notre $resArray
    				 		while( $row = mysql_fetch_assoc($this->result) ) 
    						{	$resArray[$i++] = $row;
    				 		}	//end while
    						// On libere la ressource
    					       $this->mysqlFreeResult($this->result) ;
    					       return($resArray) ;
    					       break;
    													
    		case 'SHOW'		:	
    		case 'EXPLAIN'	:
    		case 'DESCRIBE'	:	// on informe juste que c'est bien passer
    			      							return true;
    		default			:	user_error("Request SQL string not found[". $this->query ."] !" , E_USER_ERROR) ;
    }//end switch
    	
    }
    Je ne parviens pas à avoir l'equivalent du code en gras du haut
    vers le code en gras du bas

    Actuellement, je tombe dans la clause DEFAULT du SWITCH !

    Si je comprends bien, le problème se situe au niveau de la longueur du string comparé !

    Quelqu'un peut'il me monter la syntaxe correcte TOUT EN PERSEVANT la structure decisionnelle sous forme de SWITCH..... parce que au coup par coup et X if en séquence, je peux le faire !
    Je ne suis pas opposé à une structure plus compliquée mais qui fonctionne, of course....

    Merci à tous
    Esteban

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    hello,

    $this->query est une chaine, pas un tableau. Donc array_search() n'est pas adapté à ce que tu veux faire.
    Il te faut une fonction pour chercher une occurrence d'une chaine dans une autre -> par exemple : preg_match().

    Ceci devrait répondre à ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match( '`SELECT|SHOW|DESCRIBE|EXPLAIN`i' , $this->query , $match );
    $found = $match[0];
    Pourfendeur de singletons en croisade

  3. #3
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut pre_match
    Merci pour cette solution, je ne connaissais pas l'instruction "pre_match"
    Bienvenue au club PHP de mes neurones
    Esteban

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Merci pour cette solution, je ne connaissais pas l'instruction "pre_match"
    preG_match() !

    La documentation qui va bien pour cette fonction.

    http://fr2.php.net/manual/fr/book.pcre.php

    Garde des aspros à portée de main, c'est nécessaire pour lire cette section
    Pourfendeur de singletons en croisade

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] souci de verification php
    Par naaim dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/02/2009, 17h44
  2. URLloader lit avant l'écriture PHP
    Par sylvainhugues dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 21/11/2008, 10h59
  3. Soucis Mathématique en php
    Par Luffy49 dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2008, 09h46
  4. Réponses: 1
    Dernier message: 25/09/2007, 09h18
  5. [POO] Souci POO avec php 4
    Par naunau dans le forum Langage
    Réponses: 7
    Dernier message: 12/12/2006, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo